ETH Price: $3,354.98 (-0.37%)

Token

This is Karma (KARMA)
 

Overview

Max Total Supply

420,690,000,000,000,000,000,000,000,000,000 KARMA

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
842,982,989,197,393,885 KARMA

Value
$0.00
0x23f6c0729b41699e54f2bbe1b6fce26efce3ea1d
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:
KARMA

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-16
*/

//https://x.com/thisiskarmaeth?s=21
//https://karmaeth.vip/
//https://t.me/thisiskarmaeth

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.18;

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract KARMA is Context, IERC20, Ownable {
    string private _name = "This is Karma";
    string private _symbol = "KARMA";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 420_690_000_000_000 * 1e18;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;

    uint256 public minTokenToSwap = (_totalSupply * 5) / (10000); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = (_totalSupply * 3) / (100); // this is the max wallet holding limit
    uint256 public maxTxnLimit = (_totalSupply * 100) / (100); // this is the max transaction limit
    uint256 public percentDivider = 100;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus; // enable by default
    bool public trading; // once enable can't be disable afterwards

    IDexRouter public dexRouter; // router declaration

    address public dexPair; // pair address declaration
    address public marketingWallet; // marketing address declaration
    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);

    uint256 public marketingFeeOnBuying = 0;

    uint256 public marketingFeeOnSelling = 50;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = address(0x7bC1dA4b893A5A68e8DC5968cfb27399c1eFbA66);

        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        isExcludedFromFee[address(dexRouter)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;

        dexPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        isExcludedFromMaxHolding[dexPair] = true;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;

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

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - 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) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function includeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxHolding[account] = value;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        minTokenToSwap = _amount * 1e18;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        maxHoldLimit = _amount * 1e18;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        maxTxnLimit = _amount * 1e18;
    }

    function setBuyFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnBuying = _marketingFee;
    }

    function setSellFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnSelling = _marketingFee;
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function updateAddresses(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function enableTrading() external onlyOwner {
        require(!trading, ": already enabled");

        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnBuying) / (percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnSelling) / (percentDivider);
        return fee;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount > 0, "Amount must be greater than zero");
        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, " max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    ": trading is disable"
                );
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                (balanceOf(to) + amount) <= maxHoldLimit,
                ": max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fees, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + (amount);

        emit Transfer(sender, address(this), amount);
    }

    // to withdarw ETH from contract
    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);
    }

    // to withdraw ERC20 tokens from contract
    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }

    function distributeAndLiquify(address from, address to) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minTokenToSwap);

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minTokenToSwap);
            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(marketingWallet).transfer(ethForMarketing);
        }
    }
}

// Library for swapping on Dex
library Utils {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","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"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600d81526020017f54686973206973204b61726d6100000000000000000000000000000000000000815250600190816200004a919062000cbe565b506040518060400160405280600581526020017f4b41524d410000000000000000000000000000000000000000000000000000008152506002908162000091919062000cbe565b506012600360006101000a81548160ff021916908360ff1602179055506d14bddab3e51a57cff87a500000006004556127106005600454620000d4919062000dd4565b620000e0919062000e4e565b600a5560646003600454620000f6919062000dd4565b62000102919062000e4e565b600b5560648060045462000117919062000dd4565b62000123919062000e4e565b600c556064600d55600060125560326013553480156200014257600080fd5b506200015362000a1360201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600454600560006200022462000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737bc1da4b893a5a68e8dc5968cfb27399c1efba66601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050e919062000ef0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000598573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005be919062000ef0565b6040518363ffffffff1660e01b8152600401620005dd92919062000f33565b6020604051808303816000875af1158015620005fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000623919062000ef0565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620006f362000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620007b262000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006200087162000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009a462000a1b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000a05919062000f71565b60405180910390a362000f8e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ac657607f821691505b60208210810362000adc5762000adb62000a7e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b07565b62000b52868362000b07565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b9f62000b9962000b938462000b6a565b62000b74565b62000b6a565b9050919050565b6000819050919050565b62000bbb8362000b7e565b62000bd362000bca8262000ba6565b84845462000b14565b825550505050565b600090565b62000bea62000bdb565b62000bf781848462000bb0565b505050565b5b8181101562000c1f5762000c1360008262000be0565b60018101905062000bfd565b5050565b601f82111562000c6e5762000c388162000ae2565b62000c438462000af7565b8101602085101562000c53578190505b62000c6b62000c628562000af7565b83018262000bfc565b50505b505050565b600082821c905092915050565b600062000c936000198460080262000c73565b1980831691505092915050565b600062000cae838362000c80565b9150826002028217905092915050565b62000cc98262000a44565b67ffffffffffffffff81111562000ce55762000ce462000a4f565b5b62000cf1825462000aad565b62000cfe82828562000c23565b600060209050601f83116001811462000d36576000841562000d21578287015190505b62000d2d858262000ca0565b86555062000d9d565b601f19841662000d468662000ae2565b60005b8281101562000d705784890151825560018201915060208501945060208101905062000d49565b8683101562000d90578489015162000d8c601f89168262000c80565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000de18262000b6a565b915062000dee8362000b6a565b925082820262000dfe8162000b6a565b9150828204841483151762000e185762000e1762000da5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e5b8262000b6a565b915062000e688362000b6a565b92508262000e7b5762000e7a62000e1f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000eb88262000e8b565b9050919050565b62000eca8162000eab565b811462000ed657600080fd5b50565b60008151905062000eea8162000ebf565b92915050565b60006020828403121562000f095762000f0862000e86565b5b600062000f198482850162000ed9565b91505092915050565b62000f2d8162000eab565b82525050565b600060408201905062000f4a600083018562000f22565b62000f59602083018462000f22565b9392505050565b62000f6b8162000b6a565b82525050565b600060208201905062000f88600083018462000f60565b92915050565b6141068062000f9e6000396000f3fe60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063b0bc2a2d116100c1578063f097ea1a1161007a578063f097ea1a14610a01578063f14210a614610a2a578063f242ab4114610a53578063f2fde38b14610a7e578063f4b3dbc314610aa7578063fe6f1b0514610ae457610293565b8063b0bc2a2d146108df578063bf56b37114610908578063dd62ed3e14610933578063ea5b9e8514610970578063ec44acf214610999578063ed421429146109c457610293565b80639e281a98116101135780639e281a98146107c1578063a2b8a947146107ea578063a457c2d714610813578063a643c1a014610850578063a7c29b4014610879578063a9059cbb146108a257610293565b80638da5cb5b146106b1578063950eb5d5146106dc57806395d89b411461070557806399b102b5146107305780639a36dfa11461076d5780639b6a27501461079857610293565b8063679a3c59116101fe5780637c6a9a9c116101b75780637c6a9a9c146105b3578063844af78e146105de57806384ea21bc146106095780638756aabd14610646578063879dd3c51461066f5780638a8c523c1461069a57610293565b8063679a3c59146104b5578063681aa362146104de57806370a0823114610509578063715018a61461054657806375f0a8741461055d57806379777b4e1461058857610293565b80631884f1e6116102505780631884f1e61461037f57806323b872dd146103aa5780632d129390146103e7578063313ce56714610410578063395093511461043b5780635342acb41461047857610293565b806306fdde03146102985780630758d924146102c3578063095ea7b3146102ee5780630a2d140c1461032b57806318160ddd1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0f565b6040516102ba9190613327565b60405180910390f35b3480156102cf57600080fd5b506102d8610ba1565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061345c565b610bc7565b60405161032291906134b7565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906134fe565b610be5565b005b34801561036057600080fd5b50610369610c97565b604051610376919061353a565b60405180910390f35b34801561038b57600080fd5b50610394610ca1565b6040516103a1919061353a565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613555565b610ca7565b6040516103de91906134b7565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906135a8565b610d5f565b005b34801561041c57600080fd5b50610425610e4f565b6040516104329190613604565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d919061345c565b610e66565b60405161046f91906134b7565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061361f565b610f12565b6040516104ac91906134b7565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d7919061361f565b610f32565b005b3480156104ea57600080fd5b506104f3611011565b604051610500919061353a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061361f565b611017565b60405161053d919061353a565b60405180910390f35b34801561055257600080fd5b5061055b611060565b005b34801561056957600080fd5b506105726111b3565b60405161057f919061365b565b60405180910390f35b34801561059457600080fd5b5061059d6111d9565b6040516105aa91906134b7565b60405180910390f35b3480156105bf57600080fd5b506105c86111ec565b6040516105d5919061353a565b60405180910390f35b3480156105ea57600080fd5b506105f36111f2565b604051610600919061353a565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061361f565b6111f8565b60405161063d91906134b7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613676565b611218565b005b34801561067b57600080fd5b506106846112ca565b60405161069191906134b7565b60405180910390f35b3480156106a657600080fd5b506106af6112dd565b005b3480156106bd57600080fd5b506106c661141c565b6040516106d3919061365b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613676565b611445565b005b34801561071157600080fd5b5061071a6114e4565b6040516107279190613327565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061361f565b611576565b60405161076491906134b7565b60405180910390f35b34801561077957600080fd5b50610782611596565b60405161078f919061353a565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613676565b61159c565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906136e1565b61164e565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613676565b611822565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061345c565b6118c1565b60405161084791906134b7565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061361f565b61196d565b005b34801561088557600080fd5b506108a0600480360381019061089b91906135a8565b611a46565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061345c565b611b36565b6040516108d691906134b7565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906134fe565b611b54565b005b34801561091457600080fd5b5061091d611c06565b60405161092a919061353a565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613721565b611c0c565b604051610967919061353a565b60405180910390f35b34801561097c57600080fd5b50610997600480360381019061099291906135a8565b611c93565b005b3480156109a557600080fd5b506109ae611d83565b6040516109bb91906134b7565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613676565b611d96565b6040516109f8919061353a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613676565b611dbf565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613676565b611e71565b005b348015610a5f57600080fd5b50610a68611f93565b604051610a75919061365b565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa0919061361f565b611fb9565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190613676565b61217a565b604051610adb919061353a565b60405180910390f35b348015610af057600080fd5b50610af96121a3565b604051610b06919061353a565b60405180910390f35b606060018054610b1e90613790565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90613790565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bdb610bd46121a9565b84846121b1565b6001905092915050565b610bed6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061380d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610cb484848461237a565b610d5484610cc06121a9565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d0a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f919061385c565b6121b1565b600190509392505050565b610d676121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb9061380d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610f08610e736121a9565b848460066000610e816121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f039190613890565b6121b1565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610f3a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe9061380d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561100d573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110686121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec9061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b6112206121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061380d565b60405180910390fd5b670de0b6b3a7640000816112c191906138c4565b600b8190555050565b600f60019054906101000a900460ff1681565b6112e56121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061380d565b60405180910390fd5b600f60029054906101000a900460ff16156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990613952565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061380d565b60405180910390fd5b8060128190555050565b6060600280546114f390613790565b80601f016020809104026020016040519081016040528092919081815260200182805461151f90613790565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6115a46121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061380d565b60405180910390fd5b670de0b6b3a76400008161164591906138c4565b600c8190555050565b6116566121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061380d565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161171d919061365b565b602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613987565b101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a00565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117da929190613a20565b6020604051808303816000875af11580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613a5e565b505050565b61182a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae9061380d565b60405180910390fd5b8060138190555050565b60006119636118ce6121a9565b8484600660006118dc6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195e919061385c565b6121b1565b6001905092915050565b6119756121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061380d565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a4e6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061380d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4a611b436121a9565b848461237a565b6001905092915050565b611b5c6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be09061380d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c9b6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061380d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611daa91906138c4565b611db49190613aba565b905080915050919050565b611dc76121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9061380d565b60405180910390fd5b670de0b6b3a764000081611e6891906138c4565b600a8190555050565b611e796121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061380d565b60405180910390fd5b80471015611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a00565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8f573d6000803e3d6000fd5b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fc16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d546013548461218e91906138c4565b6121989190613aba565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221790613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690613c35565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161236d919061353a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613d0d565b60405180910390fd5b6000811161249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613d79565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268a57600c54811115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090613de5565b60405180910390fd5b600f60029054906101000a900460ff16612689578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561264957508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613e51565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600b54816126e884611017565b6126f29190613890565b1115612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90613ebd565b60405180910390fd5b5b61273e8383612819565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127e55750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127fd5750600f60019054906101000a900460ff16155b1561280757600090505b61281384848484612a16565b50505050565b600061282430611017565b90506000600a54821015905080801561288b5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600f60009054906101000a900460ff165b801561293457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156129325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612a105761296830600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546121b1565b612996600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612fba565b60004790506000811115612a0e57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a0c573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612a705750805b15612c2357600080612a8184611d96565b91508184612a8f919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a9190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c0a919061353a565b60405180910390a3612c1c86836131a0565b5050612fb4565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612c7d5750805b15612e31576000612c8d8361217a565b905060008184612c9d919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cea919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d789190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e18919061353a565b60405180910390a3612e2a86836131a0565b5050612fb3565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7c919061385c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0a9190613890565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa919061353a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612fdc57612fdb613edd565b5b60405190808252806020026020018201604052801561300a5781602001602082028036833780820191505090505b509050308160008151811061302257613021613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb9190613f50565b816001815181106130df576130de613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426131489190613890565b6040518663ffffffff1660e01b8152600401613168959493929190614076565b600060405180830381600087803b15801561318257600080fd5b505af1158015613196573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb9190613890565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161328b919061353a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061338e61338961338484613349565b613369565b613349565b9050919050565b60006133a082613373565b9050919050565b60006133b282613395565b9050919050565b6133c2816133a7565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b600080fd5b60006133f382613349565b9050919050565b613403816133e8565b811461340e57600080fd5b50565b600081359050613420816133fa565b92915050565b6000819050919050565b61343981613426565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b60008060408385031215613473576134726133e3565b5b600061348185828601613411565b925050602061349285828601613447565b9150509250929050565b60008115159050919050565b6134b18161349c565b82525050565b60006020820190506134cc60008301846134a8565b92915050565b6134db8161349c565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b600060208284031215613514576135136133e3565b5b6000613522848285016134e9565b91505092915050565b61353481613426565b82525050565b600060208201905061354f600083018461352b565b92915050565b60008060006060848603121561356e5761356d6133e3565b5b600061357c86828701613411565b935050602061358d86828701613411565b925050604061359e86828701613447565b9150509250925092565b600080604083850312156135bf576135be6133e3565b5b60006135cd85828601613411565b92505060206135de858286016134e9565b9150509250929050565b600060ff82169050919050565b6135fe816135e8565b82525050565b600060208201905061361960008301846135f5565b92915050565b600060208284031215613635576136346133e3565b5b600061364384828501613411565b91505092915050565b613655816133e8565b82525050565b6000602082019050613670600083018461364c565b92915050565b60006020828403121561368c5761368b6133e3565b5b600061369a84828501613447565b91505092915050565b60006136ae826133e8565b9050919050565b6136be816136a3565b81146136c957600080fd5b50565b6000813590506136db816136b5565b92915050565b600080604083850312156136f8576136f76133e3565b5b6000613706858286016136cc565b925050602061371785828601613447565b9150509250929050565b60008060408385031215613738576137376133e3565b5b600061374685828601613411565b925050602061375785828601613411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137a857607f821691505b6020821081036137bb576137ba613761565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137f76020836132a2565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061386782613426565b915061387283613426565b925082820390508181111561388a5761388961382d565b5b92915050565b600061389b82613426565b91506138a683613426565b92508282019050808211156138be576138bd61382d565b5b92915050565b60006138cf82613426565b91506138da83613426565b92508282026138e881613426565b915082820484148315176138ff576138fe61382d565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b600061393c6011836132a2565b915061394782613906565b602082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b60008151905061398181613430565b92915050565b60006020828403121561399d5761399c6133e3565b5b60006139ab84828501613972565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006139ea600e836132a2565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000604082019050613a35600083018561364c565b613a42602083018461352b565b9392505050565b600081519050613a58816134d2565b92915050565b600060208284031215613a7457613a736133e3565b5b6000613a8284828501613a49565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac582613426565b9150613ad083613426565b925082613ae057613adf613a8b565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b476026836132a2565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613bb3601e836132a2565b9150613bbe82613b7d565b602082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000613c1f601b836132a2565b9150613c2a82613be9565b602082019050919050565b60006020820190508181036000830152613c4e81613c12565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c8b601e836132a2565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf7601c836132a2565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613d636020836132a2565b9150613d6e82613d2d565b602082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b6000613dcf6016836132a2565b9150613dda82613d99565b602082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613e3b6014836132a2565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b6000613ea76018836132a2565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4a816133fa565b92915050565b600060208284031215613f6657613f656133e3565b5b6000613f7484828501613f3b565b91505092915050565b6000819050919050565b6000613fa2613f9d613f9884613f7d565b613369565b613426565b9050919050565b613fb281613f87565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fed816133e8565b82525050565b6000613fff8383613fe4565b60208301905092915050565b6000602082019050919050565b600061402382613fb8565b61402d8185613fc3565b935061403883613fd4565b8060005b838110156140695781516140508882613ff3565b975061405b8361400b565b92505060018101905061403c565b5085935050505092915050565b600060a08201905061408b600083018861352b565b6140986020830187613fa9565b81810360408301526140aa8186614018565b90506140b9606083018561364c565b6140c6608083018461352b565b969550505050505056fea26469706673582212206faab234f3a127dbc99ef81990be15effb211a40fbc9d99167c2ba14a719706764736f6c63430008120033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063b0bc2a2d116100c1578063f097ea1a1161007a578063f097ea1a14610a01578063f14210a614610a2a578063f242ab4114610a53578063f2fde38b14610a7e578063f4b3dbc314610aa7578063fe6f1b0514610ae457610293565b8063b0bc2a2d146108df578063bf56b37114610908578063dd62ed3e14610933578063ea5b9e8514610970578063ec44acf214610999578063ed421429146109c457610293565b80639e281a98116101135780639e281a98146107c1578063a2b8a947146107ea578063a457c2d714610813578063a643c1a014610850578063a7c29b4014610879578063a9059cbb146108a257610293565b80638da5cb5b146106b1578063950eb5d5146106dc57806395d89b411461070557806399b102b5146107305780639a36dfa11461076d5780639b6a27501461079857610293565b8063679a3c59116101fe5780637c6a9a9c116101b75780637c6a9a9c146105b3578063844af78e146105de57806384ea21bc146106095780638756aabd14610646578063879dd3c51461066f5780638a8c523c1461069a57610293565b8063679a3c59146104b5578063681aa362146104de57806370a0823114610509578063715018a61461054657806375f0a8741461055d57806379777b4e1461058857610293565b80631884f1e6116102505780631884f1e61461037f57806323b872dd146103aa5780632d129390146103e7578063313ce56714610410578063395093511461043b5780635342acb41461047857610293565b806306fdde03146102985780630758d924146102c3578063095ea7b3146102ee5780630a2d140c1461032b57806318160ddd1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0f565b6040516102ba9190613327565b60405180910390f35b3480156102cf57600080fd5b506102d8610ba1565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061345c565b610bc7565b60405161032291906134b7565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906134fe565b610be5565b005b34801561036057600080fd5b50610369610c97565b604051610376919061353a565b60405180910390f35b34801561038b57600080fd5b50610394610ca1565b6040516103a1919061353a565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613555565b610ca7565b6040516103de91906134b7565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906135a8565b610d5f565b005b34801561041c57600080fd5b50610425610e4f565b6040516104329190613604565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d919061345c565b610e66565b60405161046f91906134b7565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061361f565b610f12565b6040516104ac91906134b7565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d7919061361f565b610f32565b005b3480156104ea57600080fd5b506104f3611011565b604051610500919061353a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061361f565b611017565b60405161053d919061353a565b60405180910390f35b34801561055257600080fd5b5061055b611060565b005b34801561056957600080fd5b506105726111b3565b60405161057f919061365b565b60405180910390f35b34801561059457600080fd5b5061059d6111d9565b6040516105aa91906134b7565b60405180910390f35b3480156105bf57600080fd5b506105c86111ec565b6040516105d5919061353a565b60405180910390f35b3480156105ea57600080fd5b506105f36111f2565b604051610600919061353a565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061361f565b6111f8565b60405161063d91906134b7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613676565b611218565b005b34801561067b57600080fd5b506106846112ca565b60405161069191906134b7565b60405180910390f35b3480156106a657600080fd5b506106af6112dd565b005b3480156106bd57600080fd5b506106c661141c565b6040516106d3919061365b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613676565b611445565b005b34801561071157600080fd5b5061071a6114e4565b6040516107279190613327565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061361f565b611576565b60405161076491906134b7565b60405180910390f35b34801561077957600080fd5b50610782611596565b60405161078f919061353a565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613676565b61159c565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906136e1565b61164e565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613676565b611822565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061345c565b6118c1565b60405161084791906134b7565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061361f565b61196d565b005b34801561088557600080fd5b506108a0600480360381019061089b91906135a8565b611a46565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061345c565b611b36565b6040516108d691906134b7565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906134fe565b611b54565b005b34801561091457600080fd5b5061091d611c06565b60405161092a919061353a565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613721565b611c0c565b604051610967919061353a565b60405180910390f35b34801561097c57600080fd5b50610997600480360381019061099291906135a8565b611c93565b005b3480156109a557600080fd5b506109ae611d83565b6040516109bb91906134b7565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613676565b611d96565b6040516109f8919061353a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613676565b611dbf565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613676565b611e71565b005b348015610a5f57600080fd5b50610a68611f93565b604051610a75919061365b565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa0919061361f565b611fb9565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190613676565b61217a565b604051610adb919061353a565b60405180910390f35b348015610af057600080fd5b50610af96121a3565b604051610b06919061353a565b60405180910390f35b606060018054610b1e90613790565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90613790565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bdb610bd46121a9565b84846121b1565b6001905092915050565b610bed6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061380d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610cb484848461237a565b610d5484610cc06121a9565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d0a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f919061385c565b6121b1565b600190509392505050565b610d676121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb9061380d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610f08610e736121a9565b848460066000610e816121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f039190613890565b6121b1565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610f3a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe9061380d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561100d573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110686121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec9061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b6112206121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061380d565b60405180910390fd5b670de0b6b3a7640000816112c191906138c4565b600b8190555050565b600f60019054906101000a900460ff1681565b6112e56121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061380d565b60405180910390fd5b600f60029054906101000a900460ff16156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990613952565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061380d565b60405180910390fd5b8060128190555050565b6060600280546114f390613790565b80601f016020809104026020016040519081016040528092919081815260200182805461151f90613790565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6115a46121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061380d565b60405180910390fd5b670de0b6b3a76400008161164591906138c4565b600c8190555050565b6116566121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061380d565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161171d919061365b565b602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613987565b101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a00565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117da929190613a20565b6020604051808303816000875af11580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613a5e565b505050565b61182a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae9061380d565b60405180910390fd5b8060138190555050565b60006119636118ce6121a9565b8484600660006118dc6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195e919061385c565b6121b1565b6001905092915050565b6119756121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061380d565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a4e6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061380d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4a611b436121a9565b848461237a565b6001905092915050565b611b5c6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be09061380d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c9b6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061380d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611daa91906138c4565b611db49190613aba565b905080915050919050565b611dc76121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9061380d565b60405180910390fd5b670de0b6b3a764000081611e6891906138c4565b600a8190555050565b611e796121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061380d565b60405180910390fd5b80471015611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a00565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8f573d6000803e3d6000fd5b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fc16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d546013548461218e91906138c4565b6121989190613aba565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221790613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690613c35565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161236d919061353a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613d0d565b60405180910390fd5b6000811161249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613d79565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268a57600c54811115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090613de5565b60405180910390fd5b600f60029054906101000a900460ff16612689578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561264957508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613e51565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600b54816126e884611017565b6126f29190613890565b1115612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90613ebd565b60405180910390fd5b5b61273e8383612819565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127e55750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127fd5750600f60019054906101000a900460ff16155b1561280757600090505b61281384848484612a16565b50505050565b600061282430611017565b90506000600a54821015905080801561288b5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600f60009054906101000a900460ff165b801561293457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156129325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612a105761296830600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546121b1565b612996600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612fba565b60004790506000811115612a0e57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a0c573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612a705750805b15612c2357600080612a8184611d96565b91508184612a8f919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a9190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c0a919061353a565b60405180910390a3612c1c86836131a0565b5050612fb4565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612c7d5750805b15612e31576000612c8d8361217a565b905060008184612c9d919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cea919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d789190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e18919061353a565b60405180910390a3612e2a86836131a0565b5050612fb3565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7c919061385c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0a9190613890565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa919061353a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612fdc57612fdb613edd565b5b60405190808252806020026020018201604052801561300a5781602001602082028036833780820191505090505b509050308160008151811061302257613021613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb9190613f50565b816001815181106130df576130de613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426131489190613890565b6040518663ffffffff1660e01b8152600401613168959493929190614076565b600060405180830381600087803b15801561318257600080fd5b505af1158015613196573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb9190613890565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161328b919061353a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061338e61338961338484613349565b613369565b613349565b9050919050565b60006133a082613373565b9050919050565b60006133b282613395565b9050919050565b6133c2816133a7565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b600080fd5b60006133f382613349565b9050919050565b613403816133e8565b811461340e57600080fd5b50565b600081359050613420816133fa565b92915050565b6000819050919050565b61343981613426565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b60008060408385031215613473576134726133e3565b5b600061348185828601613411565b925050602061349285828601613447565b9150509250929050565b60008115159050919050565b6134b18161349c565b82525050565b60006020820190506134cc60008301846134a8565b92915050565b6134db8161349c565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b600060208284031215613514576135136133e3565b5b6000613522848285016134e9565b91505092915050565b61353481613426565b82525050565b600060208201905061354f600083018461352b565b92915050565b60008060006060848603121561356e5761356d6133e3565b5b600061357c86828701613411565b935050602061358d86828701613411565b925050604061359e86828701613447565b9150509250925092565b600080604083850312156135bf576135be6133e3565b5b60006135cd85828601613411565b92505060206135de858286016134e9565b9150509250929050565b600060ff82169050919050565b6135fe816135e8565b82525050565b600060208201905061361960008301846135f5565b92915050565b600060208284031215613635576136346133e3565b5b600061364384828501613411565b91505092915050565b613655816133e8565b82525050565b6000602082019050613670600083018461364c565b92915050565b60006020828403121561368c5761368b6133e3565b5b600061369a84828501613447565b91505092915050565b60006136ae826133e8565b9050919050565b6136be816136a3565b81146136c957600080fd5b50565b6000813590506136db816136b5565b92915050565b600080604083850312156136f8576136f76133e3565b5b6000613706858286016136cc565b925050602061371785828601613447565b9150509250929050565b60008060408385031215613738576137376133e3565b5b600061374685828601613411565b925050602061375785828601613411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137a857607f821691505b6020821081036137bb576137ba613761565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137f76020836132a2565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061386782613426565b915061387283613426565b925082820390508181111561388a5761388961382d565b5b92915050565b600061389b82613426565b91506138a683613426565b92508282019050808211156138be576138bd61382d565b5b92915050565b60006138cf82613426565b91506138da83613426565b92508282026138e881613426565b915082820484148315176138ff576138fe61382d565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b600061393c6011836132a2565b915061394782613906565b602082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b60008151905061398181613430565b92915050565b60006020828403121561399d5761399c6133e3565b5b60006139ab84828501613972565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006139ea600e836132a2565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000604082019050613a35600083018561364c565b613a42602083018461352b565b9392505050565b600081519050613a58816134d2565b92915050565b600060208284031215613a7457613a736133e3565b5b6000613a8284828501613a49565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac582613426565b9150613ad083613426565b925082613ae057613adf613a8b565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b476026836132a2565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613bb3601e836132a2565b9150613bbe82613b7d565b602082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000613c1f601b836132a2565b9150613c2a82613be9565b602082019050919050565b60006020820190508181036000830152613c4e81613c12565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c8b601e836132a2565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf7601c836132a2565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613d636020836132a2565b9150613d6e82613d2d565b602082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b6000613dcf6016836132a2565b9150613dda82613d99565b602082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613e3b6014836132a2565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b6000613ea76018836132a2565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4a816133fa565b92915050565b600060208284031215613f6657613f656133e3565b5b6000613f7484828501613f3b565b91505092915050565b6000819050919050565b6000613fa2613f9d613f9884613f7d565b613369565b613426565b9050919050565b613fb281613f87565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fed816133e8565b82525050565b6000613fff8383613fe4565b60208301905092915050565b6000602082019050919050565b600061402382613fb8565b61402d8185613fc3565b935061403883613fd4565b8060005b838110156140695781516140508882613ff3565b975061405b8361400b565b92505060018101905061403c565b5085935050505092915050565b600060a08201905061408b600083018861352b565b6140986020830187613fa9565b81810360408301526140aa8186614018565b90506140b9606083018561364c565b6140c6608083018461352b565b969550505050505056fea26469706673582212206faab234f3a127dbc99ef81990be15effb211a40fbc9d99167c2ba14a719706764736f6c63430008120033

Deployed Bytecode Sourcemap

3233:11853:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6193:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4388:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7081:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9379:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6470:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3776:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7275:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8581:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6379:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7633:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3596:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9987:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3994:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6578:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2780:157;;;;;;;;;;;;;:::i;:::-;;4503:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4171:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4678:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4726:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3711:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8883:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4267:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9740:239;;;;;;;;;;;;;:::i;:::-;;2566:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9115:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6284:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3652:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3891:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9000:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13996:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9246:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7933:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9609:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8408:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6705:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9502:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4137:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6905:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8241:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4317:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10124:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8762:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13758:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4446:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2945:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10308:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4095:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6193:83;6230:13;6263:5;6256:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6193:83;:::o;4388:27::-;;;;;;;;;;;;;:::o;7081:186::-;7181:4;7198:39;7207:12;:10;:12::i;:::-;7221:7;7230:6;7198:8;:39::i;:::-;7255:4;7248:11;;7081:186;;;;:::o;9379:115::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9480:6:::1;9451:26;;:35;;;;;;;;;;;;;;;;;;9379:115:::0;:::o;6470:100::-;6523:7;6550:12;;6543:19;;6470:100;:::o;3776:60::-;;;;:::o;7275:350::-;7407:4;7424:36;7434:6;7442:9;7453:6;7424:9;:36::i;:::-;7471:124;7494:6;7515:12;:10;:12::i;:::-;7578:6;7542:11;:19;7554:6;7542:19;;;;;;;;;;;;;;;:33;7562:12;:10;:12::i;:::-;7542:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;7471:8;:124::i;:::-;7613:4;7606:11;;7275:350;;;;;:::o;8581:173::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8741:5:::1;8705:24;:33;8730:7;8705:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;8581:173:::0;;:::o;6379:83::-;6420:5;6445:9;;;;;;;;;;;6438:16;;6379:83;:::o;7633:292::-;7746:4;7763:132;7786:12;:10;:12::i;:::-;7813:7;7873:10;7835:11;:25;7847:12;:10;:12::i;:::-;7835:25;;;;;;;;;;;;;;;:34;7861:7;7835:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;7763:8;:132::i;:::-;7913:4;7906:11;;7633:292;;;;:::o;3596:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;9987:129::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10066:9:::1;10058:27;;:50;10086:21;10058:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9987:129:::0;:::o;3994:57::-;;;;:::o;6578:119::-;6644:7;6671:9;:18;6681:7;6671:18;;;;;;;;;;;;;;;;6664:25;;6578:119;;;:::o;2780:157::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2887:1:::1;2850:40;;2871:6;::::0;::::1;;;;;;;;2850:40;;;;;;;;;;;;2926:1;2901:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2780:157::o:0;4503:30::-;;;;;;;;;;;;;:::o;4171:38::-;;;;;;;;;;;;;:::o;4678:39::-;;;;:::o;4726:41::-;;;;:::o;3711:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;8883:109::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8980:4:::1;8970:7;:14;;;;:::i;:::-;8955:12;:29;;;;8883:109:::0;:::o;4267:22::-;;;;;;;;;;;;;:::o;9740:239::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9804:7:::1;;;;;;;;;;;9803:8;9795:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9856:4;9846:7;;:14;;;;;;;;;;;;;;;;;;9884:4;9871:10;;:17;;;;;;;;;;;;;;;;;;9928:4;9899:26;;:33;;;;;;;;;;;;;;;;;;9956:15;9943:10;:28;;;;9740:239::o:0;2566:79::-;2604:7;2631:6;;;;;;;;;;;2624:13;;2566:79;:::o;9115:123::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9217:13:::1;9194:20;:36;;;;9115:123:::0;:::o;6284:87::-;6323:13;6356:7;6349:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6284:87;:::o;3652:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;3891:56::-;;;;:::o;9000:107::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9095:4:::1;9085:7;:14;;;;:::i;:::-;9071:11;:28;;;;9000:107:::0;:::o;13996:209::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14124:7:::1;14089:6;:16;;;14114:4;14089:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;14081:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14161:6;:15;;;14177:10;14189:7;14161:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13996:209:::0;;:::o;9246:125::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9350:13:::1;9326:21;:37;;;;9246:125:::0;:::o;7933:300::-;8051:4;8068:135;8091:12;:10;:12::i;:::-;8118:7;8177:15;8140:11;:25;8152:12;:10;:12::i;:::-;8140:25;;;;;;;;;;;;;;;:34;8166:7;8140:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;8068:8;:135::i;:::-;8221:4;8214:11;;7933:300;;;;:::o;9609:123::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9708:16:::1;9690:15;;:34;;;;;;;;;;;;;;;;;;9609:123:::0;:::o;8408:165::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8560:5:::1;8528:20;:29;8549:7;8528:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8408:165:::0;;:::o;6705:192::-;6808:4;6825:42;6835:12;:10;:12::i;:::-;6849:9;6860:6;6825:9;:42::i;:::-;6885:4;6878:11;;6705:192;;;;:::o;9502:99::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9587:6:::1;9574:10;;:19;;;;;;;;;;;;;;;;;;9502:99:::0;:::o;4137:25::-;;;;:::o;6905:168::-;7011:7;7038:11;:18;7050:5;7038:18;;;;;;;;;;;;;;;:27;7057:7;7038:27;;;;;;;;;;;;;;;;7031:34;;6905:168;;;;:::o;8241:159::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8387:5:::1;8358:17;:26;8376:7;8358:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8241:159:::0;;:::o;4317:19::-;;;;;;;;;;;;;:::o;10124:176::-;10187:7;10207:11;10256:14;;10231:20;;10222:6;:29;;;;:::i;:::-;10221:50;;;;:::i;:::-;10207:64;;10289:3;10282:10;;;10124:176;;;:::o;8762:113::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8863:4:::1;8853:7;:14;;;;:::i;:::-;8836;:31;;;;8762:113:::0;:::o;13758:183::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13859:7:::1;13834:21;:32;;13826:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13904:10;13896:28;;:37;13925:7;13896:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13758:183:::0;:::o;4446:22::-;;;;;;;;;;;;;:::o;2945:281::-;2703:12;:10;:12::i;:::-;2693:22;;:6;;;;;;;;;;:22;;;2685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3068:1:::1;3048:22;;:8;:22;;::::0;3026:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3181:8;3152:38;;3173:6;::::0;::::1;;;;;;;;3152:38;;;;;;;;;;;;3210:8;3201:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2945:281:::0;:::o;10308:178::-;10372:7;10392:11;10442:14;;10416:21;;10407:6;:30;;;;:::i;:::-;10406:51;;;;:::i;:::-;10392:65;;10475:3;10468:10;;;10308:178;;;:::o;4095:35::-;;;;:::o;1902:115::-;1955:15;1998:10;1983:26;;1902:115;:::o;10494:324::-;10604:1;10587:19;;:5;:19;;;10579:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10679:1;10660:21;;:7;:21;;;10652:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10756:6;10726:11;:18;10738:5;10726:18;;;;;;;;;;;;;;;:27;10745:7;10726:27;;;;;;;;;;;;;;;:36;;;;10794:7;10778:32;;10787:5;10778:32;;;10803:6;10778:32;;;;;;:::i;:::-;;;;;;;;10494:324;;;:::o;10826:1364::-;10930:1;10914:18;;:4;:18;;;10906:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11000:1;10986:16;;:2;:16;;;10978:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11063:1;11054:6;:10;11046:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11117:20;:26;11138:4;11117:26;;;;;;;;;;;;;;;;;;;;;;;;;11116:27;:56;;;;;11148:20;:24;11169:2;11148:24;;;;;;;;;;;;;;;;;;;;;;;;;11147:25;11116:56;11112:380;;;11207:11;;11197:6;:21;;11189:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11311:7;;;;;;;;;;;11306:175;;11380:4;11369:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;11399:2;11388:13;;:7;;;;;;;;;;;:13;;;;11369:32;11339:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11306:175;11112:380;11509:24;:28;11534:2;11509:28;;;;;;;;;;;;;;;;;;;;;;;;;11504:188;;11608:12;;11597:6;11581:13;11591:2;11581:9;:13::i;:::-;:22;;;;:::i;:::-;11580:40;;11554:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11504:188;11733:30;11754:4;11760:2;11733:20;:30::i;:::-;11837:12;11852:4;11837:19;;11956:17;:23;11974:4;11956:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11983:17;:21;12001:2;11983:21;;;;;;;;;;;;;;;;;;;;;;;;;11956:48;:63;;;;12009:10;;;;;;;;;;;12008:11;11956:63;11952:111;;;12046:5;12036:15;;11952:111;12141:41;12156:4;12162:2;12166:6;12174:7;12141:14;:41::i;:::-;10895:1295;10826:1364;;;:::o;14213:870::-;14288:28;14319:24;14337:4;14319:9;:24::i;:::-;14288:55;;14356:15;14398:14;;14374:20;:38;;14356:56;;14443:10;:42;;;;;14478:7;;;;;;;;;;;14470:15;;:4;:15;;;;14443:42;:85;;;;;14502:26;;;;;;;;;;;14443:85;:143;;;;;14563:4;14547:21;;:4;:21;;;:38;;;;;14578:7;;;;;;;;;;;14572:13;;:2;:13;;;14547:38;14545:41;14443:143;14425:651;;;14661:59;14678:4;14693:9;;;;;;;;;;;14705:14;;14661:8;:59::i;:::-;14787:58;14818:9;;;;;;;;;;;14830:14;;14787:22;:58::i;:::-;14860:23;14886:21;14860:47;;14994:1;14976:15;:19;14972:92;;;15022:15;;;;;;;;;;;15014:33;;:50;15048:15;15014:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14972:92;14613:463;14425:651;14277:806;;14213:870;;:::o;12272:1232::-;12438:6;12427:17;;:7;;;;;;;;;;;:17;;;:28;;;;;12448:7;12427:28;12423:1074;;;12472:14;12501:23;12548:24;12565:6;12548:16;:24::i;:::-;12539:33;;12614:6;12605;:15;;;;:::i;:::-;12587:33;;12677:6;12657:9;:17;12667:6;12657:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;12637:9;:17;12647:6;12637:17;;;;;;;;;;;;;;;:46;;;;12744:15;12721:9;:20;12731:9;12721:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;12698:9;:20;12708:9;12698:20;;;;;;;;;;;;;;;:61;;;;12796:9;12779:44;;12788:6;12779:44;;;12807:15;12779:44;;;;;;:::i;:::-;;;;;;;;12840:28;12853:6;12861;12840:12;:28::i;:::-;12457:423;;12423:1074;;;12901:9;12890:20;;:7;;;;;;;;;;;:20;;;:31;;;;;12914:7;12890:31;12886:611;;;12938:14;12955:25;12973:6;12955:17;:25::i;:::-;12938:42;;12995:23;13030:6;13021;:15;;;;:::i;:::-;12995:41;;13091:6;13071:9;:17;13081:6;13071:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13051:9;:17;13061:6;13051:17;;;;;;;;;;;;;;;:46;;;;13158:15;13135:9;:20;13145:9;13135:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;13112:9;:20;13122:9;13112:20;;;;;;;;;;;;;;;:61;;;;13210:9;13193:44;;13202:6;13193:44;;;13221:15;13193:44;;;;;;:::i;:::-;;;;;;;;13254:28;13267:6;13275;13254:12;:28::i;:::-;12923:371;;12886:611;;;13355:6;13335:9;:17;13345:6;13335:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13315:9;:17;13325:6;13315:17;;;;;;;;;;;;;;;:46;;;;13423:6;13399:9;:20;13409:9;13399:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;13376:9;:20;13386:9;13376:20;;;;;;;;;;;;;;;:54;;;;13467:9;13450:35;;13459:6;13450:35;;;13478:6;13450:35;;;;;;:::i;:::-;;;;;;;;12886:611;12423:1074;12272:1232;;;;:::o;15143:614::-;15258:20;15292:13;15258:48;;15375:21;15413:1;15399:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15375:40;;15444:4;15426;15431:1;15426:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15470:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15460:4;15465:1;15460:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;15525:9;:60;;;15600:11;15626:1;15670:4;15697;15735:3;15717:15;:21;;;;:::i;:::-;15525:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15247:510;;15143:614;;:::o;13512:200::-;13640:6;13612:9;:24;13630:4;13612:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;13585:9;:24;13603:4;13585:24;;;;;;;;;;;;;;;:62;;;;13690:4;13665:39;;13674:6;13665:39;;;13697:6;13665:39;;;;;;:::i;:::-;;;;;;;;13512:200;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:116::-;4449:21;4464:5;4449:21;:::i;:::-;4442:5;4439:32;4429:60;;4485:1;4482;4475:12;4429:60;4379:116;:::o;4501:133::-;4544:5;4582:6;4569:20;4560:29;;4598:30;4622:5;4598:30;:::i;:::-;4501:133;;;;:::o;4640:323::-;4696:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:50;4938:7;4929:6;4918:9;4914:22;4896:50;:::i;:::-;4886:60;;4842:114;4640:323;;;;:::o;4969:118::-;5056:24;5074:5;5056:24;:::i;:::-;5051:3;5044:37;4969:118;;:::o;5093:222::-;5186:4;5224:2;5213:9;5209:18;5201:26;;5237:71;5305:1;5294:9;5290:17;5281:6;5237:71;:::i;:::-;5093:222;;;;:::o;5321:619::-;5398:6;5406;5414;5463:2;5451:9;5442:7;5438:23;5434:32;5431:119;;;5469:79;;:::i;:::-;5431:119;5589:1;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;:::i;:::-;5604:63;;5560:117;5716:2;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5687:118;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5321:619;;;;;:::o;5946:468::-;6011:6;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:50;6389:7;6380:6;6369:9;6365:22;6347:50;:::i;:::-;6337:60;;6292:115;5946:468;;;;;:::o;6420:86::-;6455:7;6495:4;6488:5;6484:16;6473:27;;6420:86;;;:::o;6512:112::-;6595:22;6611:5;6595:22;:::i;:::-;6590:3;6583:35;6512:112;;:::o;6630:214::-;6719:4;6757:2;6746:9;6742:18;6734:26;;6770:67;6834:1;6823:9;6819:17;6810:6;6770:67;:::i;:::-;6630:214;;;;:::o;6850:329::-;6909:6;6958:2;6946:9;6937:7;6933:23;6929:32;6926:119;;;6964:79;;:::i;:::-;6926:119;7084:1;7109:53;7154:7;7145:6;7134:9;7130:22;7109:53;:::i;:::-;7099:63;;7055:117;6850:329;;;;:::o;7185:118::-;7272:24;7290:5;7272:24;:::i;:::-;7267:3;7260:37;7185:118;;:::o;7309:222::-;7402:4;7440:2;7429:9;7425:18;7417:26;;7453:71;7521:1;7510:9;7506:17;7497:6;7453:71;:::i;:::-;7309:222;;;;:::o;7537:329::-;7596:6;7645:2;7633:9;7624:7;7620:23;7616:32;7613:119;;;7651:79;;:::i;:::-;7613:119;7771:1;7796:53;7841:7;7832:6;7821:9;7817:22;7796:53;:::i;:::-;7786:63;;7742:117;7537:329;;;;:::o;7872:109::-;7922:7;7951:24;7969:5;7951:24;:::i;:::-;7940:35;;7872:109;;;:::o;7987:148::-;8073:37;8104:5;8073:37;:::i;:::-;8066:5;8063:48;8053:76;;8125:1;8122;8115:12;8053:76;7987:148;:::o;8141:165::-;8200:5;8238:6;8225:20;8216:29;;8254:46;8294:5;8254:46;:::i;:::-;8141:165;;;;:::o;8312:500::-;8393:6;8401;8450:2;8438:9;8429:7;8425:23;8421:32;8418:119;;;8456:79;;:::i;:::-;8418:119;8576:1;8601:66;8659:7;8650:6;8639:9;8635:22;8601:66;:::i;:::-;8591:76;;8547:130;8716:2;8742:53;8787:7;8778:6;8767:9;8763:22;8742:53;:::i;:::-;8732:63;;8687:118;8312:500;;;;;:::o;8818:474::-;8886:6;8894;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;9196:2;9222:53;9267:7;9258:6;9247:9;9243:22;9222:53;:::i;:::-;9212:63;;9167:118;8818:474;;;;;:::o;9298:180::-;9346:77;9343:1;9336:88;9443:4;9440:1;9433:15;9467:4;9464:1;9457:15;9484:320;9528:6;9565:1;9559:4;9555:12;9545:22;;9612:1;9606:4;9602:12;9633:18;9623:81;;9689:4;9681:6;9677:17;9667:27;;9623:81;9751:2;9743:6;9740:14;9720:18;9717:38;9714:84;;9770:18;;:::i;:::-;9714:84;9535:269;9484:320;;;:::o;9810:182::-;9950:34;9946:1;9938:6;9934:14;9927:58;9810:182;:::o;9998:366::-;10140:3;10161:67;10225:2;10220:3;10161:67;:::i;:::-;10154:74;;10237:93;10326:3;10237:93;:::i;:::-;10355:2;10350:3;10346:12;10339:19;;9998:366;;;:::o;10370:419::-;10536:4;10574:2;10563:9;10559:18;10551:26;;10623:9;10617:4;10613:20;10609:1;10598:9;10594:17;10587:47;10651:131;10777:4;10651:131;:::i;:::-;10643:139;;10370:419;;;:::o;10795:180::-;10843:77;10840:1;10833:88;10940:4;10937:1;10930:15;10964:4;10961:1;10954:15;10981:194;11021:4;11041:20;11059:1;11041:20;:::i;:::-;11036:25;;11075:20;11093:1;11075:20;:::i;:::-;11070:25;;11119:1;11116;11112:9;11104:17;;11143:1;11137:4;11134:11;11131:37;;;11148:18;;:::i;:::-;11131:37;10981:194;;;;:::o;11181:191::-;11221:3;11240:20;11258:1;11240:20;:::i;:::-;11235:25;;11274:20;11292:1;11274:20;:::i;:::-;11269:25;;11317:1;11314;11310:9;11303:16;;11338:3;11335:1;11332:10;11329:36;;;11345:18;;:::i;:::-;11329:36;11181:191;;;;:::o;11378:410::-;11418:7;11441:20;11459:1;11441:20;:::i;:::-;11436:25;;11475:20;11493:1;11475:20;:::i;:::-;11470:25;;11530:1;11527;11523:9;11552:30;11570:11;11552:30;:::i;:::-;11541:41;;11731:1;11722:7;11718:15;11715:1;11712:22;11692:1;11685:9;11665:83;11642:139;;11761:18;;:::i;:::-;11642:139;11426:362;11378:410;;;;:::o;11794:167::-;11934:19;11930:1;11922:6;11918:14;11911:43;11794:167;:::o;11967:366::-;12109:3;12130:67;12194:2;12189:3;12130:67;:::i;:::-;12123:74;;12206:93;12295:3;12206:93;:::i;:::-;12324:2;12319:3;12315:12;12308:19;;11967:366;;;:::o;12339:419::-;12505:4;12543:2;12532:9;12528:18;12520:26;;12592:9;12586:4;12582:20;12578:1;12567:9;12563:17;12556:47;12620:131;12746:4;12620:131;:::i;:::-;12612:139;;12339:419;;;:::o;12764:143::-;12821:5;12852:6;12846:13;12837:22;;12868:33;12895:5;12868:33;:::i;:::-;12764:143;;;;:::o;12913:351::-;12983:6;13032:2;13020:9;13011:7;13007:23;13003:32;13000:119;;;13038:79;;:::i;:::-;13000:119;13158:1;13183:64;13239:7;13230:6;13219:9;13215:22;13183:64;:::i;:::-;13173:74;;13129:128;12913:351;;;;:::o;13270:164::-;13410:16;13406:1;13398:6;13394:14;13387:40;13270:164;:::o;13440:366::-;13582:3;13603:67;13667:2;13662:3;13603:67;:::i;:::-;13596:74;;13679:93;13768:3;13679:93;:::i;:::-;13797:2;13792:3;13788:12;13781:19;;13440:366;;;:::o;13812:419::-;13978:4;14016:2;14005:9;14001:18;13993:26;;14065:9;14059:4;14055:20;14051:1;14040:9;14036:17;14029:47;14093:131;14219:4;14093:131;:::i;:::-;14085:139;;13812:419;;;:::o;14237:332::-;14358:4;14396:2;14385:9;14381:18;14373:26;;14409:71;14477:1;14466:9;14462:17;14453:6;14409:71;:::i;:::-;14490:72;14558:2;14547:9;14543:18;14534:6;14490:72;:::i;:::-;14237:332;;;;;:::o;14575:137::-;14629:5;14660:6;14654:13;14645:22;;14676:30;14700:5;14676:30;:::i;:::-;14575:137;;;;:::o;14718:345::-;14785:6;14834:2;14822:9;14813:7;14809:23;14805:32;14802:119;;;14840:79;;:::i;:::-;14802:119;14960:1;14985:61;15038:7;15029:6;15018:9;15014:22;14985:61;:::i;:::-;14975:71;;14931:125;14718:345;;;;:::o;15069:180::-;15117:77;15114:1;15107:88;15214:4;15211:1;15204:15;15238:4;15235:1;15228:15;15255:185;15295:1;15312:20;15330:1;15312:20;:::i;:::-;15307:25;;15346:20;15364:1;15346:20;:::i;:::-;15341:25;;15385:1;15375:35;;15390:18;;:::i;:::-;15375:35;15432:1;15429;15425:9;15420:14;;15255:185;;;;:::o;15446:225::-;15586:34;15582:1;15574:6;15570:14;15563:58;15655:8;15650:2;15642:6;15638:15;15631:33;15446:225;:::o;15677:366::-;15819:3;15840:67;15904:2;15899:3;15840:67;:::i;:::-;15833:74;;15916:93;16005:3;15916:93;:::i;:::-;16034:2;16029:3;16025:12;16018:19;;15677:366;;;:::o;16049:419::-;16215:4;16253:2;16242:9;16238:18;16230:26;;16302:9;16296:4;16292:20;16288:1;16277:9;16273:17;16266:47;16330:131;16456:4;16330:131;:::i;:::-;16322:139;;16049:419;;;:::o;16474:180::-;16614:32;16610:1;16602:6;16598:14;16591:56;16474:180;:::o;16660:366::-;16802:3;16823:67;16887:2;16882:3;16823:67;:::i;:::-;16816:74;;16899:93;16988:3;16899:93;:::i;:::-;17017:2;17012:3;17008:12;17001:19;;16660:366;;;:::o;17032:419::-;17198:4;17236:2;17225:9;17221:18;17213:26;;17285:9;17279:4;17275:20;17271:1;17260:9;17256:17;17249:47;17313:131;17439:4;17313:131;:::i;:::-;17305:139;;17032:419;;;:::o;17457:177::-;17597:29;17593:1;17585:6;17581:14;17574:53;17457:177;:::o;17640:366::-;17782:3;17803:67;17867:2;17862:3;17803:67;:::i;:::-;17796:74;;17879:93;17968:3;17879:93;:::i;:::-;17997:2;17992:3;17988:12;17981:19;;17640:366;;;:::o;18012:419::-;18178:4;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18012:419;;;:::o;18437:180::-;18577:32;18573:1;18565:6;18561:14;18554:56;18437:180;:::o;18623:366::-;18765:3;18786:67;18850:2;18845:3;18786:67;:::i;:::-;18779:74;;18862:93;18951:3;18862:93;:::i;:::-;18980:2;18975:3;18971:12;18964:19;;18623:366;;;:::o;18995:419::-;19161:4;19199:2;19188:9;19184:18;19176:26;;19248:9;19242:4;19238:20;19234:1;19223:9;19219:17;19212:47;19276:131;19402:4;19276:131;:::i;:::-;19268:139;;18995:419;;;:::o;19420:178::-;19560:30;19556:1;19548:6;19544:14;19537:54;19420:178;:::o;19604:366::-;19746:3;19767:67;19831:2;19826:3;19767:67;:::i;:::-;19760:74;;19843:93;19932:3;19843:93;:::i;:::-;19961:2;19956:3;19952:12;19945:19;;19604:366;;;:::o;19976:419::-;20142:4;20180:2;20169:9;20165:18;20157:26;;20229:9;20223:4;20219:20;20215:1;20204:9;20200:17;20193:47;20257:131;20383:4;20257:131;:::i;:::-;20249:139;;19976:419;;;:::o;20401:182::-;20541:34;20537:1;20529:6;20525:14;20518:58;20401:182;:::o;20589:366::-;20731:3;20752:67;20816:2;20811:3;20752:67;:::i;:::-;20745:74;;20828:93;20917:3;20828:93;:::i;:::-;20946:2;20941:3;20937:12;20930:19;;20589:366;;;:::o;20961:419::-;21127:4;21165:2;21154:9;21150:18;21142:26;;21214:9;21208:4;21204:20;21200:1;21189:9;21185:17;21178:47;21242:131;21368:4;21242:131;:::i;:::-;21234:139;;20961:419;;;:::o;21386:172::-;21526:24;21522:1;21514:6;21510:14;21503:48;21386:172;:::o;21564:366::-;21706:3;21727:67;21791:2;21786:3;21727:67;:::i;:::-;21720:74;;21803:93;21892:3;21803:93;:::i;:::-;21921:2;21916:3;21912:12;21905:19;;21564:366;;;:::o;21936:419::-;22102:4;22140:2;22129:9;22125:18;22117:26;;22189:9;22183:4;22179:20;22175:1;22164:9;22160:17;22153:47;22217:131;22343:4;22217:131;:::i;:::-;22209:139;;21936:419;;;:::o;22361:170::-;22501:22;22497:1;22489:6;22485:14;22478:46;22361:170;:::o;22537:366::-;22679:3;22700:67;22764:2;22759:3;22700:67;:::i;:::-;22693:74;;22776:93;22865:3;22776:93;:::i;:::-;22894:2;22889:3;22885:12;22878:19;;22537:366;;;:::o;22909:419::-;23075:4;23113:2;23102:9;23098:18;23090:26;;23162:9;23156:4;23152:20;23148:1;23137:9;23133:17;23126:47;23190:131;23316:4;23190:131;:::i;:::-;23182:139;;22909:419;;;:::o;23334:174::-;23474:26;23470:1;23462:6;23458:14;23451:50;23334:174;:::o;23514:366::-;23656:3;23677:67;23741:2;23736:3;23677:67;:::i;:::-;23670:74;;23753:93;23842:3;23753:93;:::i;:::-;23871:2;23866:3;23862:12;23855:19;;23514:366;;;:::o;23886:419::-;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:180::-;24359:77;24356:1;24349:88;24456:4;24453:1;24446:15;24480:4;24477:1;24470:15;24497:180;24545:77;24542:1;24535:88;24642:4;24639:1;24632:15;24666:4;24663:1;24656:15;24683:143;24740:5;24771:6;24765:13;24756:22;;24787:33;24814:5;24787:33;:::i;:::-;24683:143;;;;:::o;24832:351::-;24902:6;24951:2;24939:9;24930:7;24926:23;24922:32;24919:119;;;24957:79;;:::i;:::-;24919:119;25077:1;25102:64;25158:7;25149:6;25138:9;25134:22;25102:64;:::i;:::-;25092:74;;25048:128;24832:351;;;;:::o;25189:85::-;25234:7;25263:5;25252:16;;25189:85;;;:::o;25280:158::-;25338:9;25371:61;25389:42;25398:32;25424:5;25398:32;:::i;:::-;25389:42;:::i;:::-;25371:61;:::i;:::-;25358:74;;25280:158;;;:::o;25444:147::-;25539:45;25578:5;25539:45;:::i;:::-;25534:3;25527:58;25444:147;;:::o;25597:114::-;25664:6;25698:5;25692:12;25682:22;;25597:114;;;:::o;25717:184::-;25816:11;25850:6;25845:3;25838:19;25890:4;25885:3;25881:14;25866:29;;25717:184;;;;:::o;25907:132::-;25974:4;25997:3;25989:11;;26027:4;26022:3;26018:14;26010:22;;25907:132;;;:::o;26045:108::-;26122:24;26140:5;26122:24;:::i;:::-;26117:3;26110:37;26045:108;;:::o;26159:179::-;26228:10;26249:46;26291:3;26283:6;26249:46;:::i;:::-;26327:4;26322:3;26318:14;26304:28;;26159:179;;;;:::o;26344:113::-;26414:4;26446;26441:3;26437:14;26429:22;;26344:113;;;:::o;26493:732::-;26612:3;26641:54;26689:5;26641:54;:::i;:::-;26711:86;26790:6;26785:3;26711:86;:::i;:::-;26704:93;;26821:56;26871:5;26821:56;:::i;:::-;26900:7;26931:1;26916:284;26941:6;26938:1;26935:13;26916:284;;;27017:6;27011:13;27044:63;27103:3;27088:13;27044:63;:::i;:::-;27037:70;;27130:60;27183:6;27130:60;:::i;:::-;27120:70;;26976:224;26963:1;26960;26956:9;26951:14;;26916:284;;;26920:14;27216:3;27209:10;;26617:608;;;26493:732;;;;:::o;27231:831::-;27494:4;27532:3;27521:9;27517:19;27509:27;;27546:71;27614:1;27603:9;27599:17;27590:6;27546:71;:::i;:::-;27627:80;27703:2;27692:9;27688:18;27679:6;27627:80;:::i;:::-;27754:9;27748:4;27744:20;27739:2;27728:9;27724:18;27717:48;27782:108;27885:4;27876:6;27782:108;:::i;:::-;27774:116;;27900:72;27968:2;27957:9;27953:18;27944:6;27900:72;:::i;:::-;27982:73;28050:3;28039:9;28035:19;28026:6;27982:73;:::i;:::-;27231:831;;;;;;;;:::o

Swarm Source

ipfs://6faab234f3a127dbc99ef81990be15effb211a40fbc9d99167c2ba14a7197067
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.