ETH Price: $3,116.87 (+0.97%)

Token

Hydra (Hydra)
 

Overview

Max Total Supply

100,000,000 Hydra

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,551,095.624919814 Hydra

Value
$0.00
0x3A49bFA59c605Ca674CC9a2cd3B1b248795Cc71E
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:
HYDRA

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-29
*/

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

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping(address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED");
        _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

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

contract HYDRA is IBEP20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56;

    string constant _name = "Hydra";
    string constant _symbol = "Hydra";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**8 * (10**_decimals);

    //max wallet holding of 2% supply
    uint256 public _maxWalletToken = (_totalSupply * 3) / 100;

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

    // diff pairs which will be taxed
    mapping(address => bool) pairs;
    mapping(address => bool) isFeeExempt;
    //whitelist CEX which list us to hold more than max wallet
    mapping(address => bool) isMaxWalletExempt;

    // this fee is what is used after contract sells
    uint256 public marketingAmount = 3;
    uint256 public devAmount = 2;
    uint256 public totalAmountDivider = 5;
    bool public feesOn = true;
    bool public antisnipe = false;
    bool public tradingEnabled = true;

    //buying fee
    uint256 public totalFee = 4;
    // selling fee
    uint256 public totalSellFee = 4;
    uint256 public totalTransferFee = 4;
    uint256 feeDenominator = 100;

    address public marketingAmountReceiver;
    address public projectMaintenanceReceiver;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply * 8) / 1000; // 0.2% of supply
    //burn is always less than swap threshold.
    uint256 public taxBurnAmount = swapThreshold.div(10); // 0.02% of the supply

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

    constructor() Auth(msg.sender) {
        launchedAt = block.timestamp;

        marketingAmountReceiver = 0x5B7FA2ddBa0B7567451a5aa3BDCDB3C085dBC3E9;
        projectMaintenanceReceiver = 0x5B7FA2ddBa0B7567451a5aa3BDCDB3C085dBC3E9;

        //Testnet: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
        //Mainet: 0x10ED43C718714eb63d5aA57B78B54704E256024E
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        // exempted from tax
        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingAmountReceiver] = true;
        isFeeExempt[projectMaintenanceReceiver] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[address(this)] = true;

        // exempted for max wallet
        isMaxWalletExempt[msg.sender] = true;
        isMaxWalletExempt[marketingAmountReceiver] = true;
        isMaxWalletExempt[projectMaintenanceReceiver] = true;
        isMaxWalletExempt[DEAD] = true;
        isMaxWalletExempt[address(this)] = true;
        isMaxWalletExempt[pair] = true;

        // add to pairs for taxes.
        pairs[pair] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (!authorizations[sender]) {
            require(tradingEnabled, "Trading not open yet");
        }

        // max wallet code
        if (!isMaxWalletExempt[recipient]) {
            uint256 heldTokens = balanceOf(recipient);
            require(
                (heldTokens + amount) <= _maxWalletToken,
                "Max wallet reached."
            );
        }

        if (shouldSwapBack()) {
            swapBack();
            //burn extra tax
            uint256 taxUnsold = balanceOf(address(this));
            if (taxUnsold > taxBurnAmount) {
                _basicTransfer(address(this), DEAD, taxBurnAmount);
            }
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived = !isFeeExempt[sender] && feesOn
            ? takeFee(sender, amount, recipient)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(
        address sender,
        uint256 amount,
        address recipient
    ) internal returns (uint256) {
        uint256 feeAmount;

        if (antisnipe) {
            feeAmount = amount.mul(25).div(100);
        } else {
            //buying
            if (pairs[sender]) {
                feeAmount = amount.mul(totalFee).div(feeDenominator);
            }
            //selling
            else if (pairs[recipient]) {
                feeAmount = amount.mul(totalSellFee).div(feeDenominator);
            }
            // transfer 1% tax
            else {
                feeAmount = amount.mul(totalTransferFee).div(feeDenominator);
            }
        }

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    /**
     * Only swaps back if these conditions are met, during sells and when the
     * threshold is reached or when the time has reached for the swap.
     */
    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold.mul(2);
    }

    /**
     * Swaps the tax collected for fees sent to marketing and dev. The swap only swaps the threshold amount.
     */
    function swapBack() internal swapping {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

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

        uint256 amountBNB = address(this).balance;
        uint256 amountBNBMarketing = amountBNB.mul(marketingAmount).div(
            totalAmountDivider
        );
        (bool tmpSuccess, ) = payable(marketingAmountReceiver).call{
            value: amountBNBMarketing
        }("");
        (bool tmpSuccess2, ) = payable(projectMaintenanceReceiver).call{
            value: amountBNB.sub(amountBNBMarketing)
        }("");
        // suppresses warning
        tmpSuccess2 = false;
        tmpSuccess = false;
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function addPairTax(address pairAddress, bool taxed) external authorized {
        pairs[pairAddress] = taxed;
    }

    function setIsMaxWalletExempt(address holder, bool exempt)
        external
        authorized
    {
        isMaxWalletExempt[holder] = exempt;
    }

    /**
     * Setup the fee recevers for marketing and dev
     */
    function setFeeReceivers(
        address _marketingAmountReceiver,
        address _projectMaintenanceReceiver
    ) external onlyOwner {
        marketingAmountReceiver = _marketingAmountReceiver;
        projectMaintenanceReceiver = _projectMaintenanceReceiver;
    }

    /**
     * Sets if tokens collected in tax should be sold for marketing and dev fees, 
     and burn amount to burn extra tax. Amounts are in token amounts without decimals.
     */
    function setSwapBackSettings(
        bool _enabled,
        uint256 _amount,
        uint256 _taxBurnAmount
    ) external authorized {
        require(
            _amount > _taxBurnAmount,
            "Swap threshold must be more than amount burned"
        );
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**9;
        taxBurnAmount = _taxBurnAmount * 10**9;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setMaxWalletPercent(uint256 percent) external onlyOwner {
        //prevent hp
        require(percent >= 1, "Max wallet can only be more than 1%");
        _maxWalletToken = _totalSupply.mul(percent).div(100);
    }

    function setFeesOn(bool _feesOn) external onlyOwner {
        feesOn = _feesOn;
    }

    function setFees(
        uint256 _totalFee,
        uint256 _totalSellFee,
        uint256 _totalTransferFee
    ) external onlyOwner {
        require(_totalFee < feeDenominator / 5);
        require(_totalSellFee < feeDenominator / 5);
        require(_totalTransferFee < feeDenominator / 10);
        totalFee = _totalFee;
        totalSellFee = _totalSellFee;
        totalTransferFee = _totalTransferFee;
    }

    function setTradingEnabled() external onlyOwner {
        tradingEnabled = true;
    }

    function removeAntiSnipe() external onlyOwner {
        antisnipe = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairAddress","type":"address"},{"internalType":"bool","name":"taxed","type":"bool"}],"name":"addPairTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antisnipe","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"pure","type":"function"},{"inputs":[],"name":"devAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","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":"marketingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAmountReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectMaintenanceReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAmountReceiver","type":"address"},{"internalType":"address","name":"_projectMaintenanceReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalFee","type":"uint256"},{"internalType":"uint256","name":"_totalSellFee","type":"uint256"},{"internalType":"uint256","name":"_totalTransferFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_feesOn","type":"bool"}],"name":"setFeesOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_taxBurnAmount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxBurnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAmountDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","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":"totalTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9e7cea3dedca5984780bafc599bd69add087d56600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000143919062000e6d565b6305f5e10062000154919062000ebe565b600655606460036006546200016a919062000ebe565b62000176919062000f4e565b6007556003600d556002600e556005600f556001601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff02191690831515021790555060046011556004601255600460135560646014556001601a60006101000a81548160ff0219169083151502179055506103e860086006546200021c919062000ebe565b62000228919062000f4e565b601b5562000248600a601b5462000c1960201b6200197f1790919060201c565b601c553480156200025857600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505042601981905550735b7fa2ddba0b7567451a5aa3bdcdb3c085dbc3e9601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735b7fa2ddba0b7567451a5aa3bdcdb3c085dbc3e9601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000466573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048c919062000ff0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004ea92919062001033565b6020604051808303816000875af11580156200050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000530919062000ff0565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600654600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000c0b919062001071565b60405180910390a362001156565b600062000c6383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c6b60201b60201c565b905092915050565b6000808311829062000cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cac919062001132565b60405180910390fd5b506000838562000cc6919062000f4e565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d615780860481111562000d395762000d3862000cd3565b5b600185161562000d495780820291505b808102905062000d598562000d02565b945062000d19565b94509492505050565b60008262000d7c576001905062000e4f565b8162000d8c576000905062000e4f565b816001811462000da5576002811462000db05762000de6565b600191505062000e4f565b60ff84111562000dc55762000dc462000cd3565b5b8360020a91508482111562000ddf5762000dde62000cd3565b5b5062000e4f565b5060208310610133831016604e8410600b841016171562000e205782820a90508381111562000e1a5762000e1962000cd3565b5b62000e4f565b62000e2f848484600162000d0f565b9250905081840481111562000e495762000e4862000cd3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e7a8262000e56565b915062000e878362000e60565b925062000eb67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d6a565b905092915050565b600062000ecb8262000e56565b915062000ed88362000e56565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f145762000f1362000cd3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f5b8262000e56565b915062000f688362000e56565b92508262000f7b5762000f7a62000f1f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fb88262000f8b565b9050919050565b62000fca8162000fab565b811462000fd657600080fd5b50565b60008151905062000fea8162000fbf565b92915050565b60006020828403121562001009576200100862000f86565b5b6000620010198482850162000fd9565b91505092915050565b6200102d8162000fab565b82525050565b60006040820190506200104a600083018562001022565b62001059602083018462001022565b9392505050565b6200106b8162000e56565b82525050565b600060208201905062001088600083018462001060565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015620010ca578082015181840152602081019050620010ad565b83811115620010da576000848401525b50505050565b6000601f19601f8301169050919050565b6000620010fe826200108e565b6200110a818562001099565b93506200111c818560208601620010aa565b6200112781620010e0565b840191505092915050565b600060208201905081810360008301526200114e8184620010f1565b905092915050565b61358a80620011666000396000f3fe60806040526004361061026b5760003560e01c806378109e5411610144578063bf56b371116100b6578063dd62ed3e1161007a578063dd62ed3e1461090d578063e156afd51461094a578063f0b37c0414610961578063f2fde38b1461098a578063f887ea40146109b3578063fe9fbb80146109de57610272565b8063bf56b3711461083c578063c04a78ad14610867578063cd653ee614610890578063cec10c11146108bb578063d0889358146108e457610272565b806395d89b411161010857806395d89b411461072c5780639d9241ec14610757578063a4b45c0014610782578063a8aa1b31146107ab578063a9059cbb146107d6578063b6a5d7de1461081357610272565b806378109e541461065757806382bf293c14610682578063882cfb3f146106ab578063893d20e8146106d657806391917d741461070157610272565b80632f54bf6e116101dd578063532ce9fd116101a1578063532ce9fd1461054757806357dbb86914610572578063658d4b7f1461059d578063675ef65c146105c65780636ddd1713146105ef57806370a082311461061a57610272565b80632f54bf6e14610472578063313ce567146104af578063360bfd54146104da57806339bb668a146105055780634ada218b1461051c57610272565b806318160ddd1161022f57806318160ddd1461035e5780631df4ccfc1461038957806323b872dd146103b457806326c97eed146103f15780632b112e491461041c5780632b3459641461044757610272565b80630445b6671461027757806306fdde03146102a2578063095ea7b3146102cd57806309f19ed21461030a5780630e2249321461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a1b565b604051610299919061288f565b60405180910390f35b3480156102ae57600080fd5b506102b7610a21565b6040516102c49190612943565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef91906129f4565b610a5e565b6040516103019190612a4f565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190612a96565b610b50565b005b34801561033f57600080fd5b50610348610bf3565b604051610355919061288f565b60405180910390f35b34801561036a57600080fd5b50610373610bf9565b604051610380919061288f565b60405180910390f35b34801561039557600080fd5b5061039e610c03565b6040516103ab919061288f565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612ad6565b610c09565b6040516103e89190612a4f565b60405180910390f35b3480156103fd57600080fd5b50610406610e09565b604051610413919061288f565b60405180910390f35b34801561042857600080fd5b50610431610e0f565b60405161043e919061288f565b60405180910390f35b34801561045357600080fd5b5061045c610e91565b604051610469919061288f565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612b29565b610e97565b6040516104a69190612a4f565b60405180910390f35b3480156104bb57600080fd5b506104c4610ef0565b6040516104d19190612b72565b60405180910390f35b3480156104e657600080fd5b506104ef610ef9565b6040516104fc919061288f565b60405180910390f35b34801561051157600080fd5b5061051a610eff565b005b34801561052857600080fd5b50610531610f64565b60405161053e9190612a4f565b60405180910390f35b34801561055357600080fd5b5061055c610f77565b6040516105699190612b9c565b60405180910390f35b34801561057e57600080fd5b50610587610f9d565b6040516105949190612b9c565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612a96565b610fc3565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190612bb7565b611066565b005b3480156105fb57600080fd5b506106046110cb565b6040516106119190612a4f565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190612b29565b6110de565b60405161064e919061288f565b60405180910390f35b34801561066357600080fd5b5061066c611127565b604051610679919061288f565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190612be4565b61112d565b005b3480156106b757600080fd5b506106c06111ea565b6040516106cd9190612a4f565b60405180910390f35b3480156106e257600080fd5b506106eb6111fd565b6040516106f89190612b9c565b60405180910390f35b34801561070d57600080fd5b50610716611226565b604051610723919061288f565b60405180910390f35b34801561073857600080fd5b5061074161122c565b60405161074e9190612943565b60405180910390f35b34801561076357600080fd5b5061076c611269565b604051610779919061288f565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612c11565b61126f565b005b3480156107b757600080fd5b506107c061133d565b6040516107cd9190612b9c565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f891906129f4565b611363565b60405161080a9190612a4f565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612b29565b611378565b005b34801561084857600080fd5b5061085161141a565b60405161085e919061288f565b60405180910390f35b34801561087357600080fd5b5061088e60048036038101906108899190612a96565b611420565b005b34801561089c57600080fd5b506108a56114c3565b6040516108b29190612a4f565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190612c51565b6114d6565b005b3480156108f057600080fd5b5061090b60048036038101906109069190612ca4565b611586565b005b34801561091957600080fd5b50610934600480360381019061092f9190612c11565b61165b565b604051610941919061288f565b60405180910390f35b34801561095657600080fd5b5061095f6116e2565b005b34801561096d57600080fd5b5061098860048036038101906109839190612b29565b611747565b005b34801561099657600080fd5b506109b160048036038101906109ac9190612d35565b6117ea565b005b3480156109bf57600080fd5b506109c8611903565b6040516109d59190612dc1565b60405180910390f35b3480156109ea57600080fd5b50610a056004803603810190610a009190612b29565b611929565b604051610a129190612a4f565b60405180910390f35b601b5481565b60606040518060400160405280600581526020017f4879647261000000000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3e919061288f565b60405180910390a36001905092915050565b610b5933611929565b610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612e28565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000600654905090565b60115481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610df557610d74826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e00848484611a2d565b90509392505050565b600f5481565b6000610e8c610e3f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b610e7e610e6d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b600654611e5990919063ffffffff16565b611e5990919063ffffffff16565b905090565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600d5481565b610f0833610e97565b610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90612e94565b60405180910390fd5b6000601060016101000a81548160ff021916908315150217905550565b601060029054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fcc33611929565b61100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612e28565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61106f33610e97565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612e94565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b601a60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b61113633610e97565b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90612e94565b60405180910390fd5b60018110156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612f26565b60405180910390fd5b6111e160646111d383600654611ea390919063ffffffff16565b61197f90919063ffffffff16565b60078190555050565b601060019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601c5481565b60606040518060400160405280600581526020017f4879647261000000000000000000000000000000000000000000000000000000815250905090565b60125481565b61127833610e97565b6112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90612e94565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611370338484611a2d565b905092915050565b61138133610e97565b6113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612e94565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b61142933611929565b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90612e28565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b6114df33610e97565b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590612e94565b60405180910390fd5b600560145461152d9190612fa4565b831061153857600080fd5b60056014546115479190612fa4565b821061155257600080fd5b600a6014546115619190612fa4565b811061156c57600080fd5b826011819055508160128190555080601381905550505050565b61158f33611929565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612e28565b60405180910390fd5b808211611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613047565b60405180910390fd5b82601a60006101000a81548160ff021916908315150217905550633b9aca008261163a9190613067565b601b81905550633b9aca00816116509190613067565b601c81905550505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116eb33610e97565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612e94565b60405180910390fd5b6001601060026101000a81548160ff021916908315150217905550565b61175033610e97565b61178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690612e94565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117f333610e97565b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e94565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f891906130e2565b60405180910390a150565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006119c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f1e565b905092915050565b6000838311158290611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a089190612943565b60405180910390fd5b5060008385611a2091906130fd565b9050809150509392505050565b6000601d60009054906101000a900460ff1615611a5657611a4f848484611f81565b9050611e52565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611af757601060029054906101000a900460ff16611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061317d565b60405180910390fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ba7576000611b53846110de565b90506007548382611b64919061319d565b1115611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c9061323f565b60405180910390fd5b505b611baf612154565b15611c0657611bbc61223e565b6000611bc7306110de565b9050601c54811115611c0457611c0230600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c54611f81565b505b505b611c8f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d3a5750601060009054906101000a900460ff165b611d445782611d50565b611d4f858486612589565b5b9050611da481600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e44919061288f565b60405180910390a360019150505b9392505050565b6000611e9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119c9565b905092915050565b600080831415611eb65760009050611f18565b60008284611ec49190613067565b9050828482611ed39190612fa4565b14611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a906132d1565b60405180910390fd5b809150505b92915050565b60008083118290611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9190612943565b60405180910390fd5b5060008385611f749190612fa4565b9050809150509392505050565b600061200c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612141919061288f565b60405180910390a3600190509392505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121c15750601d60009054906101000a900460ff16155b80156121d95750601a60009054906101000a900460ff165b801561223957506121f66002601b54611ea390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612276576122756132f1565b5b6040519080825280602002602001820160405280156122a45781602001602082028036833780820191505090505b50905030816000815181106122bc576122bb613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232d5761232c613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947601b5460008430426040518663ffffffff1660e01b81526004016123cd959493929190613448565b600060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506000479050600061242f600f54612421600d5485611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612479906134d3565b60006040518083038185875af1925050503d80600081146124b6576040519150601f19603f3d011682016040523d82523d6000602084013e6124bb565b606091505b505090506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661250d8486611e5990919063ffffffff16565b604051612519906134d3565b60006040518083038185875af1925050503d8060008114612556576040519150601f19603f3d011682016040523d82523d6000602084013e61255b565b606091505b50509050600090506000915050505050506000601d60006101000a81548160ff021916908315150217905550565b600080601060019054906101000a900460ff16156125cf576125c860646125ba601987611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612701565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126515761264a60145461263c60115487611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612700565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126d3576126cc6014546126be60125487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506126ff565b6126fc6014546126ee60135487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90505b5b5b61275381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f3919061288f565b60405180910390a361280e8185611e5990919063ffffffff16565b9150509392505050565b6000808284612827919061319d565b90508381101561286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390613534565b60405180910390fd5b8091505092915050565b6000819050919050565b61288981612876565b82525050565b60006020820190506128a46000830184612880565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128e45780820151818401526020810190506128c9565b838111156128f3576000848401525b50505050565b6000601f19601f8301169050919050565b6000612915826128aa565b61291f81856128b5565b935061292f8185602086016128c6565b612938816128f9565b840191505092915050565b6000602082019050818103600083015261295d818461290a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129958261296a565b9050919050565b6129a58161298a565b81146129b057600080fd5b50565b6000813590506129c28161299c565b92915050565b6129d181612876565b81146129dc57600080fd5b50565b6000813590506129ee816129c8565b92915050565b60008060408385031215612a0b57612a0a612965565b5b6000612a19858286016129b3565b9250506020612a2a858286016129df565b9150509250929050565b60008115159050919050565b612a4981612a34565b82525050565b6000602082019050612a646000830184612a40565b92915050565b612a7381612a34565b8114612a7e57600080fd5b50565b600081359050612a9081612a6a565b92915050565b60008060408385031215612aad57612aac612965565b5b6000612abb858286016129b3565b9250506020612acc85828601612a81565b9150509250929050565b600080600060608486031215612aef57612aee612965565b5b6000612afd868287016129b3565b9350506020612b0e868287016129b3565b9250506040612b1f868287016129df565b9150509250925092565b600060208284031215612b3f57612b3e612965565b5b6000612b4d848285016129b3565b91505092915050565b600060ff82169050919050565b612b6c81612b56565b82525050565b6000602082019050612b876000830184612b63565b92915050565b612b968161298a565b82525050565b6000602082019050612bb16000830184612b8d565b92915050565b600060208284031215612bcd57612bcc612965565b5b6000612bdb84828501612a81565b91505092915050565b600060208284031215612bfa57612bf9612965565b5b6000612c08848285016129df565b91505092915050565b60008060408385031215612c2857612c27612965565b5b6000612c36858286016129b3565b9250506020612c47858286016129b3565b9150509250929050565b600080600060608486031215612c6a57612c69612965565b5b6000612c78868287016129df565b9350506020612c89868287016129df565b9250506040612c9a868287016129df565b9150509250925092565b600080600060608486031215612cbd57612cbc612965565b5b6000612ccb86828701612a81565b9350506020612cdc868287016129df565b9250506040612ced868287016129df565b9150509250925092565b6000612d028261296a565b9050919050565b612d1281612cf7565b8114612d1d57600080fd5b50565b600081359050612d2f81612d09565b92915050565b600060208284031215612d4b57612d4a612965565b5b6000612d5984828501612d20565b91505092915050565b6000819050919050565b6000612d87612d82612d7d8461296a565b612d62565b61296a565b9050919050565b6000612d9982612d6c565b9050919050565b6000612dab82612d8e565b9050919050565b612dbb81612da0565b82525050565b6000602082019050612dd66000830184612db2565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612e12600b836128b5565b9150612e1d82612ddc565b602082019050919050565b60006020820190508181036000830152612e4181612e05565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e7e6006836128b5565b9150612e8982612e48565b602082019050919050565b60006020820190508181036000830152612ead81612e71565b9050919050565b7f4d61782077616c6c65742063616e206f6e6c79206265206d6f7265207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b6000612f106023836128b5565b9150612f1b82612eb4565b604082019050919050565b60006020820190508181036000830152612f3f81612f03565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612faf82612876565b9150612fba83612876565b925082612fca57612fc9612f46565b5b828204905092915050565b7f53776170207468726573686f6c64206d757374206265206d6f7265207468616e60008201527f20616d6f756e74206275726e6564000000000000000000000000000000000000602082015250565b6000613031602e836128b5565b915061303c82612fd5565b604082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600061307282612876565b915061307d83612876565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130b6576130b5612f75565b5b828202905092915050565b60006130cc82612d8e565b9050919050565b6130dc816130c1565b82525050565b60006020820190506130f760008301846130d3565b92915050565b600061310882612876565b915061311383612876565b92508282101561312657613125612f75565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006131676014836128b5565b915061317282613131565b602082019050919050565b600060208201905081810360008301526131968161315a565b9050919050565b60006131a882612876565b91506131b383612876565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e8576131e7612f75565b5b828201905092915050565b7f4d61782077616c6c657420726561636865642e00000000000000000000000000600082015250565b60006132296013836128b5565b9150613234826131f3565b602082019050919050565b600060208201905081810360008301526132588161321c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132bb6021836128b5565b91506132c68261325f565b604082019050919050565b600060208201905081810360008301526132ea816132ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061337461336f61336a8461334f565b612d62565b612876565b9050919050565b61338481613359565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133bf8161298a565b82525050565b60006133d183836133b6565b60208301905092915050565b6000602082019050919050565b60006133f58261338a565b6133ff8185613395565b935061340a836133a6565b8060005b8381101561343b57815161342288826133c5565b975061342d836133dd565b92505060018101905061340e565b5085935050505092915050565b600060a08201905061345d6000830188612880565b61346a602083018761337b565b818103604083015261347c81866133ea565b905061348b6060830185612b8d565b6134986080830184612880565b9695505050505050565b600081905092915050565b50565b60006134bd6000836134a2565b91506134c8826134ad565b600082019050919050565b60006134de826134b0565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061351e601b836128b5565b9150613529826134e8565b602082019050919050565b6000602082019050818103600083015261354d81613511565b905091905056fea2646970667358221220d71936ce91bc262969d8ec4def142617ec307e8b8c51a0142cc19871ae7f96a264736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c806378109e5411610144578063bf56b371116100b6578063dd62ed3e1161007a578063dd62ed3e1461090d578063e156afd51461094a578063f0b37c0414610961578063f2fde38b1461098a578063f887ea40146109b3578063fe9fbb80146109de57610272565b8063bf56b3711461083c578063c04a78ad14610867578063cd653ee614610890578063cec10c11146108bb578063d0889358146108e457610272565b806395d89b411161010857806395d89b411461072c5780639d9241ec14610757578063a4b45c0014610782578063a8aa1b31146107ab578063a9059cbb146107d6578063b6a5d7de1461081357610272565b806378109e541461065757806382bf293c14610682578063882cfb3f146106ab578063893d20e8146106d657806391917d741461070157610272565b80632f54bf6e116101dd578063532ce9fd116101a1578063532ce9fd1461054757806357dbb86914610572578063658d4b7f1461059d578063675ef65c146105c65780636ddd1713146105ef57806370a082311461061a57610272565b80632f54bf6e14610472578063313ce567146104af578063360bfd54146104da57806339bb668a146105055780634ada218b1461051c57610272565b806318160ddd1161022f57806318160ddd1461035e5780631df4ccfc1461038957806323b872dd146103b457806326c97eed146103f15780632b112e491461041c5780632b3459641461044757610272565b80630445b6671461027757806306fdde03146102a2578063095ea7b3146102cd57806309f19ed21461030a5780630e2249321461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a1b565b604051610299919061288f565b60405180910390f35b3480156102ae57600080fd5b506102b7610a21565b6040516102c49190612943565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef91906129f4565b610a5e565b6040516103019190612a4f565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190612a96565b610b50565b005b34801561033f57600080fd5b50610348610bf3565b604051610355919061288f565b60405180910390f35b34801561036a57600080fd5b50610373610bf9565b604051610380919061288f565b60405180910390f35b34801561039557600080fd5b5061039e610c03565b6040516103ab919061288f565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612ad6565b610c09565b6040516103e89190612a4f565b60405180910390f35b3480156103fd57600080fd5b50610406610e09565b604051610413919061288f565b60405180910390f35b34801561042857600080fd5b50610431610e0f565b60405161043e919061288f565b60405180910390f35b34801561045357600080fd5b5061045c610e91565b604051610469919061288f565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612b29565b610e97565b6040516104a69190612a4f565b60405180910390f35b3480156104bb57600080fd5b506104c4610ef0565b6040516104d19190612b72565b60405180910390f35b3480156104e657600080fd5b506104ef610ef9565b6040516104fc919061288f565b60405180910390f35b34801561051157600080fd5b5061051a610eff565b005b34801561052857600080fd5b50610531610f64565b60405161053e9190612a4f565b60405180910390f35b34801561055357600080fd5b5061055c610f77565b6040516105699190612b9c565b60405180910390f35b34801561057e57600080fd5b50610587610f9d565b6040516105949190612b9c565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612a96565b610fc3565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190612bb7565b611066565b005b3480156105fb57600080fd5b506106046110cb565b6040516106119190612a4f565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190612b29565b6110de565b60405161064e919061288f565b60405180910390f35b34801561066357600080fd5b5061066c611127565b604051610679919061288f565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190612be4565b61112d565b005b3480156106b757600080fd5b506106c06111ea565b6040516106cd9190612a4f565b60405180910390f35b3480156106e257600080fd5b506106eb6111fd565b6040516106f89190612b9c565b60405180910390f35b34801561070d57600080fd5b50610716611226565b604051610723919061288f565b60405180910390f35b34801561073857600080fd5b5061074161122c565b60405161074e9190612943565b60405180910390f35b34801561076357600080fd5b5061076c611269565b604051610779919061288f565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612c11565b61126f565b005b3480156107b757600080fd5b506107c061133d565b6040516107cd9190612b9c565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f891906129f4565b611363565b60405161080a9190612a4f565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612b29565b611378565b005b34801561084857600080fd5b5061085161141a565b60405161085e919061288f565b60405180910390f35b34801561087357600080fd5b5061088e60048036038101906108899190612a96565b611420565b005b34801561089c57600080fd5b506108a56114c3565b6040516108b29190612a4f565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190612c51565b6114d6565b005b3480156108f057600080fd5b5061090b60048036038101906109069190612ca4565b611586565b005b34801561091957600080fd5b50610934600480360381019061092f9190612c11565b61165b565b604051610941919061288f565b60405180910390f35b34801561095657600080fd5b5061095f6116e2565b005b34801561096d57600080fd5b5061098860048036038101906109839190612b29565b611747565b005b34801561099657600080fd5b506109b160048036038101906109ac9190612d35565b6117ea565b005b3480156109bf57600080fd5b506109c8611903565b6040516109d59190612dc1565b60405180910390f35b3480156109ea57600080fd5b50610a056004803603810190610a009190612b29565b611929565b604051610a129190612a4f565b60405180910390f35b601b5481565b60606040518060400160405280600581526020017f4879647261000000000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3e919061288f565b60405180910390a36001905092915050565b610b5933611929565b610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612e28565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6000600654905090565b60115481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610df557610d74826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e00848484611a2d565b90509392505050565b600f5481565b6000610e8c610e3f600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b610e7e610e6d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110de565b600654611e5990919063ffffffff16565b611e5990919063ffffffff16565b905090565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600d5481565b610f0833610e97565b610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90612e94565b60405180910390fd5b6000601060016101000a81548160ff021916908315150217905550565b601060029054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fcc33611929565b61100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612e28565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61106f33610e97565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590612e94565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b601a60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b61113633610e97565b611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90612e94565b60405180910390fd5b60018110156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612f26565b60405180910390fd5b6111e160646111d383600654611ea390919063ffffffff16565b61197f90919063ffffffff16565b60078190555050565b601060019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601c5481565b60606040518060400160405280600581526020017f4879647261000000000000000000000000000000000000000000000000000000815250905090565b60125481565b61127833610e97565b6112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90612e94565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611370338484611a2d565b905092915050565b61138133610e97565b6113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612e94565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b61142933611929565b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90612e28565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900460ff1681565b6114df33610e97565b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590612e94565b60405180910390fd5b600560145461152d9190612fa4565b831061153857600080fd5b60056014546115479190612fa4565b821061155257600080fd5b600a6014546115619190612fa4565b811061156c57600080fd5b826011819055508160128190555080601381905550505050565b61158f33611929565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612e28565b60405180910390fd5b808211611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613047565b60405180910390fd5b82601a60006101000a81548160ff021916908315150217905550633b9aca008261163a9190613067565b601b81905550633b9aca00816116509190613067565b601c81905550505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116eb33610e97565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612e94565b60405180910390fd5b6001601060026101000a81548160ff021916908315150217905550565b61175033610e97565b61178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178690612e94565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117f333610e97565b611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612e94565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f891906130e2565b60405180910390a150565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006119c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f1e565b905092915050565b6000838311158290611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a089190612943565b60405180910390fd5b5060008385611a2091906130fd565b9050809150509392505050565b6000601d60009054906101000a900460ff1615611a5657611a4f848484611f81565b9050611e52565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611af757601060029054906101000a900460ff16611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061317d565b60405180910390fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ba7576000611b53846110de565b90506007548382611b64919061319d565b1115611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c9061323f565b60405180910390fd5b505b611baf612154565b15611c0657611bbc61223e565b6000611bc7306110de565b9050601c54811115611c0457611c0230600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c54611f81565b505b505b611c8f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d3a5750601060009054906101000a900460ff165b611d445782611d50565b611d4f858486612589565b5b9050611da481600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e44919061288f565b60405180910390a360019150505b9392505050565b6000611e9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119c9565b905092915050565b600080831415611eb65760009050611f18565b60008284611ec49190613067565b9050828482611ed39190612fa4565b14611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a906132d1565b60405180910390fd5b809150505b92915050565b60008083118290611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9190612943565b60405180910390fd5b5060008385611f749190612fa4565b9050809150509392505050565b600061200c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c99092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a182600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612141919061288f565b60405180910390a3600190509392505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121c15750601d60009054906101000a900460ff16155b80156121d95750601a60009054906101000a900460ff165b801561223957506121f66002601b54611ea390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612276576122756132f1565b5b6040519080825280602002602001820160405280156122a45781602001602082028036833780820191505090505b50905030816000815181106122bc576122bb613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061232d5761232c613320565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947601b5460008430426040518663ffffffff1660e01b81526004016123cd959493929190613448565b600060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506000479050600061242f600f54612421600d5485611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612479906134d3565b60006040518083038185875af1925050503d80600081146124b6576040519150601f19603f3d011682016040523d82523d6000602084013e6124bb565b606091505b505090506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661250d8486611e5990919063ffffffff16565b604051612519906134d3565b60006040518083038185875af1925050503d8060008114612556576040519150601f19603f3d011682016040523d82523d6000602084013e61255b565b606091505b50509050600090506000915050505050506000601d60006101000a81548160ff021916908315150217905550565b600080601060019054906101000a900460ff16156125cf576125c860646125ba601987611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612701565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126515761264a60145461263c60115487611ea390919063ffffffff16565b61197f90919063ffffffff16565b9050612700565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126d3576126cc6014546126be60125487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90506126ff565b6126fc6014546126ee60135487611ea390919063ffffffff16565b61197f90919063ffffffff16565b90505b5b5b61275381600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281890919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f3919061288f565b60405180910390a361280e8185611e5990919063ffffffff16565b9150509392505050565b6000808284612827919061319d565b90508381101561286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390613534565b60405180910390fd5b8091505092915050565b6000819050919050565b61288981612876565b82525050565b60006020820190506128a46000830184612880565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128e45780820151818401526020810190506128c9565b838111156128f3576000848401525b50505050565b6000601f19601f8301169050919050565b6000612915826128aa565b61291f81856128b5565b935061292f8185602086016128c6565b612938816128f9565b840191505092915050565b6000602082019050818103600083015261295d818461290a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129958261296a565b9050919050565b6129a58161298a565b81146129b057600080fd5b50565b6000813590506129c28161299c565b92915050565b6129d181612876565b81146129dc57600080fd5b50565b6000813590506129ee816129c8565b92915050565b60008060408385031215612a0b57612a0a612965565b5b6000612a19858286016129b3565b9250506020612a2a858286016129df565b9150509250929050565b60008115159050919050565b612a4981612a34565b82525050565b6000602082019050612a646000830184612a40565b92915050565b612a7381612a34565b8114612a7e57600080fd5b50565b600081359050612a9081612a6a565b92915050565b60008060408385031215612aad57612aac612965565b5b6000612abb858286016129b3565b9250506020612acc85828601612a81565b9150509250929050565b600080600060608486031215612aef57612aee612965565b5b6000612afd868287016129b3565b9350506020612b0e868287016129b3565b9250506040612b1f868287016129df565b9150509250925092565b600060208284031215612b3f57612b3e612965565b5b6000612b4d848285016129b3565b91505092915050565b600060ff82169050919050565b612b6c81612b56565b82525050565b6000602082019050612b876000830184612b63565b92915050565b612b968161298a565b82525050565b6000602082019050612bb16000830184612b8d565b92915050565b600060208284031215612bcd57612bcc612965565b5b6000612bdb84828501612a81565b91505092915050565b600060208284031215612bfa57612bf9612965565b5b6000612c08848285016129df565b91505092915050565b60008060408385031215612c2857612c27612965565b5b6000612c36858286016129b3565b9250506020612c47858286016129b3565b9150509250929050565b600080600060608486031215612c6a57612c69612965565b5b6000612c78868287016129df565b9350506020612c89868287016129df565b9250506040612c9a868287016129df565b9150509250925092565b600080600060608486031215612cbd57612cbc612965565b5b6000612ccb86828701612a81565b9350506020612cdc868287016129df565b9250506040612ced868287016129df565b9150509250925092565b6000612d028261296a565b9050919050565b612d1281612cf7565b8114612d1d57600080fd5b50565b600081359050612d2f81612d09565b92915050565b600060208284031215612d4b57612d4a612965565b5b6000612d5984828501612d20565b91505092915050565b6000819050919050565b6000612d87612d82612d7d8461296a565b612d62565b61296a565b9050919050565b6000612d9982612d6c565b9050919050565b6000612dab82612d8e565b9050919050565b612dbb81612da0565b82525050565b6000602082019050612dd66000830184612db2565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612e12600b836128b5565b9150612e1d82612ddc565b602082019050919050565b60006020820190508181036000830152612e4181612e05565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e7e6006836128b5565b9150612e8982612e48565b602082019050919050565b60006020820190508181036000830152612ead81612e71565b9050919050565b7f4d61782077616c6c65742063616e206f6e6c79206265206d6f7265207468616e60008201527f2031250000000000000000000000000000000000000000000000000000000000602082015250565b6000612f106023836128b5565b9150612f1b82612eb4565b604082019050919050565b60006020820190508181036000830152612f3f81612f03565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612faf82612876565b9150612fba83612876565b925082612fca57612fc9612f46565b5b828204905092915050565b7f53776170207468726573686f6c64206d757374206265206d6f7265207468616e60008201527f20616d6f756e74206275726e6564000000000000000000000000000000000000602082015250565b6000613031602e836128b5565b915061303c82612fd5565b604082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600061307282612876565b915061307d83612876565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130b6576130b5612f75565b5b828202905092915050565b60006130cc82612d8e565b9050919050565b6130dc816130c1565b82525050565b60006020820190506130f760008301846130d3565b92915050565b600061310882612876565b915061311383612876565b92508282101561312657613125612f75565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006131676014836128b5565b915061317282613131565b602082019050919050565b600060208201905081810360008301526131968161315a565b9050919050565b60006131a882612876565b91506131b383612876565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e8576131e7612f75565b5b828201905092915050565b7f4d61782077616c6c657420726561636865642e00000000000000000000000000600082015250565b60006132296013836128b5565b9150613234826131f3565b602082019050919050565b600060208201905081810360008301526132588161321c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132bb6021836128b5565b91506132c68261325f565b604082019050919050565b600060208201905081810360008301526132ea816132ae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061337461336f61336a8461334f565b612d62565b612876565b9050919050565b61338481613359565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133bf8161298a565b82525050565b60006133d183836133b6565b60208301905092915050565b6000602082019050919050565b60006133f58261338a565b6133ff8185613395565b935061340a836133a6565b8060005b8381101561343b57815161342288826133c5565b975061342d836133dd565b92505060018101905061340e565b5085935050505092915050565b600060a08201905061345d6000830188612880565b61346a602083018761337b565b818103604083015261347c81866133ea565b905061348b6060830185612b8d565b6134986080830184612880565b9695505050505050565b600081905092915050565b50565b60006134bd6000836134a2565b91506134c8826134ad565b600082019050919050565b60006134de826134b0565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061351e601b836128b5565b9150613529826134e8565b602082019050919050565b6000602082019050818103600083015261354d81613511565b905091905056fea2646970667358221220d71936ce91bc262969d8ec4def142617ec307e8b8c51a0142cc19871ae7f96a264736f6c634300080a0033

Deployed Bytecode Sourcemap

4865:11715:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8586:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9111:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14238:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6215:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8268:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6123:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9563:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5951:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15482:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5916:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3582:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8378:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5875:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16495:82;;;;;;;;;;;;;:::i;:::-;;6063:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6294:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6339:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14110:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15869:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6482:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8788:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5409:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15632:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6027:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8688:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6648:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8480:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6177:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14598:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6420:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9367:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3255:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6448:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14364:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5995:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15964:427;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15072:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8915:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16399:88;;;;;;;;;;;;;:::i;:::-;;3425:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3982:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6389:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3756:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:56;;;;:::o;8586:94::-;8634:13;8667:5;;;;;;;;;;;;;;;;;8660:12;;8586:94;:::o;9111:248::-;9213:4;9270:6;9235:11;:23;9247:10;9235:23;;;;;;;;;;;;;;;:32;9259:7;9235:32;;;;;;;;;;;;;;;:41;;;;9313:7;9292:37;;9301:10;9292:37;;;9322:6;9292:37;;;;;;:::i;:::-;;;;;;;;9347:4;9340:11;;9111:248;;;;:::o;14238:118::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14343:5:::1;14322;:18;14328:11;14322:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;14238:118:::0;;:::o;6215:35::-;;;;:::o;8268:102::-;8323:7;8350:12;;8343:19;;8268:102;:::o;6123:27::-;;;;:::o;9563:422::-;9697:4;9753:17;9718:11;:19;9730:6;9718:19;;;;;;;;;;;;;;;:31;9738:10;9718:31;;;;;;;;;;;;;;;;:52;9714:206;;9821:87;9875:6;9821:87;;;;;;;;;;;;;;;;;:11;:19;9833:6;9821:19;;;;;;;;;;;;;;;:31;9841:10;9821:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;9787:11;:19;9799:6;9787:19;;;;;;;;;;;;;;;:31;9807:10;9787:31;;;;;;;;;;;;;;;:121;;;;9714:206;9937:40;9951:6;9959:9;9970:6;9937:13;:40::i;:::-;9930:47;;9563:422;;;;;:::o;5951:37::-;;;;:::o;15482:142::-;15535:7;15562:54;15600:15;15610:4;;;;;;;;;;;15600:9;:15::i;:::-;15562:33;15579:15;15589:4;;;;;;;;;;;15579:9;:15::i;:::-;15562:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15555:61;;15482:142;:::o;5916:28::-;;;;:::o;3582:103::-;3637:4;3672:5;;;;;;;;;;;3661:16;;:7;:16;;;3654:23;;3582:103;;;:::o;8378:94::-;8430:5;5301:1;8448:16;;8378:94;:::o;5875:34::-;;;;:::o;16495:82::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16564:5:::1;16552:9;;:17;;;;;;;;;;;;;;;;;;16495:82::o:0;6063:33::-;;;;;;;;;;;;;:::o;6294:38::-;;;;;;;;;;;;;:::o;6339:41::-;;;;;;;;;;;;;:::o;14110:120::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14216:6:::1;14194:11;:19;14206:6;14194:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14110:120:::0;;:::o;15869:87::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15941:7:::1;15932:6;;:16;;;;;;;;;;;;;;;;;;15869:87:::0;:::o;6482:30::-;;;;;;;;;;;;;:::o;8788:119::-;8854:7;8881:9;:18;8891:7;8881:18;;;;;;;;;;;;;;;;8874:25;;8788:119;;;:::o;5409:57::-;;;;:::o;15632:229::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15749:1:::1;15738:7;:12;;15730:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15819:34;15849:3;15819:25;15836:7;15819:12;;:16;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;15801:15;:52;;;;15632:229:::0;:::o;6027:29::-;;;;;;;;;;;;;:::o;8688:92::-;8740:7;8767:5;;;;;;;;;;;8760:12;;8688:92;:::o;6648:52::-;;;;:::o;8480:98::-;8530:13;8563:7;;;;;;;;;;;;;;;;;8556:14;;8480:98;:::o;6177:31::-;;;;:::o;14598:276::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14775:24:::1;14749:23;;:50;;;;;;;;;;;;;;;;;;14839:27;14810:26;;:56;;;;;;;;;;;;;;;;;;14598:276:::0;;:::o;6420:19::-;;;;;;;;;;;;;:::o;9367:188::-;9474:4;9503:44;9517:10;9529:9;9540:6;9503:13;:44::i;:::-;9496:51;;9367:188;;;;:::o;3255:94::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3337:4:::1;3315:14:::0;:19:::1;3330:3;3315:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3255:94:::0;:::o;6448:25::-;;;;:::o;14364:155::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14505:6:::1;14477:17;:25;14495:6;14477:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14364:155:::0;;:::o;5995:25::-;;;;;;;;;;;;;:::o;15964:427::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16151:1:::1;16134:14;;:18;;;;:::i;:::-;16122:9;:30;16114:39;;;::::0;::::1;;16205:1;16188:14;;:18;;;;:::i;:::-;16172:13;:34;16164:43;;;::::0;::::1;;16263:2;16246:14;;:19;;;;:::i;:::-;16226:17;:39;16218:48;;;::::0;::::1;;16288:9;16277:8;:20;;;;16323:13;16308:12;:28;;;;16366:17;16347:16;:36;;;;15964:427:::0;;;:::o;15072:402::-;3131:24;3144:10;3131:12;:24::i;:::-;3123:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15254:14:::1;15244:7;:24;15222:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;15367:8;15353:11;;:22;;;;;;;;;;;;;;;;;;15412:5;15402:7;:15;;;;:::i;:::-;15386:13;:31;;;;15461:5;15444:14;:22;;;;:::i;:::-;15428:13;:38;;;;15072:402:::0;;;:::o;8915:188::-;9035:7;9067:11;:19;9079:6;9067:19;;;;;;;;;;;;;;;:28;9087:7;9067:28;;;;;;;;;;;;;;;;9060:35;;8915:188;;;;:::o;16399:88::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16475:4:::1;16458:14;;:21;;;;;;;;;;;;;;;;;;16399:88::o:0;3425:97::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3509:5:::1;3487:14;:19;3502:3;3487:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3425:97:::0;:::o;3982:173::-;2953:19;2961:10;2953:7;:19::i;:::-;2945:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4066:3:::1;4058:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4102:4;4080:14:::0;:19:::1;4095:3;4080:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4122:25;4143:3;4122:25;;;;;;:::i;:::-;;;;;;;;3982:173:::0;:::o;6389:24::-;;;;;;;;;;;;;:::o;3756:107::-;3812:4;3836:14;:19;3851:3;3836:19;;;;;;;;;;;;;;;;;;;;;;;;;3829:26;;3756:107;;;:::o;909:132::-;967:7;994:39;998:1;1001;994:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;987:46;;909:132;;;;:::o;417:226::-;537:7;570:1;565;:6;;573:12;557:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;597:9;613:1;609;:5;;;;:::i;:::-;597:17;;634:1;627:8;;;417:226;;;;;:::o;9993:1368::-;10119:4;10140:6;;;;;;;;;;;10136:87;;;10170:41;10185:6;10193:9;10204:6;10170:14;:41::i;:::-;10163:48;;;;10136:87;10240:14;:22;10255:6;10240:22;;;;;;;;;;;;;;;;;;;;;;;;;10235:103;;10287:14;;;;;;;;;;;10279:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10235:103;10383:17;:28;10401:9;10383:28;;;;;;;;;;;;;;;;;;;;;;;;;10378:239;;10428:18;10449:20;10459:9;10449;:20::i;:::-;10428:41;;10535:15;;10524:6;10511:10;:19;;;;:::i;:::-;10510:40;;10484:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;10413:204;10378:239;10633:16;:14;:16::i;:::-;10629:278;;;10666:10;:8;:10::i;:::-;10721:17;10741:24;10759:4;10741:9;:24::i;:::-;10721:44;;10796:13;;10784:9;:25;10780:116;;;10830:50;10853:4;10860;;;;;;;;;;;10866:13;;10830:14;:50::i;:::-;;10780:116;10651:256;10629:278;10966:90;11002:6;10966:90;;;;;;;;;;;;;;;;;:9;:17;10976:6;10966:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;10946:9;:17;10956:6;10946:17;;;;;;;;;;;;;;;:110;;;;11069:22;11095:11;:19;11107:6;11095:19;;;;;;;;;;;;;;;;;;;;;;;;;11094:20;:30;;;;;11118:6;;;;;;;;;;;11094:30;:102;;11190:6;11094:102;;;11140:34;11148:6;11156;11164:9;11140:7;:34::i;:::-;11094:102;11069:127;;11230:40;11255:14;11230:9;:20;11240:9;11230:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11207:9;:20;11217:9;11207:20;;;;;;;;;;;;;;;:63;;;;11305:9;11288:43;;11297:6;11288:43;;;11316:14;11288:43;;;;;;:::i;:::-;;;;;;;;11349:4;11342:11;;;9993:1368;;;;;;:::o;273:136::-;331:7;358:43;362:1;365;358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;351:50;;273:136;;;;:::o;651:250::-;709:7;738:1;733;:6;729:47;;;763:1;756:8;;;;729:47;788:9;804:1;800;:5;;;;:::i;:::-;788:17;;833:1;828;824;:5;;;;:::i;:::-;:10;816:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;892:1;885:8;;;651:250;;;;;:::o;1049:379::-;1169:7;1268:1;1264;:5;1271:12;1256:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1295:9;1311:1;1307;:5;;;;:::i;:::-;1295:17;;1419:1;1412:8;;;1049:379;;;;;:::o;11369:401::-;11496:4;11533:90;11569:6;11533:90;;;;;;;;;;;;;;;;;:9;:17;11543:6;11533:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;11513:9;:17;11523:6;11513:17;;;;;;;;;;;;;;;:110;;;;11657:32;11682:6;11657:9;:20;11667:9;11657:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11634:9;:20;11644:9;11634:20;;;;;;;;;;;;;;;:55;;;;11722:9;11705:35;;11714:6;11705:35;;;11733:6;11705:35;;;;;;:::i;:::-;;;;;;;;11758:4;11751:11;;11369:401;;;;;:::o;12848:229::-;12897:4;12948;;;;;;;;;;;12934:18;;:10;:18;;;;:42;;;;;12970:6;;;;;;;;;;;12969:7;12934:42;:70;;;;;12993:11;;;;;;;;;;;12934:70;:135;;;;;13049:20;13067:1;13049:13;;:17;;:20;;;;:::i;:::-;13021:9;:24;13039:4;13021:24;;;;;;;;;;;;;;;;:48;;12934:135;12914:155;;12848:229;:::o;13213:889::-;6790:4;6781:6;;:13;;;;;;;;;;;;;;;;;;13262:21:::1;13300:1;13286:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13262:40;;13331:4;13313;13318:1;13313:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13357:4;;;;;;;;;;;13347;13352:1;13347:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;13374:6;;;;;;;;;;;:57;;;13446:13;;13474:1;13490:4;13517;13537:15;13374:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13576:17;13596:21;13576:41;;13628:26;13657:78;13706:18;;13657:30;13671:15;;13657:9;:13;;:30;;;;:::i;:::-;:34;;:78;;;;:::i;:::-;13628:107;;13747:15;13776:23;;;;;;;;;;;13768:37;;13827:18;13768:92;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13746:114;;;13872:16;13902:26;;;;;;;;;;;13894:40;;13956:33;13970:18;13956:9;:13;;:33;;;;:::i;:::-;13894:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13871:133;;;14060:5;14046:19;;14089:5;14076:18;;13251:851;;;;;6826:5:::0;6817:6;;:14;;;;;;;;;;;;;;;;;;13213:889::o;11778:893::-;11898:7;11918:17;11952:9;;;;;;;;;;;11948:538;;;11990:23;12009:3;11990:14;12001:2;11990:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11978:35;;11948:538;;;12072:5;:13;12078:6;12072:13;;;;;;;;;;;;;;;;;;;;;;;;;12068:407;;;12118:40;12143:14;;12118:20;12129:8;;12118:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;12106:52;;12068:407;;;12220:5;:16;12226:9;12220:16;;;;;;;;;;;;;;;;;;;;;;;;;12216:259;;;12269:44;12298:14;;12269:24;12280:12;;12269:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;12257:56;;12216:259;;;12411:48;12444:14;;12411:28;12422:16;;12411:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;12399:60;;12216:259;12068:407;11948:538;12525:39;12554:9;12525;:24;12543:4;12525:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12498:9;:24;12516:4;12498:24;;;;;;;;;;;;;;;:66;;;;12605:4;12580:42;;12589:6;12580:42;;;12612:9;12580:42;;;;;;:::i;:::-;;;;;;;;12642:21;12653:9;12642:6;:10;;:21;;;;:::i;:::-;12635:28;;;11778:893;;;;;:::o;84:181::-;142:7;162:9;178:1;174;:5;;;;:::i;:::-;162:17;;203:1;198;:6;;190:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;256:1;249:8;;;84:181;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:468::-;4172:6;4180;4229:2;4217:9;4208:7;4204:23;4200:32;4197:119;;;4235:79;;:::i;:::-;4197:119;4355:1;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4326:117;4482:2;4508:50;4550:7;4541:6;4530:9;4526:22;4508:50;:::i;:::-;4498:60;;4453:115;4107:468;;;;;:::o;4581:619::-;4658:6;4666;4674;4723:2;4711:9;4702:7;4698:23;4694:32;4691:119;;;4729:79;;:::i;:::-;4691:119;4849:1;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4820:117;4976:2;5002:53;5047:7;5038:6;5027:9;5023:22;5002:53;:::i;:::-;4992:63;;4947:118;5104:2;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5075:118;4581:619;;;;;:::o;5206:329::-;5265:6;5314:2;5302:9;5293:7;5289:23;5285:32;5282:119;;;5320:79;;:::i;:::-;5282:119;5440:1;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5411:117;5206:329;;;;:::o;5541:86::-;5576:7;5616:4;5609:5;5605:16;5594:27;;5541:86;;;:::o;5633:112::-;5716:22;5732:5;5716:22;:::i;:::-;5711:3;5704:35;5633:112;;:::o;5751:214::-;5840:4;5878:2;5867:9;5863:18;5855:26;;5891:67;5955:1;5944:9;5940:17;5931:6;5891:67;:::i;:::-;5751:214;;;;:::o;5971:118::-;6058:24;6076:5;6058:24;:::i;:::-;6053:3;6046:37;5971:118;;:::o;6095:222::-;6188:4;6226:2;6215:9;6211:18;6203:26;;6239:71;6307:1;6296:9;6292:17;6283:6;6239:71;:::i;:::-;6095:222;;;;:::o;6323:323::-;6379:6;6428:2;6416:9;6407:7;6403:23;6399:32;6396:119;;;6434:79;;:::i;:::-;6396:119;6554:1;6579:50;6621:7;6612:6;6601:9;6597:22;6579:50;:::i;:::-;6569:60;;6525:114;6323:323;;;;:::o;6652:329::-;6711:6;6760:2;6748:9;6739:7;6735:23;6731:32;6728:119;;;6766:79;;:::i;:::-;6728:119;6886:1;6911:53;6956:7;6947:6;6936:9;6932:22;6911:53;:::i;:::-;6901:63;;6857:117;6652:329;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:619::-;7544:6;7552;7560;7609:2;7597:9;7588:7;7584:23;7580:32;7577:119;;;7615:79;;:::i;:::-;7577:119;7735:1;7760:53;7805:7;7796:6;7785:9;7781:22;7760:53;:::i;:::-;7750:63;;7706:117;7862:2;7888:53;7933:7;7924:6;7913:9;7909:22;7888:53;:::i;:::-;7878:63;;7833:118;7990:2;8016:53;8061:7;8052:6;8041:9;8037:22;8016:53;:::i;:::-;8006:63;;7961:118;7467:619;;;;;:::o;8092:613::-;8166:6;8174;8182;8231:2;8219:9;8210:7;8206:23;8202:32;8199:119;;;8237:79;;:::i;:::-;8199:119;8357:1;8382:50;8424:7;8415:6;8404:9;8400:22;8382:50;:::i;:::-;8372:60;;8328:114;8481:2;8507:53;8552:7;8543:6;8532:9;8528:22;8507:53;:::i;:::-;8497:63;;8452:118;8609:2;8635:53;8680:7;8671:6;8660:9;8656:22;8635:53;:::i;:::-;8625:63;;8580:118;8092:613;;;;;:::o;8711:104::-;8756:7;8785:24;8803:5;8785:24;:::i;:::-;8774:35;;8711:104;;;:::o;8821:138::-;8902:32;8928:5;8902:32;:::i;:::-;8895:5;8892:43;8882:71;;8949:1;8946;8939:12;8882:71;8821:138;:::o;8965:155::-;9019:5;9057:6;9044:20;9035:29;;9073:41;9108:5;9073:41;:::i;:::-;8965:155;;;;:::o;9126:345::-;9193:6;9242:2;9230:9;9221:7;9217:23;9213:32;9210:119;;;9248:79;;:::i;:::-;9210:119;9368:1;9393:61;9446:7;9437:6;9426:9;9422:22;9393:61;:::i;:::-;9383:71;;9339:125;9126:345;;;;:::o;9477:60::-;9505:3;9526:5;9519:12;;9477:60;;;:::o;9543:142::-;9593:9;9626:53;9644:34;9653:24;9671:5;9653:24;:::i;:::-;9644:34;:::i;:::-;9626:53;:::i;:::-;9613:66;;9543:142;;;:::o;9691:126::-;9741:9;9774:37;9805:5;9774:37;:::i;:::-;9761:50;;9691:126;;;:::o;9823:144::-;9891:9;9924:37;9955:5;9924:37;:::i;:::-;9911:50;;9823:144;;;:::o;9973:167::-;10078:55;10127:5;10078:55;:::i;:::-;10073:3;10066:68;9973:167;;:::o;10146:258::-;10257:4;10295:2;10284:9;10280:18;10272:26;;10308:89;10394:1;10383:9;10379:17;10370:6;10308:89;:::i;:::-;10146:258;;;;:::o;10410:161::-;10550:13;10546:1;10538:6;10534:14;10527:37;10410:161;:::o;10577:366::-;10719:3;10740:67;10804:2;10799:3;10740:67;:::i;:::-;10733:74;;10816:93;10905:3;10816:93;:::i;:::-;10934:2;10929:3;10925:12;10918:19;;10577:366;;;:::o;10949:419::-;11115:4;11153:2;11142:9;11138:18;11130:26;;11202:9;11196:4;11192:20;11188:1;11177:9;11173:17;11166:47;11230:131;11356:4;11230:131;:::i;:::-;11222:139;;10949:419;;;:::o;11374:156::-;11514:8;11510:1;11502:6;11498:14;11491:32;11374:156;:::o;11536:365::-;11678:3;11699:66;11763:1;11758:3;11699:66;:::i;:::-;11692:73;;11774:93;11863:3;11774:93;:::i;:::-;11892:2;11887:3;11883:12;11876:19;;11536:365;;;:::o;11907:419::-;12073:4;12111:2;12100:9;12096:18;12088:26;;12160:9;12154:4;12150:20;12146:1;12135:9;12131:17;12124:47;12188:131;12314:4;12188:131;:::i;:::-;12180:139;;11907:419;;;:::o;12332:222::-;12472:34;12468:1;12460:6;12456:14;12449:58;12541:5;12536:2;12528:6;12524:15;12517:30;12332:222;:::o;12560:366::-;12702:3;12723:67;12787:2;12782:3;12723:67;:::i;:::-;12716:74;;12799:93;12888:3;12799:93;:::i;:::-;12917:2;12912:3;12908:12;12901:19;;12560:366;;;:::o;12932:419::-;13098:4;13136:2;13125:9;13121:18;13113:26;;13185:9;13179:4;13175:20;13171:1;13160:9;13156:17;13149:47;13213:131;13339:4;13213:131;:::i;:::-;13205:139;;12932:419;;;:::o;13357:180::-;13405:77;13402:1;13395:88;13502:4;13499:1;13492:15;13526:4;13523:1;13516:15;13543:180;13591:77;13588:1;13581:88;13688:4;13685:1;13678:15;13712:4;13709:1;13702:15;13729:185;13769:1;13786:20;13804:1;13786:20;:::i;:::-;13781:25;;13820:20;13838:1;13820:20;:::i;:::-;13815:25;;13859:1;13849:35;;13864:18;;:::i;:::-;13849:35;13906:1;13903;13899:9;13894:14;;13729:185;;;;:::o;13920:233::-;14060:34;14056:1;14048:6;14044:14;14037:58;14129:16;14124:2;14116:6;14112:15;14105:41;13920:233;:::o;14159:366::-;14301:3;14322:67;14386:2;14381:3;14322:67;:::i;:::-;14315:74;;14398:93;14487:3;14398:93;:::i;:::-;14516:2;14511:3;14507:12;14500:19;;14159:366;;;:::o;14531:419::-;14697:4;14735:2;14724:9;14720:18;14712:26;;14784:9;14778:4;14774:20;14770:1;14759:9;14755:17;14748:47;14812:131;14938:4;14812:131;:::i;:::-;14804:139;;14531:419;;;:::o;14956:348::-;14996:7;15019:20;15037:1;15019:20;:::i;:::-;15014:25;;15053:20;15071:1;15053:20;:::i;:::-;15048:25;;15241:1;15173:66;15169:74;15166:1;15163:81;15158:1;15151:9;15144:17;15140:105;15137:131;;;15248:18;;:::i;:::-;15137:131;15296:1;15293;15289:9;15278:20;;14956:348;;;;:::o;15310:134::-;15368:9;15401:37;15432:5;15401:37;:::i;:::-;15388:50;;15310:134;;;:::o;15450:147::-;15545:45;15584:5;15545:45;:::i;:::-;15540:3;15533:58;15450:147;;:::o;15603:238::-;15704:4;15742:2;15731:9;15727:18;15719:26;;15755:79;15831:1;15820:9;15816:17;15807:6;15755:79;:::i;:::-;15603:238;;;;:::o;15847:191::-;15887:4;15907:20;15925:1;15907:20;:::i;:::-;15902:25;;15941:20;15959:1;15941:20;:::i;:::-;15936:25;;15980:1;15977;15974:8;15971:34;;;15985:18;;:::i;:::-;15971:34;16030:1;16027;16023:9;16015:17;;15847:191;;;;:::o;16044:170::-;16184:22;16180:1;16172:6;16168:14;16161:46;16044:170;:::o;16220:366::-;16362:3;16383:67;16447:2;16442:3;16383:67;:::i;:::-;16376:74;;16459:93;16548:3;16459:93;:::i;:::-;16577:2;16572:3;16568:12;16561:19;;16220:366;;;:::o;16592:419::-;16758:4;16796:2;16785:9;16781:18;16773:26;;16845:9;16839:4;16835:20;16831:1;16820:9;16816:17;16809:47;16873:131;16999:4;16873:131;:::i;:::-;16865:139;;16592:419;;;:::o;17017:305::-;17057:3;17076:20;17094:1;17076:20;:::i;:::-;17071:25;;17110:20;17128:1;17110:20;:::i;:::-;17105:25;;17264:1;17196:66;17192:74;17189:1;17186:81;17183:107;;;17270:18;;:::i;:::-;17183:107;17314:1;17311;17307:9;17300:16;;17017:305;;;;:::o;17328:169::-;17468:21;17464:1;17456:6;17452:14;17445:45;17328:169;:::o;17503:366::-;17645:3;17666:67;17730:2;17725:3;17666:67;:::i;:::-;17659:74;;17742:93;17831:3;17742:93;:::i;:::-;17860:2;17855:3;17851:12;17844:19;;17503:366;;;:::o;17875:419::-;18041:4;18079:2;18068:9;18064:18;18056:26;;18128:9;18122:4;18118:20;18114:1;18103:9;18099:17;18092:47;18156:131;18282:4;18156:131;:::i;:::-;18148:139;;17875:419;;;:::o;18300:220::-;18440:34;18436:1;18428:6;18424:14;18417:58;18509:3;18504:2;18496:6;18492:15;18485:28;18300:220;:::o;18526:366::-;18668:3;18689:67;18753:2;18748:3;18689:67;:::i;:::-;18682:74;;18765:93;18854:3;18765:93;:::i;:::-;18883:2;18878:3;18874:12;18867:19;;18526:366;;;:::o;18898:419::-;19064:4;19102:2;19091:9;19087:18;19079:26;;19151:9;19145:4;19141:20;19137:1;19126:9;19122:17;19115:47;19179:131;19305:4;19179:131;:::i;:::-;19171:139;;18898:419;;;:::o;19323:180::-;19371:77;19368:1;19361:88;19468:4;19465:1;19458:15;19492:4;19489:1;19482:15;19509:180;19557:77;19554:1;19547:88;19654:4;19651:1;19644:15;19678:4;19675:1;19668:15;19695:85;19740:7;19769:5;19758:16;;19695:85;;;:::o;19786:158::-;19844:9;19877:61;19895:42;19904:32;19930:5;19904:32;:::i;:::-;19895:42;:::i;:::-;19877:61;:::i;:::-;19864:74;;19786:158;;;:::o;19950:147::-;20045:45;20084:5;20045:45;:::i;:::-;20040:3;20033:58;19950:147;;:::o;20103:114::-;20170:6;20204:5;20198:12;20188:22;;20103:114;;;:::o;20223:184::-;20322:11;20356:6;20351:3;20344:19;20396:4;20391:3;20387:14;20372:29;;20223:184;;;;:::o;20413:132::-;20480:4;20503:3;20495:11;;20533:4;20528:3;20524:14;20516:22;;20413:132;;;:::o;20551:108::-;20628:24;20646:5;20628:24;:::i;:::-;20623:3;20616:37;20551:108;;:::o;20665:179::-;20734:10;20755:46;20797:3;20789:6;20755:46;:::i;:::-;20833:4;20828:3;20824:14;20810:28;;20665:179;;;;:::o;20850:113::-;20920:4;20952;20947:3;20943:14;20935:22;;20850:113;;;:::o;20999:732::-;21118:3;21147:54;21195:5;21147:54;:::i;:::-;21217:86;21296:6;21291:3;21217:86;:::i;:::-;21210:93;;21327:56;21377:5;21327:56;:::i;:::-;21406:7;21437:1;21422:284;21447:6;21444:1;21441:13;21422:284;;;21523:6;21517:13;21550:63;21609:3;21594:13;21550:63;:::i;:::-;21543:70;;21636:60;21689:6;21636:60;:::i;:::-;21626:70;;21482:224;21469:1;21466;21462:9;21457:14;;21422:284;;;21426:14;21722:3;21715:10;;21123:608;;;20999:732;;;;:::o;21737:831::-;22000:4;22038:3;22027:9;22023:19;22015:27;;22052:71;22120:1;22109:9;22105:17;22096:6;22052:71;:::i;:::-;22133:80;22209:2;22198:9;22194:18;22185:6;22133:80;:::i;:::-;22260:9;22254:4;22250:20;22245:2;22234:9;22230:18;22223:48;22288:108;22391:4;22382:6;22288:108;:::i;:::-;22280:116;;22406:72;22474:2;22463:9;22459:18;22450:6;22406:72;:::i;:::-;22488:73;22556:3;22545:9;22541:19;22532:6;22488:73;:::i;:::-;21737:831;;;;;;;;:::o;22574:147::-;22675:11;22712:3;22697:18;;22574:147;;;;:::o;22727:114::-;;:::o;22847:398::-;23006:3;23027:83;23108:1;23103:3;23027:83;:::i;:::-;23020:90;;23119:93;23208:3;23119:93;:::i;:::-;23237:1;23232:3;23228:11;23221:18;;22847:398;;;:::o;23251:379::-;23435:3;23457:147;23600:3;23457:147;:::i;:::-;23450:154;;23621:3;23614:10;;23251:379;;;:::o;23636:177::-;23776:29;23772:1;23764:6;23760:14;23753:53;23636:177;:::o;23819:366::-;23961:3;23982:67;24046:2;24041:3;23982:67;:::i;:::-;23975:74;;24058:93;24147:3;24058:93;:::i;:::-;24176:2;24171:3;24167:12;24160:19;;23819:366;;;:::o;24191:419::-;24357:4;24395:2;24384:9;24380:18;24372:26;;24444:9;24438:4;24434:20;24430:1;24419:9;24415:17;24408:47;24472:131;24598:4;24472:131;:::i;:::-;24464:139;;24191:419;;;:::o

Swarm Source

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