ETH Price: $3,290.17 (-10.55%)

Token

CloudMind AI (CMND)
 

Overview

Max Total Supply

100,000,000 CMND

Holders

334

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 CMND

Value
$0.00
0x1b00a5b2d841d65e65a32394513c7f74cde12585
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:
CloudMindAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-07
*/

/**
* CloudMind AI - The Evolution of Cloud Computing 🧠
* CloudMind AI plays a pivotal role in bridging the gap between traditional cloud computing and the distinctive requirements of the Web3 era
* Leveraging the power of AI and machine learning, CloudMind AI enhances efficiency and security, ensuring seamless integration and operation within the evolving digital landscape
* 
* Website: https://cloudmindai.io
* TG: https://t.me/CloudMindAI
* X: https://x.com/CloudMindAI
* Dapp: https://dapp.cloudmindai.io
* Docs: https://docs.cloudmindai.io
*/

// SPDX-License-Identifier: Unlicensed

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

pragma solidity ^0.8.18;

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

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

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

contract CloudMindAI is
    Context,
    IERC20,
    Ownable
{
    address payable private _collectorAddress =
        payable(0xD9d97B98cA05E373E1E3d580c892D3d867bfBaD6);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private _allowDexTrading;
    bool private allowNestedSwap = true;
    bool private inSwap = false;

    uint8 private constant _dec = 9;
    string private constant _name = "CloudMind AI";
    string private constant _symbol = "CMND";

    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _totalSupply = 100_000_000 * 10**9;
    uint256 private _mirroredTotalSupply = (MAX - (MAX % _totalSupply));

    uint256 private _taxFeeOnBuy = 5;
    uint256 private _taxFeeOnSell = 5;

    uint256 public _maxTxAmount = 1_000_000 * 10**9;
    uint256 public _maxWalletAmount = 2_000_000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    using SafeMath for uint256;

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

    uint256 private _distrFeeOnBuy = 0;
    uint256 private _distrFeeOnSell = 0;

    uint256 private _tFeeTotal;

    uint256 private _previousDistrFee = _distrFee;
    uint256 private _previoustaxFee = _taxFee;

    uint256 private _distrFee = _distrFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

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

    constructor() {
        _balances[_msgSender()] = _mirroredTotalSupply;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_collectorAddress] = true;

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

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

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

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

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

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

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

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

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

    function storeFee() private {
        if (_distrFee == 0 && _taxFee == 0) return;

        _previousDistrFee = _distrFee;
        _previoustaxFee = _taxFee;

        _distrFee = 0;
        _taxFee = 0;
    }

    function loadFee() private {
        _distrFee = _previousDistrFee;
        _taxFee = _previoustaxFee;
    }

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _mirroredTotalSupply,
            "Amount has to be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _updateReflectedFees(uint256 rFee, uint256 tFee) private {
        _mirroredTotalSupply = _mirroredTotalSupply.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!_allowDexTrading) {
                require(
                    from == owner(),
                    "Only owner can trade before trading activation"
                );
            }

            require(amount <= _maxTxAmount, "Exceeded max transaction limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletAmount,
                    "Exceeds max wallet balance"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                allowNestedSwap &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendFeeToCollector(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            //Set Fee for Buys
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _distrFee = _distrFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _distrFee = _distrFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function forceSwap() external {
        require(_msgSender() == _collectorAddress);
        uint256 b = balanceOf(address(this));
        swapTokensForEth(b);
    }

    function _transferWithFees(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getFeeValues(tAmount);
        _balances[sender] = _balances[sender].sub(rAmount);
        _balances[recipient] = _balances[recipient].add(rTransferAmount);
        _transferFeeDev(tTeam);
        _updateReflectedFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        return (_mirroredTotalSupply, _totalSupply);
    }

    function _transferFeeDev(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _balances[address(this)] = _balances[address(this)].add(rTeam);
    }

    receive() external payable {}

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) storeFee();
        _transferWithFees(sender, recipient, amount);
        if (!takeFee) loadFee();
    }

    function _getFeeValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _distrFee,
            _taxFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 distrFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(distrFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

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

    function toggleAllowNestedSwap(bool _allowNestedSwap) public onlyOwner {
        allowNestedSwap = _allowNestedSwap;
    }

    function setFees(uint256 taxFeeOnBuy, uint256 taxFeeOnSell)
        public
        onlyOwner
    {
        require(
            taxFeeOnBuy >= 0 && taxFeeOnBuy <= 30,
            "Buy tax must be between 0% and 30%"
        );
        require(
            taxFeeOnSell >= 0 && taxFeeOnSell <= 30,
            "Sell tax must be between 0% and 30%"
        );

        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function sendFeeToCollector(uint256 amount) private {
        _collectorAddress.transfer(amount);
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) public onlyOwner {
        _maxWalletAmount = maxWalletAmount;
    }

    function setAllowTrading(bool __allowDexTrading) public onlyOwner {
        _allowDexTrading = __allowDexTrading;
    }

    function sendStuckETH() external {
        require(_msgSender() == _collectorAddress);

        uint256 b = address(this).balance;

        sendFeeToCollector(b);
    }
}

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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"__allowDexTrading","type":"bool"}],"name":"setAllowTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_allowNestedSwap","type":"bool"}],"name":"toggleAllowNestedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273d9d97b98ca05e373e1e3d580c892d3d867bfbad6600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460156101000a81548160ff0219169083151502179055506000600460166101000a81548160ff02191690831515021790555067016345785d8a0000600019620000a791906200063f565b600019620000b69190620006a6565b6005556005600655600560075566038d7ea4c6800060085566071afd498d000060095564e8d4a51000600a556000600e556000600f55601354601155601454601255600f546013556007546014553480156200011157600080fd5b50600062000124620005d560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600554600d6000620001d9620005d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e391906200074b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037191906200074b565b6040518363ffffffff1660e01b8152600401620003909291906200078e565b6020604051808303816000875af1158015620003b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d691906200074b565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000484620005dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200055f620005d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620005c69190620007cc565b60405180910390a350620007e9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200064c8262000606565b9150620006598362000606565b9250826200066c576200066b62000610565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006b38262000606565b9150620006c08362000606565b9250828203905081811115620006db57620006da62000677565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200071382620006e6565b9050919050565b620007258162000706565b81146200073157600080fd5b50565b60008151905062000745816200071a565b92915050565b600060208284031215620007645762000763620006e1565b5b6000620007748482850162000734565b91505092915050565b620007888162000706565b82525050565b6000604082019050620007a560008301856200077d565b620007b460208301846200077d565b9392505050565b620007c68162000606565b82525050565b6000602082019050620007e36000830184620007bb565b92915050565b6136e780620007f96000396000f3fe6080604052600436106101855760003560e01c806374010ece116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e14610557578063df778d2614610594578063eceebc3f146105ab578063f2fde38b146105d45761018c565b8063a9059cbb146104da578063b3bdd81e14610517578063c492f0461461052e5761018c565b806374010ece146103de5780637d1db4a514610407578063894cf0c0146104325780638da5cb5b1461045b57806395d89b411461048657806398a5c315146104b15761018c565b806327a14fc21161013e57806349bd5a5e1161011857806349bd5a5e146103345780636c0a24eb1461035f57806370a082311461038a578063715018a6146103c75761018c565b806327a14fc2146102b55780632fd689e3146102de578063313ce567146103095761018c565b806306fdde0314610191578063095ea7b3146101bc5780630b78f9c0146101f95780631694505e1461022257806318160ddd1461024d57806323b872dd146102785761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b3919061275a565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de919061281a565b61063a565b6040516101f09190612875565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612890565b610658565b005b34801561022e57600080fd5b506102376107a1565b604051610244919061292f565b60405180910390f35b34801561025957600080fd5b506102626107c7565b60405161026f9190612959565b60405180910390f35b34801561028457600080fd5b5061029f600480360381019061029a9190612974565b6107d7565b6040516102ac9190612875565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d791906129c7565b6108b0565b005b3480156102ea57600080fd5b506102f361094f565b6040516103009190612959565b60405180910390f35b34801561031557600080fd5b5061031e610955565b60405161032b9190612a10565b60405180910390f35b34801561034057600080fd5b5061034961095e565b6040516103569190612a3a565b60405180910390f35b34801561036b57600080fd5b50610374610984565b6040516103819190612959565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac9190612a55565b61098a565b6040516103be9190612959565b60405180910390f35b3480156103d357600080fd5b506103dc6109db565b005b3480156103ea57600080fd5b50610405600480360381019061040091906129c7565b610b2e565b005b34801561041357600080fd5b5061041c610bcd565b6040516104299190612959565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612aae565b610bd3565b005b34801561046757600080fd5b50610470610c85565b60405161047d9190612a3a565b60405180910390f35b34801561049257600080fd5b5061049b610cae565b6040516104a8919061275a565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d391906129c7565b610ceb565b005b3480156104e657600080fd5b5061050160048036038101906104fc919061281a565b610d8a565b60405161050e9190612875565b60405180910390f35b34801561052357600080fd5b5061052c610da8565b005b34801561053a57600080fd5b5061055560048036038101906105509190612b40565b610e1a565b005b34801561056357600080fd5b5061057e60048036038101906105799190612ba0565b610f54565b60405161058b9190612959565b60405180910390f35b3480156105a057600080fd5b506105a9610fdb565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190612aae565b611055565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612a55565b611107565b005b60606040518060400160405280600c81526020017f436c6f75644d696e642041490000000000000000000000000000000000000000815250905090565b600061064e6106476112c8565b84846112d0565b6001905092915050565b6106606112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e490612c2c565b60405180910390fd5b600082101580156106ff5750601e8211155b61073e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073590612cbe565b60405180910390fd5b600081101580156107505750601e8111155b61078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690612d50565b60405180910390fd5b81600681905550806007819055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006107e4848484611499565b6108a5846107f06112c8565b6108a08560405180606001604052806025815260200161368d60259139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108566112c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3b9092919063ffffffff16565b6112d0565b600190509392505050565b6108b86112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c90612c2c565b60405180910390fd5b8060098190555050565b600a5481565b60006009905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60006109d4600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9f565b9050919050565b6109e36112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790612c2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b366112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90612c2c565b60405180910390fd5b8060088190555050565b60085481565b610bdb6112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612c2c565b60405180910390fd5b80600460156101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f434d4e4400000000000000000000000000000000000000000000000000000000815250905090565b610cf36112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612c2c565b60405180910390fd5b80600a8190555050565b6000610d9e610d976112c8565b8484611499565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610de96112c8565b73ffffffffffffffffffffffffffffffffffffffff1614610e0957600080fd5b6000479050610e1781611d0d565b50565b610e226112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690612c2c565b60405180910390fd5b60005b83839050811015610f4e5781600c6000868685818110610ed557610ed4612d70565b5b9050602002016020810190610eea9190612a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f4690612dce565b915050610eb2565b50505050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661101c6112c8565b73ffffffffffffffffffffffffffffffffffffffff161461103c57600080fd5b60006110473061098a565b905061105281611d79565b50565b61105d6112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e190612c2c565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b61110f6112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390612c2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612e88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612ef4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a590612f60565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161148c9190612959565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90612fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90613038565b60405180910390fd5b600081116115ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b1906130a4565b60405180910390fd5b6115c2610c85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116305750611600610c85565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561193a57600460149054906101000a900460ff166116bf57611651610c85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b590613136565b60405180910390fd5b5b600854811115611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb906131a2565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117b157600954816117668461098a565b61177091906131c2565b106117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a790613242565b60405180910390fd5b5b60006117bc3061098a565b90506000600a54821015905060085482106117d75760085491505b8080156117f15750600460169054906101000a900460ff16155b801561184b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118635750600460159054906101000a900460ff165b80156118b95750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561190f5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119375761191d82611d79565b600047905060008111156119355761193447611d0d565b5b505b50505b600060019050600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119e15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a945750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a935750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611aa25760009050611c29565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b4d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b6557600e546013819055506006546014819055505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c105750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c2857600f546013819055506007546014819055505b5b611c3584848484611ff2565b50505050565b6000838311158290611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a919061275a565b60405180910390fd5b5060008385611c929190613262565b9050809150509392505050565b6000600554821115611ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdd90613308565b60405180910390fd5b6000611cf061201f565b9050611d05818461204a90919063ffffffff16565b915050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d75573d6000803e3d6000fd5b5050565b6001600460166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611db157611db0613328565b5b604051908082528060200260200182016040528015611ddf5781602001602082028036833780820191505090505b5090503081600081518110611df757611df6612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec2919061336c565b81600181518110611ed657611ed5612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f3d30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112d0565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fa1959493929190613492565b600060405180830381600087803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b50505050506000600460166101000a81548160ff02191690831515021790555050565b8061200057611fff612094565b5b61200b8484846120d1565b806120195761201861229c565b5b50505050565b600080600061202c6122b0565b91509150612043818361204a90919063ffffffff16565b9250505090565b600061208c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122c7565b905092915050565b60006013541480156120a857506000601454145b6120cf57601354601181905550601454601281905550600060138190555060006014819055505b565b6000806000806000806120e38761232a565b95509550955095509550955061214186600d60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461239290919063ffffffff16565b600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121d685600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123dc90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122228161243a565b61222c84836124f7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122899190612959565b60405180910390a3505050505050505050565b601154601381905550601254601481905550565b60008060055467016345785d8a0000915091509091565b6000808311829061230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305919061275a565b60405180910390fd5b506000838561231d919061351b565b9050809150509392505050565b60008060008060008060008060006123478a601354601454612531565b925092509250600061235761201f565b9050600080600061236a8e8787876125c7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c3b565b905092915050565b60008082846123eb91906131c2565b905083811015612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242790613598565b60405180910390fd5b8091505092915050565b600061244461201f565b9050600061245b828461265090919063ffffffff16565b90506124af81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123dc90919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61250c8260055461239290919063ffffffff16565b600581905550612527816010546123dc90919063ffffffff16565b6010819055505050565b60008060008061255d606461254f888a61265090919063ffffffff16565b61204a90919063ffffffff16565b905060006125876064612579888b61265090919063ffffffff16565b61204a90919063ffffffff16565b905060006125b0826125a2858c61239290919063ffffffff16565b61239290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125e0858961265090919063ffffffff16565b905060006125f7868961265090919063ffffffff16565b9050600061260e878961265090919063ffffffff16565b9050600061263782612629858761239290919063ffffffff16565b61239290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361266257600090506126c4565b6000828461267091906135b8565b905082848261267f919061351b565b146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061366c565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127045780820151818401526020810190506126e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061272c826126ca565b61273681856126d5565b93506127468185602086016126e6565b61274f81612710565b840191505092915050565b600060208201905081810360008301526127748184612721565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127b182612786565b9050919050565b6127c1816127a6565b81146127cc57600080fd5b50565b6000813590506127de816127b8565b92915050565b6000819050919050565b6127f7816127e4565b811461280257600080fd5b50565b600081359050612814816127ee565b92915050565b600080604083850312156128315761283061277c565b5b600061283f858286016127cf565b925050602061285085828601612805565b9150509250929050565b60008115159050919050565b61286f8161285a565b82525050565b600060208201905061288a6000830184612866565b92915050565b600080604083850312156128a7576128a661277c565b5b60006128b585828601612805565b92505060206128c685828601612805565b9150509250929050565b6000819050919050565b60006128f56128f06128eb84612786565b6128d0565b612786565b9050919050565b6000612907826128da565b9050919050565b6000612919826128fc565b9050919050565b6129298161290e565b82525050565b60006020820190506129446000830184612920565b92915050565b612953816127e4565b82525050565b600060208201905061296e600083018461294a565b92915050565b60008060006060848603121561298d5761298c61277c565b5b600061299b868287016127cf565b93505060206129ac868287016127cf565b92505060406129bd86828701612805565b9150509250925092565b6000602082840312156129dd576129dc61277c565b5b60006129eb84828501612805565b91505092915050565b600060ff82169050919050565b612a0a816129f4565b82525050565b6000602082019050612a256000830184612a01565b92915050565b612a34816127a6565b82525050565b6000602082019050612a4f6000830184612a2b565b92915050565b600060208284031215612a6b57612a6a61277c565b5b6000612a79848285016127cf565b91505092915050565b612a8b8161285a565b8114612a9657600080fd5b50565b600081359050612aa881612a82565b92915050565b600060208284031215612ac457612ac361277c565b5b6000612ad284828501612a99565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b0057612aff612adb565b5b8235905067ffffffffffffffff811115612b1d57612b1c612ae0565b5b602083019150836020820283011115612b3957612b38612ae5565b5b9250929050565b600080600060408486031215612b5957612b5861277c565b5b600084013567ffffffffffffffff811115612b7757612b76612781565b5b612b8386828701612aea565b93509350506020612b9686828701612a99565b9150509250925092565b60008060408385031215612bb757612bb661277c565b5b6000612bc5858286016127cf565b9250506020612bd6858286016127cf565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c166020836126d5565b9150612c2182612be0565b602082019050919050565b60006020820190508181036000830152612c4581612c09565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203360008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ca86022836126d5565b9150612cb382612c4c565b604082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3330250000000000000000000000000000000000000000000000000000000000602082015250565b6000612d3a6023836126d5565b9150612d4582612cde565b604082019050919050565b60006020820190508181036000830152612d6981612d2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dd9826127e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e0b57612e0a612d9f565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e726026836126d5565b9150612e7d82612e16565b604082019050919050565b60006020820190508181036000830152612ea181612e65565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000612ede601f836126d5565b9150612ee982612ea8565b602082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b6000612f4a601d836126d5565b9150612f5582612f14565b602082019050919050565b60006020820190508181036000830152612f7981612f3d565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000612fb6601f836126d5565b9150612fc182612f80565b602082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b6000613022601d836126d5565b915061302d82612fec565b602082019050919050565b6000602082019050818103600083015261305181613015565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b600061308e601b836126d5565b915061309982613058565b602082019050919050565b600060208201905081810360008301526130bd81613081565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613120602e836126d5565b915061312b826130c4565b604082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b600061318c601e836126d5565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b60006131cd826127e4565b91506131d8836127e4565b92508282019050808211156131f0576131ef612d9f565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b600061322c601a836126d5565b9150613237826131f6565b602082019050919050565b6000602082019050818103600083015261325b8161321f565b9050919050565b600061326d826127e4565b9150613278836127e4565b92508282039050818111156132905761328f612d9f565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b60006132f2602c836126d5565b91506132fd82613296565b604082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613366816127b8565b92915050565b6000602082840312156133825761338161277c565b5b600061339084828501613357565b91505092915050565b6000819050919050565b60006133be6133b96133b484613399565b6128d0565b6127e4565b9050919050565b6133ce816133a3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613409816127a6565b82525050565b600061341b8383613400565b60208301905092915050565b6000602082019050919050565b600061343f826133d4565b61344981856133df565b9350613454836133f0565b8060005b8381101561348557815161346c888261340f565b975061347783613427565b925050600181019050613458565b5085935050505092915050565b600060a0820190506134a7600083018861294a565b6134b460208301876133c5565b81810360408301526134c68186613434565b90506134d56060830185612a2b565b6134e2608083018461294a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613526826127e4565b9150613531836127e4565b925082613541576135406134ec565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613582601b836126d5565b915061358d8261354c565b602082019050919050565b600060208201905081810360008301526135b181613575565b9050919050565b60006135c3826127e4565b91506135ce836127e4565b92508282026135dc816127e4565b915082820484148315176135f3576135f2612d9f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136566021836126d5565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dbb2b93e1f7b26f7e7bcc0fd91ec16d3be797c289c5366c0bd8077c46f503e6464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806374010ece116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e14610557578063df778d2614610594578063eceebc3f146105ab578063f2fde38b146105d45761018c565b8063a9059cbb146104da578063b3bdd81e14610517578063c492f0461461052e5761018c565b806374010ece146103de5780637d1db4a514610407578063894cf0c0146104325780638da5cb5b1461045b57806395d89b411461048657806398a5c315146104b15761018c565b806327a14fc21161013e57806349bd5a5e1161011857806349bd5a5e146103345780636c0a24eb1461035f57806370a082311461038a578063715018a6146103c75761018c565b806327a14fc2146102b55780632fd689e3146102de578063313ce567146103095761018c565b806306fdde0314610191578063095ea7b3146101bc5780630b78f9c0146101f95780631694505e1461022257806318160ddd1461024d57806323b872dd146102785761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b3919061275a565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de919061281a565b61063a565b6040516101f09190612875565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612890565b610658565b005b34801561022e57600080fd5b506102376107a1565b604051610244919061292f565b60405180910390f35b34801561025957600080fd5b506102626107c7565b60405161026f9190612959565b60405180910390f35b34801561028457600080fd5b5061029f600480360381019061029a9190612974565b6107d7565b6040516102ac9190612875565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d791906129c7565b6108b0565b005b3480156102ea57600080fd5b506102f361094f565b6040516103009190612959565b60405180910390f35b34801561031557600080fd5b5061031e610955565b60405161032b9190612a10565b60405180910390f35b34801561034057600080fd5b5061034961095e565b6040516103569190612a3a565b60405180910390f35b34801561036b57600080fd5b50610374610984565b6040516103819190612959565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac9190612a55565b61098a565b6040516103be9190612959565b60405180910390f35b3480156103d357600080fd5b506103dc6109db565b005b3480156103ea57600080fd5b50610405600480360381019061040091906129c7565b610b2e565b005b34801561041357600080fd5b5061041c610bcd565b6040516104299190612959565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612aae565b610bd3565b005b34801561046757600080fd5b50610470610c85565b60405161047d9190612a3a565b60405180910390f35b34801561049257600080fd5b5061049b610cae565b6040516104a8919061275a565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d391906129c7565b610ceb565b005b3480156104e657600080fd5b5061050160048036038101906104fc919061281a565b610d8a565b60405161050e9190612875565b60405180910390f35b34801561052357600080fd5b5061052c610da8565b005b34801561053a57600080fd5b5061055560048036038101906105509190612b40565b610e1a565b005b34801561056357600080fd5b5061057e60048036038101906105799190612ba0565b610f54565b60405161058b9190612959565b60405180910390f35b3480156105a057600080fd5b506105a9610fdb565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190612aae565b611055565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612a55565b611107565b005b60606040518060400160405280600c81526020017f436c6f75644d696e642041490000000000000000000000000000000000000000815250905090565b600061064e6106476112c8565b84846112d0565b6001905092915050565b6106606112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e490612c2c565b60405180910390fd5b600082101580156106ff5750601e8211155b61073e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073590612cbe565b60405180910390fd5b600081101580156107505750601e8111155b61078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690612d50565b60405180910390fd5b81600681905550806007819055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006107e4848484611499565b6108a5846107f06112c8565b6108a08560405180606001604052806025815260200161368d60259139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108566112c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3b9092919063ffffffff16565b6112d0565b600190509392505050565b6108b86112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c90612c2c565b60405180910390fd5b8060098190555050565b600a5481565b60006009905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60006109d4600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9f565b9050919050565b6109e36112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790612c2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b366112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90612c2c565b60405180910390fd5b8060088190555050565b60085481565b610bdb6112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612c2c565b60405180910390fd5b80600460156101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f434d4e4400000000000000000000000000000000000000000000000000000000815250905090565b610cf36112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612c2c565b60405180910390fd5b80600a8190555050565b6000610d9e610d976112c8565b8484611499565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610de96112c8565b73ffffffffffffffffffffffffffffffffffffffff1614610e0957600080fd5b6000479050610e1781611d0d565b50565b610e226112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690612c2c565b60405180910390fd5b60005b83839050811015610f4e5781600c6000868685818110610ed557610ed4612d70565b5b9050602002016020810190610eea9190612a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f4690612dce565b915050610eb2565b50505050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661101c6112c8565b73ffffffffffffffffffffffffffffffffffffffff161461103c57600080fd5b60006110473061098a565b905061105281611d79565b50565b61105d6112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e190612c2c565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b61110f6112c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390612c2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612e88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612ef4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a590612f60565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161148c9190612959565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90612fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90613038565b60405180910390fd5b600081116115ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b1906130a4565b60405180910390fd5b6115c2610c85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116305750611600610c85565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561193a57600460149054906101000a900460ff166116bf57611651610c85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b590613136565b60405180910390fd5b5b600854811115611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb906131a2565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117b157600954816117668461098a565b61177091906131c2565b106117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a790613242565b60405180910390fd5b5b60006117bc3061098a565b90506000600a54821015905060085482106117d75760085491505b8080156117f15750600460169054906101000a900460ff16155b801561184b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118635750600460159054906101000a900460ff165b80156118b95750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561190f5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119375761191d82611d79565b600047905060008111156119355761193447611d0d565b5b505b50505b600060019050600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119e15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a945750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a935750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611aa25760009050611c29565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b4d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b6557600e546013819055506006546014819055505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c105750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c2857600f546013819055506007546014819055505b5b611c3584848484611ff2565b50505050565b6000838311158290611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a919061275a565b60405180910390fd5b5060008385611c929190613262565b9050809150509392505050565b6000600554821115611ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdd90613308565b60405180910390fd5b6000611cf061201f565b9050611d05818461204a90919063ffffffff16565b915050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d75573d6000803e3d6000fd5b5050565b6001600460166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611db157611db0613328565b5b604051908082528060200260200182016040528015611ddf5781602001602082028036833780820191505090505b5090503081600081518110611df757611df6612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec2919061336c565b81600181518110611ed657611ed5612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f3d30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112d0565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fa1959493929190613492565b600060405180830381600087803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b50505050506000600460166101000a81548160ff02191690831515021790555050565b8061200057611fff612094565b5b61200b8484846120d1565b806120195761201861229c565b5b50505050565b600080600061202c6122b0565b91509150612043818361204a90919063ffffffff16565b9250505090565b600061208c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122c7565b905092915050565b60006013541480156120a857506000601454145b6120cf57601354601181905550601454601281905550600060138190555060006014819055505b565b6000806000806000806120e38761232a565b95509550955095509550955061214186600d60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461239290919063ffffffff16565b600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121d685600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123dc90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122228161243a565b61222c84836124f7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122899190612959565b60405180910390a3505050505050505050565b601154601381905550601254601481905550565b60008060055467016345785d8a0000915091509091565b6000808311829061230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305919061275a565b60405180910390fd5b506000838561231d919061351b565b9050809150509392505050565b60008060008060008060008060006123478a601354601454612531565b925092509250600061235761201f565b9050600080600061236a8e8787876125c7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c3b565b905092915050565b60008082846123eb91906131c2565b905083811015612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242790613598565b60405180910390fd5b8091505092915050565b600061244461201f565b9050600061245b828461265090919063ffffffff16565b90506124af81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123dc90919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61250c8260055461239290919063ffffffff16565b600581905550612527816010546123dc90919063ffffffff16565b6010819055505050565b60008060008061255d606461254f888a61265090919063ffffffff16565b61204a90919063ffffffff16565b905060006125876064612579888b61265090919063ffffffff16565b61204a90919063ffffffff16565b905060006125b0826125a2858c61239290919063ffffffff16565b61239290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125e0858961265090919063ffffffff16565b905060006125f7868961265090919063ffffffff16565b9050600061260e878961265090919063ffffffff16565b9050600061263782612629858761239290919063ffffffff16565b61239290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361266257600090506126c4565b6000828461267091906135b8565b905082848261267f919061351b565b146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061366c565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127045780820151818401526020810190506126e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061272c826126ca565b61273681856126d5565b93506127468185602086016126e6565b61274f81612710565b840191505092915050565b600060208201905081810360008301526127748184612721565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127b182612786565b9050919050565b6127c1816127a6565b81146127cc57600080fd5b50565b6000813590506127de816127b8565b92915050565b6000819050919050565b6127f7816127e4565b811461280257600080fd5b50565b600081359050612814816127ee565b92915050565b600080604083850312156128315761283061277c565b5b600061283f858286016127cf565b925050602061285085828601612805565b9150509250929050565b60008115159050919050565b61286f8161285a565b82525050565b600060208201905061288a6000830184612866565b92915050565b600080604083850312156128a7576128a661277c565b5b60006128b585828601612805565b92505060206128c685828601612805565b9150509250929050565b6000819050919050565b60006128f56128f06128eb84612786565b6128d0565b612786565b9050919050565b6000612907826128da565b9050919050565b6000612919826128fc565b9050919050565b6129298161290e565b82525050565b60006020820190506129446000830184612920565b92915050565b612953816127e4565b82525050565b600060208201905061296e600083018461294a565b92915050565b60008060006060848603121561298d5761298c61277c565b5b600061299b868287016127cf565b93505060206129ac868287016127cf565b92505060406129bd86828701612805565b9150509250925092565b6000602082840312156129dd576129dc61277c565b5b60006129eb84828501612805565b91505092915050565b600060ff82169050919050565b612a0a816129f4565b82525050565b6000602082019050612a256000830184612a01565b92915050565b612a34816127a6565b82525050565b6000602082019050612a4f6000830184612a2b565b92915050565b600060208284031215612a6b57612a6a61277c565b5b6000612a79848285016127cf565b91505092915050565b612a8b8161285a565b8114612a9657600080fd5b50565b600081359050612aa881612a82565b92915050565b600060208284031215612ac457612ac361277c565b5b6000612ad284828501612a99565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b0057612aff612adb565b5b8235905067ffffffffffffffff811115612b1d57612b1c612ae0565b5b602083019150836020820283011115612b3957612b38612ae5565b5b9250929050565b600080600060408486031215612b5957612b5861277c565b5b600084013567ffffffffffffffff811115612b7757612b76612781565b5b612b8386828701612aea565b93509350506020612b9686828701612a99565b9150509250925092565b60008060408385031215612bb757612bb661277c565b5b6000612bc5858286016127cf565b9250506020612bd6858286016127cf565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c166020836126d5565b9150612c2182612be0565b602082019050919050565b60006020820190508181036000830152612c4581612c09565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203360008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ca86022836126d5565b9150612cb382612c4c565b604082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3330250000000000000000000000000000000000000000000000000000000000602082015250565b6000612d3a6023836126d5565b9150612d4582612cde565b604082019050919050565b60006020820190508181036000830152612d6981612d2d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dd9826127e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e0b57612e0a612d9f565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e726026836126d5565b9150612e7d82612e16565b604082019050919050565b60006020820190508181036000830152612ea181612e65565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000612ede601f836126d5565b9150612ee982612ea8565b602082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b6000612f4a601d836126d5565b9150612f5582612f14565b602082019050919050565b60006020820190508181036000830152612f7981612f3d565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000612fb6601f836126d5565b9150612fc182612f80565b602082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b6000613022601d836126d5565b915061302d82612fec565b602082019050919050565b6000602082019050818103600083015261305181613015565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b600061308e601b836126d5565b915061309982613058565b602082019050919050565b600060208201905081810360008301526130bd81613081565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613120602e836126d5565b915061312b826130c4565b604082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b600061318c601e836126d5565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b60006131cd826127e4565b91506131d8836127e4565b92508282019050808211156131f0576131ef612d9f565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b600061322c601a836126d5565b9150613237826131f6565b602082019050919050565b6000602082019050818103600083015261325b8161321f565b9050919050565b600061326d826127e4565b9150613278836127e4565b92508282039050818111156132905761328f612d9f565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b60006132f2602c836126d5565b91506132fd82613296565b604082019050919050565b60006020820190508181036000830152613321816132e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613366816127b8565b92915050565b6000602082840312156133825761338161277c565b5b600061339084828501613357565b91505092915050565b6000819050919050565b60006133be6133b96133b484613399565b6128d0565b6127e4565b9050919050565b6133ce816133a3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613409816127a6565b82525050565b600061341b8383613400565b60208301905092915050565b6000602082019050919050565b600061343f826133d4565b61344981856133df565b9350613454836133f0565b8060005b8381101561348557815161346c888261340f565b975061347783613427565b925050600181019050613458565b5085935050505092915050565b600060a0820190506134a7600083018861294a565b6134b460208301876133c5565b81810360408301526134c68186613434565b90506134d56060830185612a2b565b6134e2608083018461294a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613526826127e4565b9150613531836127e4565b925082613541576135406134ec565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613582601b836126d5565b915061358d8261354c565b602082019050919050565b600060208201905081810360008301526135b181613575565b9050919050565b60006135c3826127e4565b91506135ce836127e4565b92508282026135dc816127e4565b915082820484148315176135f3576135f2612d9f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136566021836126d5565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dbb2b93e1f7b26f7e7bcc0fd91ec16d3be797c289c5366c0bd8077c46f503e6464736f6c63430008130033

Deployed Bytecode Sourcemap

4718:13192:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7190:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8440:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16729:453;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4903:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7281:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8848:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17473:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5628:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7009:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4951:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5570:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7389:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4274:148;;;;;;;;;;;;;:::i;:::-;;15499:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5516:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16597:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4060:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7095:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17190:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8641:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17733:174;;;;;;;;;;;;;:::i;:::-;;16157:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7906:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12804:168;;;;;;;;;;;;;:::i;:::-;;17604:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4430:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7190:83;7227:13;7260:5;;;;;;;;;;;;;;;;;7253:12;;7190:83;:::o;8440:193::-;8542:4;8564:39;8573:12;:10;:12::i;:::-;8587:7;8596:6;8564:8;:39::i;:::-;8621:4;8614:11;;8440:193;;;;:::o;16729:453::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16877:1:::1;16862:11;:16;;:37;;;;;16897:2;16882:11;:17;;16862:37;16840:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;17010:1;16994:12;:17;;:39;;;;;17031:2;17015:12;:18;;16994:39;16972:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;17124:11;17109:12;:26;;;;17162:12;17146:13;:28;;;;16729:453:::0;;:::o;4903:41::-;;;;;;;;;;;;;:::o;7281:100::-;7334:7;5333:19;7354;;7281:100;:::o;8848:443::-;8980:4;8997:36;9007:6;9015:9;9026:6;8997:9;:36::i;:::-;9044:217;9067:6;9088:12;:10;:12::i;:::-;9115:135;9171:6;9115:135;;;;;;;;;;;;;;;;;:11;:19;9127:6;9115:19;;;;;;;;;;;;;;;:33;9135:12;:10;:12::i;:::-;9115:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;9044:8;:217::i;:::-;9279:4;9272:11;;8848:443;;;;;:::o;17473:123::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17573:15:::1;17554:16;:34;;;;17473:123:::0;:::o;5628:49::-;;;;:::o;7009:78::-;7050:5;5132:1;7068:11;;7009:78;:::o;4951:28::-;;;;;;;;;;;;;:::o;5570:51::-;;;;:::o;7389:140::-;7455:7;7482:39;7502:9;:18;7512:7;7502:18;;;;;;;;;;;;;;;;7482:19;:39::i;:::-;7475:46;;7389:140;;;:::o;4274:148::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4381:1:::1;4344:40;;4365:6;::::0;::::1;;;;;;;;4344:40;;;;;;;;;;;;4412:1;4395:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4274:148::o:0;15499:108::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15588:11:::1;15573:12;:26;;;;15499:108:::0;:::o;5516:47::-;;;;:::o;16597:124::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16697:16:::1;16679:15;;:34;;;;;;;;;;;;;;;;;;16597:124:::0;:::o;4060:79::-;4098:7;4125:6;;;;;;;;;;;4118:13;;4060:79;:::o;7095:87::-;7134:13;7167:7;;;;;;;;;;;;;;;;;7160:14;;7095:87;:::o;17190:162::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17326:18:::1;17304:19;:40;;;;17190:162:::0;:::o;8641:199::-;8746:4;8768:42;8778:12;:10;:12::i;:::-;8792:9;8803:6;8768:9;:42::i;:::-;8828:4;8821:11;;8641:199;;;;:::o;17733:174::-;17801:17;;;;;;;;;;;17785:33;;:12;:10;:12::i;:::-;:33;;;17777:42;;;;;;17832:9;17844:21;17832:33;;17878:21;17897:1;17878:18;:21::i;:::-;17766:141;17733:174::o;16157:260::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16300:9:::1;16295:115;16319:8;;:15;;16315:1;:19;16295:115;;;16390:8;16356:18;:31;16375:8;;16384:1;16375:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16356:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16336:3;;;;;:::i;:::-;;;;16295:115;;;;16157:260:::0;;;:::o;7906:184::-;8023:7;8055:11;:18;8067:5;8055:18;;;;;;;;;;;;;;;:27;8074:7;8055:27;;;;;;;;;;;;;;;;8048:34;;7906:184;;;;:::o;12804:168::-;12869:17;;;;;;;;;;;12853:33;;:12;:10;:12::i;:::-;:33;;;12845:42;;;;;;12898:9;12910:24;12928:4;12910:9;:24::i;:::-;12898:36;;12945:19;12962:1;12945:16;:19::i;:::-;12834:138;12804:168::o;17604:121::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17700:17:::1;17681:16;;:36;;;;;;;;;;;;;;;;;;17604:121:::0;:::o;4430:281::-;4197:12;:10;:12::i;:::-;4187:22;;:6;;;;;;;;;;:22;;;4179:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4553:1:::1;4533:22;;:8;:22;;::::0;4511:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4666:8;4637:38;;4658:6;::::0;::::1;;;;;;;;4637:38;;;;;;;;;;;;4695:8;4686:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4430:281:::0;:::o;2221:98::-;2274:7;2301:10;2294:17;;2221:98;:::o;7537:361::-;7681:1;7664:19;;:5;:19;;;7656:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7757:1;7738:21;;:7;:21;;;7730:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7836:6;7806:11;:18;7818:5;7806:18;;;;;;;;;;;;;;;:27;7825:7;7806:27;;;;;;;;;;;;;;;:36;;;;7874:7;7858:32;;7867:5;7858:32;;;7883:6;7858:32;;;;;;:::i;:::-;;;;;;;;7537:361;;;:::o;10326:2470::-;10464:1;10448:18;;:4;:18;;;10440:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10535:1;10521:16;;:2;:16;;;10513:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10599:1;10590:6;:10;10582:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10657:7;:5;:7::i;:::-;10649:15;;:4;:15;;;;:32;;;;;10674:7;:5;:7::i;:::-;10668:13;;:2;:13;;;;10649:32;10645:1391;;;10736:16;;;;;;;;;;;10731:193;;10811:7;:5;:7::i;:::-;10803:15;;:4;:15;;;10773:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;10731:193;10958:12;;10948:6;:22;;10940:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11032:13;;;;;;;;;;;11026:19;;:2;:19;;;11022:201;;11121:16;;11112:6;11096:13;11106:2;11096:9;:13::i;:::-;:22;;;;:::i;:::-;:41;11066:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;11022:201;11239:28;11270:24;11288:4;11270:9;:24::i;:::-;11239:55;;11309:12;11348:19;;11324:20;:43;;11309:58;;11412:12;;11388:20;:36;11384:112;;11468:12;;11445:35;;11384:112;11534:7;:35;;;;;11563:6;;;;;;;;;;;11562:7;11534:35;:77;;;;;11598:13;;;;;;;;;;;11590:21;;:4;:21;;;;11534:77;:113;;;;;11632:15;;;;;;;;;;;11534:113;:159;;;;;11669:18;:24;11688:4;11669:24;;;;;;;;;;;;;;;;;;;;;;;;;11668:25;11534:159;:203;;;;;11715:18;:22;11734:2;11715:22;;;;;;;;;;;;;;;;;;;;;;;;;11714:23;11534:203;11512:513;;;11772:38;11789:20;11772:16;:38::i;:::-;11829:26;11858:21;11829:50;;11923:1;11902:18;:22;11898:112;;;11949:41;11968:21;11949:18;:41::i;:::-;11898:112;11753:272;11512:513;10683:1353;;10645:1391;12048:12;12063:4;12048:19;;12126:18;:24;12145:4;12126:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12154:18;:22;12173:2;12154:22;;;;;;;;;;;;;;;;;;;;;;;;;12126:50;12125:115;;;;12203:13;;;;;;;;;;;12195:21;;:4;:21;;;;:44;;;;;12226:13;;;;;;;;;;;12220:19;;:2;:19;;;;12195:44;12125:115;12107:628;;;12277:5;12267:15;;12107:628;;;12359:13;;;;;;;;;;;12351:21;;:4;:21;;;:55;;;;;12390:15;;;;;;;;;;;12376:30;;:2;:30;;;;12351:55;12347:163;;;12439:14;;12427:9;:26;;;;12482:12;;12472:7;:22;;;;12347:163;12569:13;;;;;;;;;;;12563:19;;:2;:19;;;:55;;;;;12602:15;;;;;;;;;;;12586:32;;:4;:32;;;;12563:55;12559:165;;;12651:15;;12639:9;:27;;;;12695:13;;12685:7;:23;;;;12559:165;12107:628;12747:41;12762:4;12768:2;12772:6;12780:7;12747:14;:41::i;:::-;10429:2367;10326:2470;;;:::o;2825:224::-;2945:7;2978:1;2973;:6;;2981:12;2965:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3005:9;3021:1;3017;:5;;;;:::i;:::-;3005:17;;3040:1;3033:8;;;2825:224;;;;;:::o;9299:338::-;9394:7;9452:20;;9441:7;:31;;9419:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;9555:19;9577:10;:8;:10::i;:::-;9555:32;;9605:24;9617:11;9605:7;:11;;:24;;;;:::i;:::-;9598:31;;;9299:338;;;:::o;17360:105::-;17423:17;;;;;;;;;;;:26;;:34;17450:6;17423:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17360:105;:::o;9645:483::-;6325:4;6316:6;;:13;;;;;;;;;;;;;;;;;;9723:21:::1;9761:1;9747:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9723:40;;9792:4;9774;9779:1;9774:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9818:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9808:4;9813:1;9808:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9851:62;9868:4;9883:15;;;;;;;;;;;9901:11;9851:8;:62::i;:::-;9924:15;;;;;;;;;;;:66;;;10005:11;10031:1;10047:4;10074;10094:15;9924:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9712:416;6361:5:::0;6352:6;;:14;;;;;;;;;;;;;;;;;;9645:483;:::o;14029:272::-;14185:7;14180:24;;14194:10;:8;:10::i;:::-;14180:24;14215:44;14233:6;14241:9;14252:6;14215:17;:44::i;:::-;14275:7;14270:23;;14284:9;:7;:9::i;:::-;14270:23;14029:272;;;;:::o;16425:164::-;16467:7;16488:15;16505;16524:19;:17;:19::i;:::-;16487:56;;;;16561:20;16573:7;16561;:11;;:20;;;;:::i;:::-;16554:27;;;;16425:164;:::o;3311:132::-;3369:7;3396:39;3400:1;3403;3396:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3389:46;;3311:132;;;;:::o;8098:215::-;8154:1;8141:9;;:14;:30;;;;;8170:1;8159:7;;:12;8141:30;8173:7;8137:43;8212:9;;8192:17;:29;;;;8250:7;;8232:15;:25;;;;8282:1;8270:9;:13;;;;8304:1;8294:7;:11;;;;8098:215;:::o;12980:636::-;13127:15;13157:23;13195:12;13222:23;13260:12;13287:13;13314:22;13328:7;13314:13;:22::i;:::-;13112:224;;;;;;;;;;;;13367:30;13389:7;13367:9;:17;13377:6;13367:17;;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;13347:9;:17;13357:6;13347:17;;;;;;;;;;;;;;;:50;;;;13431:41;13456:15;13431:9;:20;13441:9;13431:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;13408:9;:20;13418:9;13408:20;;;;;;;;;;;;;;;:64;;;;13483:22;13499:5;13483:15;:22::i;:::-;13516:32;13537:4;13543;13516:20;:32::i;:::-;13581:9;13564:44;;13573:6;13564:44;;;13592:15;13564:44;;;;;;:::i;:::-;;;;;;;;13101:515;;;;;;12980:636;;;:::o;8321:111::-;8371:17;;8359:9;:29;;;;8409:15;;8399:7;:25;;;;8321:111::o;13624:131::-;13675:7;13684;13712:20;;5333:19;13704:43;;;;13624:131;;:::o;3451:223::-;3571:7;3603:1;3599;:5;3606:12;3591:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3630:9;3646:1;3642;:5;;;;:::i;:::-;3630:17;;3665:1;3658:8;;;3451:223;;;;;:::o;14309:705::-;14412:7;14434;14456;14478;14500;14522;14558:23;14583:12;14597:13;14614:90;14640:7;14662:9;;14686:7;;14614:11;:90::i;:::-;14557:147;;;;;;14715:19;14737:10;:8;:10::i;:::-;14715:32;;14759:15;14776:23;14801:12;14817:109;14843:7;14865:4;14884:5;14904:11;14817;:109::i;:::-;14758:168;;;;;;14945:7;14954:15;14971:4;14977:15;14994:4;15000:5;14937:69;;;;;;;;;;;;;;;;;;;14309:705;;;;;;;:::o;2681:136::-;2739:7;2766:43;2770:1;2773;2766:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2759:50;;2681:136;;;;:::o;2494:179::-;2552:7;2572:9;2588:1;2584;:5;;;;:::i;:::-;2572:17;;2613:1;2608;:6;;2600:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2664:1;2657:8;;;2494:179;;;;:::o;13763:221::-;13822:19;13844:10;:8;:10::i;:::-;13822:32;;13865:13;13881:22;13891:11;13881:5;:9;;:22;;;;:::i;:::-;13865:38;;13941:35;13970:5;13941:9;:24;13959:4;13941:24;;;;;;;;;;;;;;;;:28;;:35;;;;:::i;:::-;13914:9;:24;13932:4;13914:24;;;;;;;;;;;;;;;:62;;;;13811:173;;13763:221;:::o;10136:182::-;10236:30;10261:4;10236:20;;:24;;:30;;;;:::i;:::-;10213:20;:53;;;;10290:20;10305:4;10290:10;;:14;;:20;;;;:::i;:::-;10277:10;:33;;;;10136:182;;:::o;15022:469::-;15191:7;15213;15235;15270:12;15285:30;15311:3;15285:21;15297:8;15285:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15270:45;;15326:13;15342:28;15366:3;15342:19;15354:6;15342:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15326:44;;15381:23;15407:28;15429:5;15407:17;15419:4;15407:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15381:54;;15454:15;15471:4;15477:5;15446:37;;;;;;;;;15022:469;;;;;;;:::o;15615:534::-;15809:7;15831;15853;15888:15;15906:24;15918:11;15906:7;:11;;:24;;;;:::i;:::-;15888:42;;15941:12;15956:21;15965:11;15956:4;:8;;:21;;;;:::i;:::-;15941:36;;15988:13;16004:22;16014:11;16004:5;:9;;:22;;;;:::i;:::-;15988:38;;16037:23;16063:28;16085:5;16063:17;16075:4;16063:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16037:54;;16110:7;16119:15;16136:4;16102:39;;;;;;;;;;15615:534;;;;;;;;:::o;3057:246::-;3115:7;3144:1;3139;:6;3135:47;;3169:1;3162:8;;;;3135:47;3192:9;3208:1;3204;:5;;;;:::i;:::-;3192:17;;3237:1;3232;3228;:5;;;;:::i;:::-;:10;3220:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3294:1;3287:8;;;3057:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:152::-;4348:9;4381:37;4412:5;4381:37;:::i;:::-;4368:50;;4272:152;;;:::o;4430:183::-;4543:63;4600:5;4543:63;:::i;:::-;4538:3;4531:76;4430:183;;:::o;4619:274::-;4738:4;4776:2;4765:9;4761:18;4753:26;;4789:97;4883:1;4872:9;4868:17;4859:6;4789:97;:::i;:::-;4619:274;;;;:::o;4899:118::-;4986:24;5004:5;4986:24;:::i;:::-;4981:3;4974:37;4899:118;;:::o;5023:222::-;5116:4;5154:2;5143:9;5139:18;5131:26;;5167:71;5235:1;5224:9;5220:17;5211:6;5167:71;:::i;:::-;5023:222;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:329::-;5935:6;5984:2;5972:9;5963:7;5959:23;5955:32;5952:119;;;5990:79;;:::i;:::-;5952:119;6110:1;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6081:117;5876:329;;;;:::o;6211:86::-;6246:7;6286:4;6279:5;6275:16;6264:27;;6211:86;;;:::o;6303:112::-;6386:22;6402:5;6386:22;:::i;:::-;6381:3;6374:35;6303:112;;:::o;6421:214::-;6510:4;6548:2;6537:9;6533:18;6525:26;;6561:67;6625:1;6614:9;6610:17;6601:6;6561:67;:::i;:::-;6421:214;;;;:::o;6641:118::-;6728:24;6746:5;6728:24;:::i;:::-;6723:3;6716:37;6641:118;;:::o;6765:222::-;6858:4;6896:2;6885:9;6881:18;6873:26;;6909:71;6977:1;6966:9;6962:17;6953:6;6909:71;:::i;:::-;6765:222;;;;:::o;6993:329::-;7052:6;7101:2;7089:9;7080:7;7076:23;7072:32;7069:119;;;7107:79;;:::i;:::-;7069:119;7227:1;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7198:117;6993:329;;;;:::o;7328:116::-;7398:21;7413:5;7398:21;:::i;:::-;7391:5;7388:32;7378:60;;7434:1;7431;7424:12;7378:60;7328:116;:::o;7450:133::-;7493:5;7531:6;7518:20;7509:29;;7547:30;7571:5;7547:30;:::i;:::-;7450:133;;;;:::o;7589:323::-;7645:6;7694:2;7682:9;7673:7;7669:23;7665:32;7662:119;;;7700:79;;:::i;:::-;7662:119;7820:1;7845:50;7887:7;7878:6;7867:9;7863:22;7845:50;:::i;:::-;7835:60;;7791:114;7589:323;;;;:::o;7918:117::-;8027:1;8024;8017:12;8041:117;8150:1;8147;8140:12;8164:117;8273:1;8270;8263:12;8304:568;8377:8;8387:6;8437:3;8430:4;8422:6;8418:17;8414:27;8404:122;;8445:79;;:::i;:::-;8404:122;8558:6;8545:20;8535:30;;8588:18;8580:6;8577:30;8574:117;;;8610:79;;:::i;:::-;8574:117;8724:4;8716:6;8712:17;8700:29;;8778:3;8770:4;8762:6;8758:17;8748:8;8744:32;8741:41;8738:128;;;8785:79;;:::i;:::-;8738:128;8304:568;;;;;:::o;8878:698::-;8970:6;8978;8986;9035:2;9023:9;9014:7;9010:23;9006:32;9003:119;;;9041:79;;:::i;:::-;9003:119;9189:1;9178:9;9174:17;9161:31;9219:18;9211:6;9208:30;9205:117;;;9241:79;;:::i;:::-;9205:117;9354:80;9426:7;9417:6;9406:9;9402:22;9354:80;:::i;:::-;9336:98;;;;9132:312;9483:2;9509:50;9551:7;9542:6;9531:9;9527:22;9509:50;:::i;:::-;9499:60;;9454:115;8878:698;;;;;:::o;9582:474::-;9650:6;9658;9707:2;9695:9;9686:7;9682:23;9678:32;9675:119;;;9713:79;;:::i;:::-;9675:119;9833:1;9858:53;9903:7;9894:6;9883:9;9879:22;9858:53;:::i;:::-;9848:63;;9804:117;9960:2;9986:53;10031:7;10022:6;10011:9;10007:22;9986:53;:::i;:::-;9976:63;;9931:118;9582:474;;;;;:::o;10062:182::-;10202:34;10198:1;10190:6;10186:14;10179:58;10062:182;:::o;10250:366::-;10392:3;10413:67;10477:2;10472:3;10413:67;:::i;:::-;10406:74;;10489:93;10578:3;10489:93;:::i;:::-;10607:2;10602:3;10598:12;10591:19;;10250:366;;;:::o;10622:419::-;10788:4;10826:2;10815:9;10811:18;10803:26;;10875:9;10869:4;10865:20;10861:1;10850:9;10846:17;10839:47;10903:131;11029:4;10903:131;:::i;:::-;10895:139;;10622:419;;;:::o;11047:221::-;11187:34;11183:1;11175:6;11171:14;11164:58;11256:4;11251:2;11243:6;11239:15;11232:29;11047:221;:::o;11274:366::-;11416:3;11437:67;11501:2;11496:3;11437:67;:::i;:::-;11430:74;;11513:93;11602:3;11513:93;:::i;:::-;11631:2;11626:3;11622:12;11615:19;;11274:366;;;:::o;11646:419::-;11812:4;11850:2;11839:9;11835:18;11827:26;;11899:9;11893:4;11889:20;11885:1;11874:9;11870:17;11863:47;11927:131;12053:4;11927:131;:::i;:::-;11919:139;;11646:419;;;:::o;12071:222::-;12211:34;12207:1;12199:6;12195:14;12188:58;12280:5;12275:2;12267:6;12263:15;12256:30;12071:222;:::o;12299:366::-;12441:3;12462:67;12526:2;12521:3;12462:67;:::i;:::-;12455:74;;12538:93;12627:3;12538:93;:::i;:::-;12656:2;12651:3;12647:12;12640:19;;12299:366;;;:::o;12671:419::-;12837:4;12875:2;12864:9;12860:18;12852:26;;12924:9;12918:4;12914:20;12910:1;12899:9;12895:17;12888:47;12952:131;13078:4;12952:131;:::i;:::-;12944:139;;12671:419;;;:::o;13096:180::-;13144:77;13141:1;13134:88;13241:4;13238:1;13231:15;13265:4;13262:1;13255:15;13282:180;13330:77;13327:1;13320:88;13427:4;13424:1;13417:15;13451:4;13448:1;13441:15;13468:233;13507:3;13530:24;13548:5;13530:24;:::i;:::-;13521:33;;13576:66;13569:5;13566:77;13563:103;;13646:18;;:::i;:::-;13563:103;13693:1;13686:5;13682:13;13675:20;;13468:233;;;:::o;13707:225::-;13847:34;13843:1;13835:6;13831:14;13824:58;13916:8;13911:2;13903:6;13899:15;13892:33;13707:225;:::o;13938:366::-;14080:3;14101:67;14165:2;14160:3;14101:67;:::i;:::-;14094:74;;14177:93;14266:3;14177:93;:::i;:::-;14295:2;14290:3;14286:12;14279:19;;13938:366;;;:::o;14310:419::-;14476:4;14514:2;14503:9;14499:18;14491:26;;14563:9;14557:4;14553:20;14549:1;14538:9;14534:17;14527:47;14591:131;14717:4;14591:131;:::i;:::-;14583:139;;14310:419;;;:::o;14735:181::-;14875:33;14871:1;14863:6;14859:14;14852:57;14735:181;:::o;14922:366::-;15064:3;15085:67;15149:2;15144:3;15085:67;:::i;:::-;15078:74;;15161:93;15250:3;15161:93;:::i;:::-;15279:2;15274:3;15270:12;15263:19;;14922:366;;;:::o;15294:419::-;15460:4;15498:2;15487:9;15483:18;15475:26;;15547:9;15541:4;15537:20;15533:1;15522:9;15518:17;15511:47;15575:131;15701:4;15575:131;:::i;:::-;15567:139;;15294:419;;;:::o;15719:179::-;15859:31;15855:1;15847:6;15843:14;15836:55;15719:179;:::o;15904:366::-;16046:3;16067:67;16131:2;16126:3;16067:67;:::i;:::-;16060:74;;16143:93;16232:3;16143:93;:::i;:::-;16261:2;16256:3;16252:12;16245:19;;15904:366;;;:::o;16276:419::-;16442:4;16480:2;16469:9;16465:18;16457:26;;16529:9;16523:4;16519:20;16515:1;16504:9;16500:17;16493:47;16557:131;16683:4;16557:131;:::i;:::-;16549:139;;16276:419;;;:::o;16701:181::-;16841:33;16837:1;16829:6;16825:14;16818:57;16701:181;:::o;16888:366::-;17030:3;17051:67;17115:2;17110:3;17051:67;:::i;:::-;17044:74;;17127:93;17216:3;17127:93;:::i;:::-;17245:2;17240:3;17236:12;17229:19;;16888:366;;;:::o;17260:419::-;17426:4;17464:2;17453:9;17449:18;17441:26;;17513:9;17507:4;17503:20;17499:1;17488:9;17484:17;17477:47;17541:131;17667:4;17541:131;:::i;:::-;17533:139;;17260:419;;;:::o;17685:179::-;17825:31;17821:1;17813:6;17809:14;17802:55;17685:179;:::o;17870:366::-;18012:3;18033:67;18097:2;18092:3;18033:67;:::i;:::-;18026:74;;18109:93;18198:3;18109:93;:::i;:::-;18227:2;18222:3;18218:12;18211:19;;17870:366;;;:::o;18242:419::-;18408:4;18446:2;18435:9;18431:18;18423:26;;18495:9;18489:4;18485:20;18481:1;18470:9;18466:17;18459:47;18523:131;18649:4;18523:131;:::i;:::-;18515:139;;18242:419;;;:::o;18667:177::-;18807:29;18803:1;18795:6;18791:14;18784:53;18667:177;:::o;18850:366::-;18992:3;19013:67;19077:2;19072:3;19013:67;:::i;:::-;19006:74;;19089:93;19178:3;19089:93;:::i;:::-;19207:2;19202:3;19198:12;19191:19;;18850:366;;;:::o;19222:419::-;19388:4;19426:2;19415:9;19411:18;19403:26;;19475:9;19469:4;19465:20;19461:1;19450:9;19446:17;19439:47;19503:131;19629:4;19503:131;:::i;:::-;19495:139;;19222:419;;;:::o;19647:233::-;19787:34;19783:1;19775:6;19771:14;19764:58;19856:16;19851:2;19843:6;19839:15;19832:41;19647:233;:::o;19886:366::-;20028:3;20049:67;20113:2;20108:3;20049:67;:::i;:::-;20042:74;;20125:93;20214:3;20125:93;:::i;:::-;20243:2;20238:3;20234:12;20227:19;;19886:366;;;:::o;20258:419::-;20424:4;20462:2;20451:9;20447:18;20439:26;;20511:9;20505:4;20501:20;20497:1;20486:9;20482:17;20475:47;20539:131;20665:4;20539:131;:::i;:::-;20531:139;;20258:419;;;:::o;20683:180::-;20823:32;20819:1;20811:6;20807:14;20800:56;20683:180;:::o;20869:366::-;21011:3;21032:67;21096:2;21091:3;21032:67;:::i;:::-;21025:74;;21108:93;21197:3;21108:93;:::i;:::-;21226:2;21221:3;21217:12;21210:19;;20869:366;;;:::o;21241:419::-;21407:4;21445:2;21434:9;21430:18;21422:26;;21494:9;21488:4;21484:20;21480:1;21469:9;21465:17;21458:47;21522:131;21648:4;21522:131;:::i;:::-;21514:139;;21241:419;;;:::o;21666:191::-;21706:3;21725:20;21743:1;21725:20;:::i;:::-;21720:25;;21759:20;21777:1;21759:20;:::i;:::-;21754:25;;21802:1;21799;21795:9;21788:16;;21823:3;21820:1;21817:10;21814:36;;;21830:18;;:::i;:::-;21814:36;21666:191;;;;:::o;21863:176::-;22003:28;21999:1;21991:6;21987:14;21980:52;21863:176;:::o;22045:366::-;22187:3;22208:67;22272:2;22267:3;22208:67;:::i;:::-;22201:74;;22284:93;22373:3;22284:93;:::i;:::-;22402:2;22397:3;22393:12;22386:19;;22045:366;;;:::o;22417:419::-;22583:4;22621:2;22610:9;22606:18;22598:26;;22670:9;22664:4;22660:20;22656:1;22645:9;22641:17;22634:47;22698:131;22824:4;22698:131;:::i;:::-;22690:139;;22417:419;;;:::o;22842:194::-;22882:4;22902:20;22920:1;22902:20;:::i;:::-;22897:25;;22936:20;22954:1;22936:20;:::i;:::-;22931:25;;22980:1;22977;22973:9;22965:17;;23004:1;22998:4;22995:11;22992:37;;;23009:18;;:::i;:::-;22992:37;22842:194;;;;:::o;23042:231::-;23182:34;23178:1;23170:6;23166:14;23159:58;23251:14;23246:2;23238:6;23234:15;23227:39;23042:231;:::o;23279:366::-;23421:3;23442:67;23506:2;23501:3;23442:67;:::i;:::-;23435:74;;23518:93;23607:3;23518:93;:::i;:::-;23636:2;23631:3;23627:12;23620:19;;23279:366;;;:::o;23651:419::-;23817:4;23855:2;23844:9;23840:18;23832:26;;23904:9;23898:4;23894:20;23890:1;23879:9;23875:17;23868:47;23932:131;24058:4;23932:131;:::i;:::-;23924:139;;23651:419;;;:::o;24076:180::-;24124:77;24121:1;24114:88;24221:4;24218:1;24211:15;24245:4;24242:1;24235:15;24262:143;24319:5;24350:6;24344:13;24335:22;;24366:33;24393:5;24366:33;:::i;:::-;24262:143;;;;:::o;24411:351::-;24481:6;24530:2;24518:9;24509:7;24505:23;24501:32;24498:119;;;24536:79;;:::i;:::-;24498:119;24656:1;24681:64;24737:7;24728:6;24717:9;24713:22;24681:64;:::i;:::-;24671:74;;24627:128;24411:351;;;;:::o;24768:85::-;24813:7;24842:5;24831:16;;24768:85;;;:::o;24859:158::-;24917:9;24950:61;24968:42;24977:32;25003:5;24977:32;:::i;:::-;24968:42;:::i;:::-;24950:61;:::i;:::-;24937:74;;24859:158;;;:::o;25023:147::-;25118:45;25157:5;25118:45;:::i;:::-;25113:3;25106:58;25023:147;;:::o;25176:114::-;25243:6;25277:5;25271:12;25261:22;;25176:114;;;:::o;25296:184::-;25395:11;25429:6;25424:3;25417:19;25469:4;25464:3;25460:14;25445:29;;25296:184;;;;:::o;25486:132::-;25553:4;25576:3;25568:11;;25606:4;25601:3;25597:14;25589:22;;25486:132;;;:::o;25624:108::-;25701:24;25719:5;25701:24;:::i;:::-;25696:3;25689:37;25624:108;;:::o;25738:179::-;25807:10;25828:46;25870:3;25862:6;25828:46;:::i;:::-;25906:4;25901:3;25897:14;25883:28;;25738:179;;;;:::o;25923:113::-;25993:4;26025;26020:3;26016:14;26008:22;;25923:113;;;:::o;26072:732::-;26191:3;26220:54;26268:5;26220:54;:::i;:::-;26290:86;26369:6;26364:3;26290:86;:::i;:::-;26283:93;;26400:56;26450:5;26400:56;:::i;:::-;26479:7;26510:1;26495:284;26520:6;26517:1;26514:13;26495:284;;;26596:6;26590:13;26623:63;26682:3;26667:13;26623:63;:::i;:::-;26616:70;;26709:60;26762:6;26709:60;:::i;:::-;26699:70;;26555:224;26542:1;26539;26535:9;26530:14;;26495:284;;;26499:14;26795:3;26788:10;;26196:608;;;26072:732;;;;:::o;26810:831::-;27073:4;27111:3;27100:9;27096:19;27088:27;;27125:71;27193:1;27182:9;27178:17;27169:6;27125:71;:::i;:::-;27206:80;27282:2;27271:9;27267:18;27258:6;27206:80;:::i;:::-;27333:9;27327:4;27323:20;27318:2;27307:9;27303:18;27296:48;27361:108;27464:4;27455:6;27361:108;:::i;:::-;27353:116;;27479:72;27547:2;27536:9;27532:18;27523:6;27479:72;:::i;:::-;27561:73;27629:3;27618:9;27614:19;27605:6;27561:73;:::i;:::-;26810:831;;;;;;;;:::o;27647:180::-;27695:77;27692:1;27685:88;27792:4;27789:1;27782:15;27816:4;27813:1;27806:15;27833:185;27873:1;27890:20;27908:1;27890:20;:::i;:::-;27885:25;;27924:20;27942:1;27924:20;:::i;:::-;27919:25;;27963:1;27953:35;;27968:18;;:::i;:::-;27953:35;28010:1;28007;28003:9;27998:14;;27833:185;;;;:::o;28024:177::-;28164:29;28160:1;28152:6;28148:14;28141:53;28024:177;:::o;28207:366::-;28349:3;28370:67;28434:2;28429:3;28370:67;:::i;:::-;28363:74;;28446:93;28535:3;28446:93;:::i;:::-;28564:2;28559:3;28555:12;28548:19;;28207:366;;;:::o;28579:419::-;28745:4;28783:2;28772:9;28768:18;28760:26;;28832:9;28826:4;28822:20;28818:1;28807:9;28803:17;28796:47;28860:131;28986:4;28860:131;:::i;:::-;28852:139;;28579:419;;;:::o;29004:410::-;29044:7;29067:20;29085:1;29067:20;:::i;:::-;29062:25;;29101:20;29119:1;29101:20;:::i;:::-;29096:25;;29156:1;29153;29149:9;29178:30;29196:11;29178:30;:::i;:::-;29167:41;;29357:1;29348:7;29344:15;29341:1;29338:22;29318:1;29311:9;29291:83;29268:139;;29387:18;;:::i;:::-;29268:139;29052:362;29004:410;;;;:::o;29420:220::-;29560:34;29556:1;29548:6;29544:14;29537:58;29629:3;29624:2;29616:6;29612:15;29605:28;29420:220;:::o;29646:366::-;29788:3;29809:67;29873:2;29868:3;29809:67;:::i;:::-;29802:74;;29885:93;29974:3;29885:93;:::i;:::-;30003:2;29998:3;29994:12;29987:19;;29646:366;;;:::o;30018:419::-;30184:4;30222:2;30211:9;30207:18;30199:26;;30271:9;30265:4;30261:20;30257:1;30246:9;30242:17;30235:47;30299:131;30425:4;30299:131;:::i;:::-;30291:139;;30018:419;;;:::o

Swarm Source

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