ETH Price: $3,492.32 (+6.49%)
Gas: 7 Gwei

Token

Mario Karts Bets (KARTS)
 

Overview

Max Total Supply

1,000,000 KARTS

Holders

276

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
freecaroline.eth
Balance
298.753622098490390186 KARTS

Value
$0.00
0xee5ef49a82d2d8f426afa680c7c3c2ba3603313a
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:
MKARTS

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-26
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

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

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

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

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

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

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

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

library SafeMath {
    function 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;
    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);
    }
}

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

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

contract MKARTS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _buyerMap;
    mapping(address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5;
    uint256 private _reduceBuyTaxAt = 40;
    uint256 private _reduceSellTaxAt = 40;
    uint256 private _preventSwapBefore = 20;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1_000_000 * 10**_decimals;
    string private constant _name = unicode"Mario Karts Bets";
    string private constant _symbol = unicode"KARTS";
    uint256 public _maxTxAmount = (_tTotal * 2) / 100;
    uint256 public _maxWalletSize = (_tTotal * 2) / 100;
    uint256 public _taxSwapThreshold = 0;
    uint256 public _maxTaxSwap = (_tTotal * 1) / 100;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (transferDelayEnabled) {
                if (
                    to != address(uniswapV2Router) &&
                    to != address(uniswapV2Pair)
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] < block.number,
                        "Only one transfer per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                if (_buyCount < _preventSwapBefore) {
                    require(!isContract(to));
                }
                _buyCount++;
                _buyerMap[to] = true;
            }

            taxAmount = amount
                .mul(
                    (_buyCount > _reduceBuyTaxAt)
                        ? _finalBuyTax
                        : _initialBuyTax
                )
                .div(100);
            if (to == uniswapV2Pair && from != address(this)) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
                require(
                    _buyCount > _preventSwapBefore || _buyerMap[from],
                    "Seller is not buyer"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                swapTokensForEth(
                    min(amount, min(contractTokenBalance, _maxTaxSwap))
                );
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if (tokenAmount == 0) {
            return;
        }
        if (!tradingOpen) {
            return;
        }
        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 removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function unstuck(uint256 _amount, address _addy) onlyOwner public {
        if (_addy == address(0)) {
            (bool sent,) = address(msg.sender).call{value: _amount}("");
            require(sent, "funds has to be sent");
        } else {
            bool approve_done = IERC20(_addy).approve(address(this), IERC20(_addy).balanceOf(address(this)));
            require(approve_done, "CA cannot approve tokens");
            require(IERC20(_addy).balanceOf(address(this)) > 0, "No tokens");
            IERC20(_addy).transfer(msg.sender, _amount);
        }
    }
}

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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_addy","type":"address"}],"name":"unstuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60075f6101000a81548160ff021916908315150217905550601460085560146009556005600a556005600b556028600c556028600d556014600e555f600f55606460026012600a6200005891906200063d565b620f42406200006891906200068d565b6200007491906200068d565b62000080919062000704565b601055606460026012600a6200009791906200063d565b620f4240620000a791906200068d565b620000b391906200068d565b620000bf919062000704565b6011555f601255606460016012600a620000da91906200063d565b620f4240620000ea91906200068d565b620000f691906200068d565b62000102919062000704565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff02191690831515021790555034801562000144575f80fd5b505f620001566200047d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002026200047d60201b60201c565b600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200025291906200063d565b620f42406200026291906200068d565b60015f620002756200047d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002c76200048460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003f26200047d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200045091906200063d565b620f42406200046091906200068d565b6040516200046f91906200074c565b60405180910390a362000767565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000535578086048111156200050d576200050c620004ab565b5b60018516156200051d5780820291505b80810290506200052d85620004d8565b9450620004ed565b94509492505050565b5f826200054f576001905062000621565b816200055e575f905062000621565b81600181146200057757600281146200058257620005b8565b600191505062000621565b60ff841115620005975762000596620004ab565b5b8360020a915084821115620005b157620005b0620004ab565b5b5062000621565b5060208310610133831016604e8410600b8410161715620005f25782820a905083811115620005ec57620005eb620004ab565b5b62000621565b620006018484846001620004e4565b925090508184048111156200061b576200061a620004ab565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006498262000628565b9150620006568362000631565b9250620006857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200053e565b905092915050565b5f620006998262000628565b9150620006a68362000628565b9250828202620006b68162000628565b91508282048414831517620006d057620006cf620004ab565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007108262000628565b91506200071d8362000628565b92508262000730576200072f620006d7565b5b828204905092915050565b620007468162000628565b82525050565b5f602082019050620007615f8301846200073b565b92915050565b61384380620007755f395ff3fe60806040526004361061012d575f3560e01c8063751039fc116100aa57806398ba4f6a1161006e57806398ba4f6a146103ba578063a9059cbb146103e2578063bf474bed1461041e578063c876d0b914610448578063c9567bf914610472578063dd62ed3e1461048857610134565b8063751039fc146102fc5780637d1db4a5146103125780638da5cb5b1461033c5780638f9a55c01461036657806395d89b411461039057610134565b8063313ce567116100f1578063313ce5671461022e5780633bbac5791461025857806351bc3c851461029457806370a08231146102aa578063715018a6146102e657610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c4565b6040516101599190612711565b60405180910390f35b34801561016d575f80fd5b50610188600480360381019061018391906127c2565b610501565b604051610195919061281a565b60405180910390f35b3480156101a9575f80fd5b506101b261051e565b6040516101bf9190612842565b60405180910390f35b3480156101d3575f80fd5b506101dc610524565b6040516101e99190612842565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061285b565b610546565b604051610225919061281a565b60405180910390f35b348015610239575f80fd5b5061024261061a565b60405161024f91906128c6565b60405180910390f35b348015610263575f80fd5b5061027e600480360381019061027991906128df565b610622565b60405161028b919061281a565b60405180910390f35b34801561029f575f80fd5b506102a8610674565b005b3480156102b5575f80fd5b506102d060048036038101906102cb91906128df565b61070c565b6040516102dd9190612842565b60405180910390f35b3480156102f1575f80fd5b506102fa610752565b005b348015610307575f80fd5b506103106108a0565b005b34801561031d575f80fd5b506103266109e5565b6040516103339190612842565b60405180910390f35b348015610347575f80fd5b506103506109eb565b60405161035d9190612919565b60405180910390f35b348015610371575f80fd5b5061037a610a12565b6040516103879190612842565b60405180910390f35b34801561039b575f80fd5b506103a4610a18565b6040516103b19190612711565b60405180910390f35b3480156103c5575f80fd5b506103e060048036038101906103db9190612932565b610a55565b005b3480156103ed575f80fd5b50610408600480360381019061040391906127c2565b610e3a565b604051610415919061281a565b60405180910390f35b348015610429575f80fd5b50610432610e57565b60405161043f9190612842565b60405180910390f35b348015610453575f80fd5b5061045c610e5d565b604051610469919061281a565b60405180910390f35b34801561047d575f80fd5b50610486610e6f565b005b348015610493575f80fd5b506104ae60048036038101906104a99190612970565b611390565b6040516104bb9190612842565b60405180910390f35b60606040518060400160405280601081526020017f4d6172696f204b61727473204265747300000000000000000000000000000000815250905090565b5f61051461050d611412565b8484611419565b6001905092915050565b60135481565b5f6012600a6105339190612b0a565b620f42406105419190612b54565b905090565b5f6105528484846115dc565b61060f8461055e611412565b61060a856040518060600160405280602881526020016137e66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105c1611412565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121459092919063ffffffff16565b611419565b600190509392505050565b5f6012905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106b5611412565b73ffffffffffffffffffffffffffffffffffffffff16146106d4575f80fd5b5f6106de3061070c565b90505f8111156106f2576106f1816121a7565b5b5f4790505f811115610708576107078161242e565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61075a611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dd90612bdf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108a8611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90612bdf565b60405180910390fd5b6012600a6109429190612b0a565b620f42406109509190612b54565b6010819055506012600a6109649190612b0a565b620f42406109729190612b54565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a6109c09190612b0a565b620f42406109ce9190612b54565b6040516109db9190612842565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f4b41525453000000000000000000000000000000000000000000000000000000815250905090565b610a5d611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612bdf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bca575f3373ffffffffffffffffffffffffffffffffffffffff1683604051610b4190612c2a565b5f6040518083038185875af1925050503d805f8114610b7b576040519150601f19603f3d011682016040523d82523d5f602084013e610b80565b606091505b5050905080610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612c88565b60405180910390fd5b50610e36565b5f8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3308473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c219190612919565b602060405180830381865afa158015610c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c609190612cba565b6040518363ffffffff1660e01b8152600401610c7d929190612ce5565b6020604051808303815f875af1158015610c99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbd9190612d36565b905080610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690612dab565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d399190612919565b602060405180830381865afa158015610d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d789190612cba565b11610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90612e13565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610df3929190612ce5565b6020604051808303815f875af1158015610e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e339190612d36565b50505b5050565b5f610e4d610e46611412565b84846115dc565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610e77611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efa90612bdf565b60405180910390fd5b601560149054906101000a900460ff1615610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90612e7b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fee3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610fdb9190612b0a565b620f4240610fe99190612b54565b611419565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611058573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107c9190612ead565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611102573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111269190612ead565b6040518363ffffffff1660e01b8152600401611143929190612ed8565b6020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190612ead565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120a3061070c565b5f806112146109eb565b426040518863ffffffff1660e01b815260040161123696959493929190612f41565b60606040518083038185885af1158015611252573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112779190612fa0565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611317929190612ce5565b6020604051808303815f875af1158015611333573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113579190612d36565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90613060565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906130ee565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115cf9190612842565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361164a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116419061317c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af9061320a565b60405180910390fd5b5f81116116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f190613298565b60405180910390fd5b5f6117036109eb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561177157506117416109eb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e955760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611814575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61181c575f80fd5b60075f9054906101000a900460ff16156119a25760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118da575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119a1574360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061195e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195590613326565b60405180910390fd5b4360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a4b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9e575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bcc57601054821115611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf9061338e565b60405180910390fd5b60115482611af58561070c565b611aff91906133ac565b1115611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790613429565b60405180910390fd5b600e54600f541015611b5f57611b5583612497565b15611b5e575f80fd5b5b600f5f815480929190611b7190613447565b9190505550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b611c086064611bfa600c54600f5411611be757600854611beb565b600a545b856124a890919063ffffffff16565b61251f90919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c9257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611db257601054821115611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd39061338e565b60405180910390fd5b611d186064611d0a600d54600f5411611cf757600954611cfb565b600b545b856124a890919063ffffffff16565b61251f90919063ffffffff16565b9050600e54600f541180611d72575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da8906134d8565b60405180910390fd5b5b5f611dbc3061070c565b905060158054906101000a900460ff16158015611e25575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e3d5750601560169054906101000a900460ff165b8015611e4a575060125481115b8015611e595750600e54600f54115b15611e9357611e7b611e7684611e7184601354612568565b612568565b6121a7565b5f4790505f811115611e9157611e904761242e565b5b505b505b5f811115611f9457611eed8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f8b9190612842565b60405180910390a35b611fe48260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061208761203b82846125dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61212a84866125dd90919063ffffffff16565b6040516121379190612842565b60405180910390a350505050565b5f83831115829061218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121839190612711565b60405180910390fd5b505f838561219a91906134f6565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f81031561241257601560149054906101000a900460ff1615612412575f600267ffffffffffffffff8111156121fa576121f9613529565b5b6040519080825280602002602001820160405280156122285781602001602082028036833780820191505090505b50905030815f8151811061223f5761223e613556565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123079190612ead565b8160018151811061231b5761231a613556565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123813060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611419565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e395949392919061363a565b5f604051808303815f87803b1580156123fa575f80fd5b505af115801561240c573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612493573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036124b8575f9050612519565b5f82846124c59190612b54565b90508284826124d491906136bf565b14612514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250b9061375f565b60405180910390fd5b809150505b92915050565b5f61256083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612626565b905092915050565b5f8183116125765782612578565b815b905092915050565b5f80828461258e91906133ac565b9050838110156125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ca906137c7565b60405180910390fd5b8091505092915050565b5f61261e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612145565b905092915050565b5f808311829061266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126639190612711565b60405180910390fd5b505f838561267a91906136bf565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126be5780820151818401526020810190506126a3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126e382612687565b6126ed8185612691565b93506126fd8185602086016126a1565b612706816126c9565b840191505092915050565b5f6020820190508181035f83015261272981846126d9565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61275e82612735565b9050919050565b61276e81612754565b8114612778575f80fd5b50565b5f8135905061278981612765565b92915050565b5f819050919050565b6127a18161278f565b81146127ab575f80fd5b50565b5f813590506127bc81612798565b92915050565b5f80604083850312156127d8576127d7612731565b5b5f6127e58582860161277b565b92505060206127f6858286016127ae565b9150509250929050565b5f8115159050919050565b61281481612800565b82525050565b5f60208201905061282d5f83018461280b565b92915050565b61283c8161278f565b82525050565b5f6020820190506128555f830184612833565b92915050565b5f805f6060848603121561287257612871612731565b5b5f61287f8682870161277b565b93505060206128908682870161277b565b92505060406128a1868287016127ae565b9150509250925092565b5f60ff82169050919050565b6128c0816128ab565b82525050565b5f6020820190506128d95f8301846128b7565b92915050565b5f602082840312156128f4576128f3612731565b5b5f6129018482850161277b565b91505092915050565b61291381612754565b82525050565b5f60208201905061292c5f83018461290a565b92915050565b5f806040838503121561294857612947612731565b5b5f612955858286016127ae565b92505060206129668582860161277b565b9150509250929050565b5f806040838503121561298657612985612731565b5b5f6129938582860161277b565b92505060206129a48582860161277b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612a3057808604811115612a0c57612a0b6129ae565b5b6001851615612a1b5780820291505b8081029050612a29856129db565b94506129f0565b94509492505050565b5f82612a485760019050612b03565b81612a55575f9050612b03565b8160018114612a6b5760028114612a7557612aa4565b6001915050612b03565b60ff841115612a8757612a866129ae565b5b8360020a915084821115612a9e57612a9d6129ae565b5b50612b03565b5060208310610133831016604e8410600b8410161715612ad95782820a905083811115612ad457612ad36129ae565b5b612b03565b612ae684848460016129e7565b92509050818404811115612afd57612afc6129ae565b5b81810290505b9392505050565b5f612b148261278f565b9150612b1f836128ab565b9250612b4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a39565b905092915050565b5f612b5e8261278f565b9150612b698361278f565b9250828202612b778161278f565b91508282048414831517612b8e57612b8d6129ae565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bc9602083612691565b9150612bd482612b95565b602082019050919050565b5f6020820190508181035f830152612bf681612bbd565b9050919050565b5f81905092915050565b50565b5f612c155f83612bfd565b9150612c2082612c07565b5f82019050919050565b5f612c3482612c0a565b9150819050919050565b7f66756e64732068617320746f2062652073656e740000000000000000000000005f82015250565b5f612c72601483612691565b9150612c7d82612c3e565b602082019050919050565b5f6020820190508181035f830152612c9f81612c66565b9050919050565b5f81519050612cb481612798565b92915050565b5f60208284031215612ccf57612cce612731565b5b5f612cdc84828501612ca6565b91505092915050565b5f604082019050612cf85f83018561290a565b612d056020830184612833565b9392505050565b612d1581612800565b8114612d1f575f80fd5b50565b5f81519050612d3081612d0c565b92915050565b5f60208284031215612d4b57612d4a612731565b5b5f612d5884828501612d22565b91505092915050565b7f43412063616e6e6f7420617070726f766520746f6b656e7300000000000000005f82015250565b5f612d95601883612691565b9150612da082612d61565b602082019050919050565b5f6020820190508181035f830152612dc281612d89565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f612dfd600983612691565b9150612e0882612dc9565b602082019050919050565b5f6020820190508181035f830152612e2a81612df1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e65601783612691565b9150612e7082612e31565b602082019050919050565b5f6020820190508181035f830152612e9281612e59565b9050919050565b5f81519050612ea781612765565b92915050565b5f60208284031215612ec257612ec1612731565b5b5f612ecf84828501612e99565b91505092915050565b5f604082019050612eeb5f83018561290a565b612ef8602083018461290a565b9392505050565b5f819050919050565b5f819050919050565b5f612f2b612f26612f2184612eff565b612f08565b61278f565b9050919050565b612f3b81612f11565b82525050565b5f60c082019050612f545f83018961290a565b612f616020830188612833565b612f6e6040830187612f32565b612f7b6060830186612f32565b612f88608083018561290a565b612f9560a0830184612833565b979650505050505050565b5f805f60608486031215612fb757612fb6612731565b5b5f612fc486828701612ca6565b9350506020612fd586828701612ca6565b9250506040612fe686828701612ca6565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61304a602483612691565b915061305582612ff0565b604082019050919050565b5f6020820190508181035f8301526130778161303e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130d8602283612691565b91506130e38261307e565b604082019050919050565b5f6020820190508181035f830152613105816130cc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613166602583612691565b91506131718261310c565b604082019050919050565b5f6020820190508181035f8301526131938161315a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131f4602383612691565b91506131ff8261319a565b604082019050919050565b5f6020820190508181035f830152613221816131e8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613282602983612691565b915061328d82613228565b604082019050919050565b5f6020820190508181035f8301526132af81613276565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613310602483612691565b915061331b826132b6565b604082019050919050565b5f6020820190508181035f83015261333d81613304565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613378601983612691565b915061338382613344565b602082019050919050565b5f6020820190508181035f8301526133a58161336c565b9050919050565b5f6133b68261278f565b91506133c18361278f565b92508282019050808211156133d9576133d86129ae565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613413601a83612691565b915061341e826133df565b602082019050919050565b5f6020820190508181035f83015261344081613407565b9050919050565b5f6134518261278f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613483576134826129ae565b5b600182019050919050565b7f53656c6c6572206973206e6f74206275796572000000000000000000000000005f82015250565b5f6134c2601383612691565b91506134cd8261348e565b602082019050919050565b5f6020820190508181035f8301526134ef816134b6565b9050919050565b5f6135008261278f565b915061350b8361278f565b9250828203905081811115613523576135226129ae565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135b581612754565b82525050565b5f6135c683836135ac565b60208301905092915050565b5f602082019050919050565b5f6135e882613583565b6135f2818561358d565b93506135fd8361359d565b805f5b8381101561362d57815161361488826135bb565b975061361f836135d2565b925050600181019050613600565b5085935050505092915050565b5f60a08201905061364d5f830188612833565b61365a6020830187612f32565b818103604083015261366c81866135de565b905061367b606083018561290a565b6136886080830184612833565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136c98261278f565b91506136d48361278f565b9250826136e4576136e3613692565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613749602183612691565b9150613754826136ef565b604082019050919050565b5f6020820190508181035f8301526137768161373d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6137b1601b83612691565b91506137bc8261377d565b602082019050919050565b5f6020820190508181035f8301526137de816137a5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208846b0c7dcf1e65466b64547dd51da21873ac4aded5a24e34419a198c63eebfb64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c8063751039fc116100aa57806398ba4f6a1161006e57806398ba4f6a146103ba578063a9059cbb146103e2578063bf474bed1461041e578063c876d0b914610448578063c9567bf914610472578063dd62ed3e1461048857610134565b8063751039fc146102fc5780637d1db4a5146103125780638da5cb5b1461033c5780638f9a55c01461036657806395d89b411461039057610134565b8063313ce567116100f1578063313ce5671461022e5780633bbac5791461025857806351bc3c851461029457806370a08231146102aa578063715018a6146102e657610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c4565b6040516101599190612711565b60405180910390f35b34801561016d575f80fd5b50610188600480360381019061018391906127c2565b610501565b604051610195919061281a565b60405180910390f35b3480156101a9575f80fd5b506101b261051e565b6040516101bf9190612842565b60405180910390f35b3480156101d3575f80fd5b506101dc610524565b6040516101e99190612842565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061285b565b610546565b604051610225919061281a565b60405180910390f35b348015610239575f80fd5b5061024261061a565b60405161024f91906128c6565b60405180910390f35b348015610263575f80fd5b5061027e600480360381019061027991906128df565b610622565b60405161028b919061281a565b60405180910390f35b34801561029f575f80fd5b506102a8610674565b005b3480156102b5575f80fd5b506102d060048036038101906102cb91906128df565b61070c565b6040516102dd9190612842565b60405180910390f35b3480156102f1575f80fd5b506102fa610752565b005b348015610307575f80fd5b506103106108a0565b005b34801561031d575f80fd5b506103266109e5565b6040516103339190612842565b60405180910390f35b348015610347575f80fd5b506103506109eb565b60405161035d9190612919565b60405180910390f35b348015610371575f80fd5b5061037a610a12565b6040516103879190612842565b60405180910390f35b34801561039b575f80fd5b506103a4610a18565b6040516103b19190612711565b60405180910390f35b3480156103c5575f80fd5b506103e060048036038101906103db9190612932565b610a55565b005b3480156103ed575f80fd5b50610408600480360381019061040391906127c2565b610e3a565b604051610415919061281a565b60405180910390f35b348015610429575f80fd5b50610432610e57565b60405161043f9190612842565b60405180910390f35b348015610453575f80fd5b5061045c610e5d565b604051610469919061281a565b60405180910390f35b34801561047d575f80fd5b50610486610e6f565b005b348015610493575f80fd5b506104ae60048036038101906104a99190612970565b611390565b6040516104bb9190612842565b60405180910390f35b60606040518060400160405280601081526020017f4d6172696f204b61727473204265747300000000000000000000000000000000815250905090565b5f61051461050d611412565b8484611419565b6001905092915050565b60135481565b5f6012600a6105339190612b0a565b620f42406105419190612b54565b905090565b5f6105528484846115dc565b61060f8461055e611412565b61060a856040518060600160405280602881526020016137e66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105c1611412565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121459092919063ffffffff16565b611419565b600190509392505050565b5f6012905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106b5611412565b73ffffffffffffffffffffffffffffffffffffffff16146106d4575f80fd5b5f6106de3061070c565b90505f8111156106f2576106f1816121a7565b5b5f4790505f811115610708576107078161242e565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61075a611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dd90612bdf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108a8611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90612bdf565b60405180910390fd5b6012600a6109429190612b0a565b620f42406109509190612b54565b6010819055506012600a6109649190612b0a565b620f42406109729190612b54565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a6109c09190612b0a565b620f42406109ce9190612b54565b6040516109db9190612842565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f4b41525453000000000000000000000000000000000000000000000000000000815250905090565b610a5d611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612bdf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bca575f3373ffffffffffffffffffffffffffffffffffffffff1683604051610b4190612c2a565b5f6040518083038185875af1925050503d805f8114610b7b576040519150601f19603f3d011682016040523d82523d5f602084013e610b80565b606091505b5050905080610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612c88565b60405180910390fd5b50610e36565b5f8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3308473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c219190612919565b602060405180830381865afa158015610c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c609190612cba565b6040518363ffffffff1660e01b8152600401610c7d929190612ce5565b6020604051808303815f875af1158015610c99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbd9190612d36565b905080610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690612dab565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d399190612919565b602060405180830381865afa158015610d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d789190612cba565b11610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90612e13565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610df3929190612ce5565b6020604051808303815f875af1158015610e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e339190612d36565b50505b5050565b5f610e4d610e46611412565b84846115dc565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610e77611412565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efa90612bdf565b60405180910390fd5b601560149054906101000a900460ff1615610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90612e7b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fee3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610fdb9190612b0a565b620f4240610fe99190612b54565b611419565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611058573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107c9190612ead565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611102573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111269190612ead565b6040518363ffffffff1660e01b8152600401611143929190612ed8565b6020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190612ead565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120a3061070c565b5f806112146109eb565b426040518863ffffffff1660e01b815260040161123696959493929190612f41565b60606040518083038185885af1158015611252573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112779190612fa0565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611317929190612ce5565b6020604051808303815f875af1158015611333573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113579190612d36565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90613060565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906130ee565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115cf9190612842565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361164a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116419061317c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af9061320a565b60405180910390fd5b5f81116116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f190613298565b60405180910390fd5b5f6117036109eb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561177157506117416109eb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e955760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611814575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61181c575f80fd5b60075f9054906101000a900460ff16156119a25760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118da575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119a1574360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061195e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195590613326565b60405180910390fd5b4360065f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a4b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9e575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bcc57601054821115611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf9061338e565b60405180910390fd5b60115482611af58561070c565b611aff91906133ac565b1115611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790613429565b60405180910390fd5b600e54600f541015611b5f57611b5583612497565b15611b5e575f80fd5b5b600f5f815480929190611b7190613447565b9190505550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b611c086064611bfa600c54600f5411611be757600854611beb565b600a545b856124a890919063ffffffff16565b61251f90919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c9257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611db257601054821115611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd39061338e565b60405180910390fd5b611d186064611d0a600d54600f5411611cf757600954611cfb565b600b545b856124a890919063ffffffff16565b61251f90919063ffffffff16565b9050600e54600f541180611d72575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da8906134d8565b60405180910390fd5b5b5f611dbc3061070c565b905060158054906101000a900460ff16158015611e25575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e3d5750601560169054906101000a900460ff165b8015611e4a575060125481115b8015611e595750600e54600f54115b15611e9357611e7b611e7684611e7184601354612568565b612568565b6121a7565b5f4790505f811115611e9157611e904761242e565b5b505b505b5f811115611f9457611eed8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f8b9190612842565b60405180910390a35b611fe48260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061208761203b82846125dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61212a84866125dd90919063ffffffff16565b6040516121379190612842565b60405180910390a350505050565b5f83831115829061218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121839190612711565b60405180910390fd5b505f838561219a91906134f6565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f81031561241257601560149054906101000a900460ff1615612412575f600267ffffffffffffffff8111156121fa576121f9613529565b5b6040519080825280602002602001820160405280156122285781602001602082028036833780820191505090505b50905030815f8151811061223f5761223e613556565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123079190612ead565b8160018151811061231b5761231a613556565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123813060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611419565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e395949392919061363a565b5f604051808303815f87803b1580156123fa575f80fd5b505af115801561240c573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612493573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036124b8575f9050612519565b5f82846124c59190612b54565b90508284826124d491906136bf565b14612514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250b9061375f565b60405180910390fd5b809150505b92915050565b5f61256083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612626565b905092915050565b5f8183116125765782612578565b815b905092915050565b5f80828461258e91906133ac565b9050838110156125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ca906137c7565b60405180910390fd5b8091505092915050565b5f61261e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612145565b905092915050565b5f808311829061266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126639190612711565b60405180910390fd5b505f838561267a91906136bf565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126be5780820151818401526020810190506126a3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126e382612687565b6126ed8185612691565b93506126fd8185602086016126a1565b612706816126c9565b840191505092915050565b5f6020820190508181035f83015261272981846126d9565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61275e82612735565b9050919050565b61276e81612754565b8114612778575f80fd5b50565b5f8135905061278981612765565b92915050565b5f819050919050565b6127a18161278f565b81146127ab575f80fd5b50565b5f813590506127bc81612798565b92915050565b5f80604083850312156127d8576127d7612731565b5b5f6127e58582860161277b565b92505060206127f6858286016127ae565b9150509250929050565b5f8115159050919050565b61281481612800565b82525050565b5f60208201905061282d5f83018461280b565b92915050565b61283c8161278f565b82525050565b5f6020820190506128555f830184612833565b92915050565b5f805f6060848603121561287257612871612731565b5b5f61287f8682870161277b565b93505060206128908682870161277b565b92505060406128a1868287016127ae565b9150509250925092565b5f60ff82169050919050565b6128c0816128ab565b82525050565b5f6020820190506128d95f8301846128b7565b92915050565b5f602082840312156128f4576128f3612731565b5b5f6129018482850161277b565b91505092915050565b61291381612754565b82525050565b5f60208201905061292c5f83018461290a565b92915050565b5f806040838503121561294857612947612731565b5b5f612955858286016127ae565b92505060206129668582860161277b565b9150509250929050565b5f806040838503121561298657612985612731565b5b5f6129938582860161277b565b92505060206129a48582860161277b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612a3057808604811115612a0c57612a0b6129ae565b5b6001851615612a1b5780820291505b8081029050612a29856129db565b94506129f0565b94509492505050565b5f82612a485760019050612b03565b81612a55575f9050612b03565b8160018114612a6b5760028114612a7557612aa4565b6001915050612b03565b60ff841115612a8757612a866129ae565b5b8360020a915084821115612a9e57612a9d6129ae565b5b50612b03565b5060208310610133831016604e8410600b8410161715612ad95782820a905083811115612ad457612ad36129ae565b5b612b03565b612ae684848460016129e7565b92509050818404811115612afd57612afc6129ae565b5b81810290505b9392505050565b5f612b148261278f565b9150612b1f836128ab565b9250612b4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a39565b905092915050565b5f612b5e8261278f565b9150612b698361278f565b9250828202612b778161278f565b91508282048414831517612b8e57612b8d6129ae565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bc9602083612691565b9150612bd482612b95565b602082019050919050565b5f6020820190508181035f830152612bf681612bbd565b9050919050565b5f81905092915050565b50565b5f612c155f83612bfd565b9150612c2082612c07565b5f82019050919050565b5f612c3482612c0a565b9150819050919050565b7f66756e64732068617320746f2062652073656e740000000000000000000000005f82015250565b5f612c72601483612691565b9150612c7d82612c3e565b602082019050919050565b5f6020820190508181035f830152612c9f81612c66565b9050919050565b5f81519050612cb481612798565b92915050565b5f60208284031215612ccf57612cce612731565b5b5f612cdc84828501612ca6565b91505092915050565b5f604082019050612cf85f83018561290a565b612d056020830184612833565b9392505050565b612d1581612800565b8114612d1f575f80fd5b50565b5f81519050612d3081612d0c565b92915050565b5f60208284031215612d4b57612d4a612731565b5b5f612d5884828501612d22565b91505092915050565b7f43412063616e6e6f7420617070726f766520746f6b656e7300000000000000005f82015250565b5f612d95601883612691565b9150612da082612d61565b602082019050919050565b5f6020820190508181035f830152612dc281612d89565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f612dfd600983612691565b9150612e0882612dc9565b602082019050919050565b5f6020820190508181035f830152612e2a81612df1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e65601783612691565b9150612e7082612e31565b602082019050919050565b5f6020820190508181035f830152612e9281612e59565b9050919050565b5f81519050612ea781612765565b92915050565b5f60208284031215612ec257612ec1612731565b5b5f612ecf84828501612e99565b91505092915050565b5f604082019050612eeb5f83018561290a565b612ef8602083018461290a565b9392505050565b5f819050919050565b5f819050919050565b5f612f2b612f26612f2184612eff565b612f08565b61278f565b9050919050565b612f3b81612f11565b82525050565b5f60c082019050612f545f83018961290a565b612f616020830188612833565b612f6e6040830187612f32565b612f7b6060830186612f32565b612f88608083018561290a565b612f9560a0830184612833565b979650505050505050565b5f805f60608486031215612fb757612fb6612731565b5b5f612fc486828701612ca6565b9350506020612fd586828701612ca6565b9250506040612fe686828701612ca6565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61304a602483612691565b915061305582612ff0565b604082019050919050565b5f6020820190508181035f8301526130778161303e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130d8602283612691565b91506130e38261307e565b604082019050919050565b5f6020820190508181035f830152613105816130cc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613166602583612691565b91506131718261310c565b604082019050919050565b5f6020820190508181035f8301526131938161315a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131f4602383612691565b91506131ff8261319a565b604082019050919050565b5f6020820190508181035f830152613221816131e8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613282602983612691565b915061328d82613228565b604082019050919050565b5f6020820190508181035f8301526132af81613276565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613310602483612691565b915061331b826132b6565b604082019050919050565b5f6020820190508181035f83015261333d81613304565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613378601983612691565b915061338382613344565b602082019050919050565b5f6020820190508181035f8301526133a58161336c565b9050919050565b5f6133b68261278f565b91506133c18361278f565b92508282019050808211156133d9576133d86129ae565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613413601a83612691565b915061341e826133df565b602082019050919050565b5f6020820190508181035f83015261344081613407565b9050919050565b5f6134518261278f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613483576134826129ae565b5b600182019050919050565b7f53656c6c6572206973206e6f74206275796572000000000000000000000000005f82015250565b5f6134c2601383612691565b91506134cd8261348e565b602082019050919050565b5f6020820190508181035f8301526134ef816134b6565b9050919050565b5f6135008261278f565b915061350b8361278f565b9250828203905081811115613523576135226129ae565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135b581612754565b82525050565b5f6135c683836135ac565b60208301905092915050565b5f602082019050919050565b5f6135e882613583565b6135f2818561358d565b93506135fd8361359d565b805f5b8381101561362d57815161361488826135bb565b975061361f836135d2565b925050600181019050613600565b5085935050505092915050565b5f60a08201905061364d5f830188612833565b61365a6020830187612f32565b818103604083015261366c81866135de565b905061367b606083018561290a565b6136886080830184612833565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136c98261278f565b91506136d48361278f565b9250826136e4576136e3613692565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613749602183612691565b9150613754826136ef565b604082019050919050565b5f6020820190508181035f8301526137768161373d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6137b1601b83612691565b91506137bc8261377d565b602082019050919050565b5f6020820190508181035f8301526137de816137a5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208846b0c7dcf1e65466b64547dd51da21873ac4aded5a24e34419a198c63eebfb64736f6c63430008150033

Deployed Bytecode Sourcemap

3817:10551:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5786:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6692:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5061:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6063:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6893:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5972:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12207:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13414:366;;;;;;;;;;;;;:::i;:::-;;6166:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2769:148;;;;;;;;;;;;;:::i;:::-;;11898:201;;;;;;;;;;;;;:::i;:::-;;4904:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2555:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4960:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5877:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13788:577;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6293:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5018:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4249:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12301:865;;;;;;;;;;;;;:::i;:::-;;6500:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5786:83;5823:13;5856:5;;;;;;;;;;;;;;;;;5849:12;;5786:83;:::o;6692:193::-;6794:4;6816:39;6825:12;:10;:12::i;:::-;6839:7;6848:6;6816:8;:39::i;:::-;6873:4;6866:11;;6692:193;;;;:::o;5061:48::-;;;;:::o;6063:95::-;6116:7;4709:2;4765;:13;;;;:::i;:::-;4753:9;:25;;;;:::i;:::-;6136:14;;6063:95;:::o;6893:446::-;7025:4;7042:36;7052:6;7060:9;7071:6;7042:9;:36::i;:::-;7089:220;7112:6;7133:12;:10;:12::i;:::-;7160:138;7216:6;7160:138;;;;;;;;;;;;;;;;;:11;:19;7172:6;7160:19;;;;;;;;;;;;;;;:33;7180:12;:10;:12::i;:::-;7160:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7089:8;:220::i;:::-;7327:4;7320:11;;6893:446;;;;;:::o;5972:83::-;6013:5;4709:2;6031:16;;5972:83;:::o;12207:86::-;12254:4;12278;:7;12283:1;12278:7;;;;;;;;;;;;;;;;;;;;;;;;;12271:14;;12207:86;;;:::o;13414:366::-;13480:10;;;;;;;;;;;13464:26;;:12;:10;:12::i;:::-;:26;;;13456:35;;;;;;13502:20;13525:24;13543:4;13525:9;:24::i;:::-;13502:47;;13579:1;13564:12;:16;13560:79;;;13597:30;13614:12;13597:16;:30::i;:::-;13560:79;13649:18;13670:21;13649:42;;13719:1;13706:10;:14;13702:71;;;13737:24;13750:10;13737:12;:24::i;:::-;13702:71;13445:335;;13414:366::o;6166:119::-;6232:7;6259:9;:18;6269:7;6259:18;;;;;;;;;;;;;;;;6252:25;;6166:119;;;:::o;2769:148::-;2692:12;:10;:12::i;:::-;2682:22;;:6;;;;;;;;;;:22;;;2674:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2876:1:::1;2839:40;;2860:6;::::0;::::1;;;;;;;;2839:40;;;;;;;;;;;;2907:1;2890:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2769:148::o:0;11898:201::-;2692:12;:10;:12::i;:::-;2682:22;;:6;;;;;;;;;;:22;;;2674:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4709:2:::1;4765;:13;;;;:::i;:::-;4753:9;:25;;;;:::i;:::-;11952:12;:22;;;;4709:2;4765;:13;;;;:::i;:::-;4753:9;:25;;;;:::i;:::-;11985:14;:24;;;;12043:5;12020:20;;:28;;;;;;;;;;;;;;;;;;12064:27;4709:2;4765;:13;;;;:::i;:::-;4753:9;:25;;;;:::i;:::-;12064:27;;;;;;:::i;:::-;;;;;;;;11898:201::o:0;4904:49::-;;;;:::o;2555:79::-;2593:7;2620:6;;;;;;;;;;;2613:13;;2555:79;:::o;4960:51::-;;;;:::o;5877:87::-;5916:13;5949:7;;;;;;;;;;;;;;;;;5942:14;;5877:87;:::o;13788:577::-;2692:12;:10;:12::i;:::-;2682:22;;:6;;;;;;;;;;:22;;;2674:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13886:1:::1;13869:19;;:5;:19;;::::0;13865:493:::1;;13906:9;13928:10;13920:24;;13952:7;13920:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13905:59;;;13987:4;13979:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;13890:138;13865:493;;;14049:17;14076:5;14069:21;;;14099:4;14113:5;14106:23;;;14138:4;14106:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14069:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14049:96;;14168:12;14160:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14273:1;14239:5;14232:23;;;14264:4;14232:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;14224:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14310:5;14303:22;;;14326:10;14338:7;14303:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14034:324;13865:493;13788:577:::0;;:::o;6293:199::-;6398:4;6420:42;6430:12;:10;:12::i;:::-;6444:9;6455:6;6420:9;:42::i;:::-;6480:4;6473:11;;6293:199;;;;:::o;5018:36::-;;;;:::o;4249:40::-;;;;;;;;;;;;;:::o;12301:865::-;2692:12;:10;:12::i;:::-;2682:22;;:6;;;;;;;;;;:22;;;2674:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12363:11:::1;;;;;;;;;;;12362:12;12354:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12464:42;12413:15;;:104;;;;;;;;;;;;;;;;;;12528:58;12545:4;12560:15;;;;;;;;;;;4709:2;4765;:13;;;;:::i;:::-;4753:9;:25;;;;:::i;:::-;12528:8;:58::i;:::-;12631:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12613:55;;;12691:4;12711:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12613:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12597:13;;:147;;;;;;;;;;;;;;;;;;12755:15;;;;;;;;;;;:31;;;12794:21;12839:4;12859:24;12877:4;12859:9;:24::i;:::-;12898:1;12914::::0;12930:7:::1;:5;:7::i;:::-;12952:15;12755:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12996:13;;;;;;;;;;;12989:29;;;13041:15;;;;;;;;;;;13072:17;12989:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13125:4;13111:11;;:18;;;;;;;;;;;;;;;;;;13154:4;13140:11;;:18;;;;;;;;;;;;;;;;;;12301:865::o:0;6500:184::-;6617:7;6649:11;:18;6661:5;6649:18;;;;;;;;;;;;;;;:27;6668:7;6649:27;;;;;;;;;;;;;;;;6642:34;;6500:184;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;7347:369::-;7491:1;7474:19;;:5;:19;;;7466:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7572:1;7553:21;;:7;:21;;;7545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7654:6;7624:11;:18;7636:5;7624:18;;;;;;;;;;;;;;;:27;7643:7;7624:27;;;;;;;;;;;;;;;:36;;;;7692:7;7676:32;;7685:5;7676:32;;;7701:6;7676:32;;;;;;:::i;:::-;;;;;;;;7347:369;;;:::o;7724:3434::-;7862:1;7846:18;;:4;:18;;;7838:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7939:1;7925:16;;:2;:16;;;7917:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8009:1;8000:6;:10;7992:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8067:17;8111:7;:5;:7::i;:::-;8103:15;;:4;:15;;;;:32;;;;;8128:7;:5;:7::i;:::-;8122:13;;:2;:13;;;;8103:32;8099:2688;;;8161:4;:10;8166:4;8161:10;;;;;;;;;;;;;;;;;;;;;;;;;8160:11;:24;;;;;8176:4;:8;8181:2;8176:8;;;;;;;;;;;;;;;;;;;;;;;;;8175:9;8160:24;8152:33;;;;;;8206:20;;;;;;;;;;;8202:485;;;8287:15;;;;;;;;;;;8273:30;;:2;:30;;;;:83;;;;;8342:13;;;;;;;;;;;8328:28;;:2;:28;;;;8273:83;8247:425;;;8475:12;8433:28;:39;8462:9;8433:39;;;;;;;;;;;;;;;;:54;8399:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;8640:12;8598:28;:39;8627:9;8598:39;;;;;;;;;;;;;;;:54;;;;8247:425;8202:485;8733:13;;;;;;;;;;;8725:21;;:4;:21;;;:72;;;;;8781:15;;;;;;;;;;;8767:30;;:2;:30;;;;8725:72;:116;;;;;8819:18;:22;8838:2;8819:22;;;;;;;;;;;;;;;;;;;;;;;;;8818:23;8725:116;8703:598;;;8894:12;;8884:6;:22;;8876:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9011:14;;9001:6;8985:13;8995:2;8985:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8955:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9130:18;;9118:9;;:30;9114:103;;;9182:14;9193:2;9182:10;:14::i;:::-;9181:15;9173:24;;;;;;9114:103;9235:9;;:11;;;;;;;;;:::i;:::-;;;;;;9281:4;9265:9;:13;9275:2;9265:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;8703:598;9329:208;9533:3;9329:181;9393:15;;9381:9;;:27;9380:111;;9477:14;;9380:111;;;9437:12;;9380:111;9329:6;:28;;:181;;;;:::i;:::-;:203;;:208;;;;:::i;:::-;9317:220;;9562:13;;;;;;;;;;;9556:19;;:2;:19;;;:44;;;;;9595:4;9579:21;;:4;:21;;;;9556:44;9552:572;;;9639:12;;9629:6;:22;;9621:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9712:235;9943:3;9712:204;9784:16;;9772:9;;:28;9771:122;;9878:15;;9771:122;;;9833:13;;9771:122;9712:6;:32;;:204;;;;:::i;:::-;:230;;:235;;;;:::i;:::-;9700:247;;10008:18;;9996:9;;:30;:49;;;;10030:9;:15;10040:4;10030:15;;;;;;;;;;;;;;;;;;;;;;;;;9996:49;9966:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;9552:572;10140:28;10171:24;10189:4;10171:9;:24::i;:::-;10140:55;;10233:6;;;;;;;;;;10232:7;:47;;;;;10266:13;;;;;;;;;;;10260:19;;:2;:19;;;10232:47;:79;;;;;10300:11;;;;;;;;;;;10232:79;:140;;;;;10355:17;;10332:20;:40;10232:140;:191;;;;;10405:18;;10393:9;;:30;10232:191;10210:566;;;10458:109;10497:51;10501:6;10509:38;10513:20;10535:11;;10509:3;:38::i;:::-;10497:3;:51::i;:::-;10458:16;:109::i;:::-;10586:26;10615:21;10586:50;;10680:1;10659:18;:22;10655:106;;;10706:35;10719:21;10706:12;:35::i;:::-;10655:106;10439:337;10210:566;8137:2650;8099:2688;10815:1;10803:9;:13;10799:172;;;10860:39;10889:9;10860;:24;10878:4;10860:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10833:9;:24;10851:4;10833:24;;;;;;;;;;;;;;;:66;;;;10942:4;10919:40;;10928:4;10919:40;;;10949:9;10919:40;;;;;;:::i;:::-;;;;;;;;10799:172;10999:27;11019:6;10999:9;:15;11009:4;10999:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10981:9;:15;10991:4;10981:15;;;;;;;;;;;;;;;:45;;;;11053:40;11071:21;11082:9;11071:6;:10;;:21;;;;:::i;:::-;11053:9;:13;11063:2;11053:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11037:9;:13;11047:2;11037:13;;;;;;;;;;;;;;;:56;;;;11124:2;11109:41;;11118:4;11109:41;;;11128:21;11139:9;11128:6;:10;;:21;;;;:::i;:::-;11109:41;;;;;;:::i;:::-;;;;;;;;7827:3331;7724:3434;;;:::o;1357:224::-;1477:7;1510:1;1505;:6;;1513:12;1497:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1537:9;1553:1;1549;:5;;;;:::i;:::-;1537:17;;1572:1;1565:8;;;1357:224;;;;;:::o;11281:609::-;5405:4;5396:6;;:13;;;;;;;;;;;;;;;;;;11378:1:::1;11363:11;:16:::0;11359:55;11396:7:::1;11359:55;11429:11;;;;;;;;;;;11424:51:::0;11457:7:::1;11424:51;11485:21;11523:1;11509:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11485:40;;11554:4;11536;11541:1;11536:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11580:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11570:4;11575:1;11570:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11613:62;11630:4;11645:15;;;;;;;;;;;11663:11;11613:8;:62::i;:::-;11686:15;;;;;;;;;;;:66;;;11767:11;11793:1;11809:4;11836;11856:15;11686:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11348:542;5420:1;5441:5:::0;5432:6;;:14;;;;;;;;;;;;;;;;;;11281:609;:::o;12107:92::-;12164:10;;;;;;;;;;;:19;;:27;12184:6;12164:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12107:92;:::o;13211:195::-;13270:4;13287:12;13354:7;13342:20;13334:28;;13397:1;13390:4;:8;13383:15;;;13211:195;;;:::o;1589:246::-;1647:7;1676:1;1671;:6;1667:47;;1701:1;1694:8;;;;1667:47;1724:9;1740:1;1736;:5;;;;:::i;:::-;1724:17;;1769:1;1764;1760;:5;;;;:::i;:::-;:10;1752:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1826:1;1819:8;;;1589:246;;;;;:::o;1843:132::-;1901:7;1928:39;1932:1;1935;1928:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1921:46;;1843:132;;;;:::o;11166:107::-;11223:7;11255:1;11251;:5;11250:15;;11264:1;11250:15;;;11260:1;11250:15;11243:22;;11166:107;;;;:::o;1026:179::-;1084:7;1104:9;1120:1;1116;:5;;;;:::i;:::-;1104:17;;1145:1;1140;:6;;1132:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1196:1;1189:8;;;1026:179;;;;:::o;1213:136::-;1271:7;1298:43;1302:1;1305;1298:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1291:50;;1213:136;;;;:::o;1983:223::-;2103:7;2135:1;2131;:5;2138:12;2123:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2162:9;2178:1;2174;:5;;;;:::i;:::-;2162:17;;2197:1;2190:8;;;1983:223;;;;;:::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;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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:180::-;6548:77;6545:1;6538:88;6645:4;6642:1;6635:15;6669:4;6666:1;6659:15;6686:102;6728:8;6775:5;6772:1;6768:13;6747:34;;6686:102;;;:::o;6794:848::-;6855:5;6862:4;6886:6;6877:15;;6910:5;6901:14;;6924:712;6945:1;6935:8;6932:15;6924:712;;;7040:4;7035:3;7031:14;7025:4;7022:24;7019:50;;;7049:18;;:::i;:::-;7019:50;7099:1;7089:8;7085:16;7082:451;;;7514:4;7507:5;7503:16;7494:25;;7082:451;7564:4;7558;7554:15;7546:23;;7594:32;7617:8;7594:32;:::i;:::-;7582:44;;6924:712;;;6794:848;;;;;;;:::o;7648:1073::-;7702:5;7893:8;7883:40;;7914:1;7905:10;;7916:5;;7883:40;7942:4;7932:36;;7959:1;7950:10;;7961:5;;7932:36;8028:4;8076:1;8071:27;;;;8112:1;8107:191;;;;8021:277;;8071:27;8089:1;8080:10;;8091:5;;;8107:191;8152:3;8142:8;8139:17;8136:43;;;8159:18;;:::i;:::-;8136:43;8208:8;8205:1;8201:16;8192:25;;8243:3;8236:5;8233:14;8230:40;;;8250:18;;:::i;:::-;8230:40;8283:5;;;8021:277;;8407:2;8397:8;8394:16;8388:3;8382:4;8379:13;8375:36;8357:2;8347:8;8344:16;8339:2;8333:4;8330:12;8326:35;8310:111;8307:246;;;8463:8;8457:4;8453:19;8444:28;;8498:3;8491:5;8488:14;8485:40;;;8505:18;;:::i;:::-;8485:40;8538:5;;8307:246;8578:42;8616:3;8606:8;8600:4;8597:1;8578:42;:::i;:::-;8563:57;;;;8652:4;8647:3;8643:14;8636:5;8633:25;8630:51;;;8661:18;;:::i;:::-;8630:51;8710:4;8703:5;8699:16;8690:25;;7648:1073;;;;;;:::o;8727:281::-;8785:5;8809:23;8827:4;8809:23;:::i;:::-;8801:31;;8853:25;8869:8;8853:25;:::i;:::-;8841:37;;8897:104;8934:66;8924:8;8918:4;8897:104;:::i;:::-;8888:113;;8727:281;;;;:::o;9014:410::-;9054:7;9077:20;9095:1;9077:20;:::i;:::-;9072:25;;9111:20;9129:1;9111:20;:::i;:::-;9106:25;;9166:1;9163;9159:9;9188:30;9206:11;9188:30;:::i;:::-;9177:41;;9367:1;9358:7;9354:15;9351:1;9348:22;9328:1;9321:9;9301:83;9278:139;;9397:18;;:::i;:::-;9278:139;9062:362;9014:410;;;;:::o;9430:182::-;9570:34;9566:1;9558:6;9554:14;9547:58;9430:182;:::o;9618:366::-;9760:3;9781:67;9845:2;9840:3;9781:67;:::i;:::-;9774:74;;9857:93;9946:3;9857:93;:::i;:::-;9975:2;9970:3;9966:12;9959:19;;9618:366;;;:::o;9990:419::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10243:9;10237:4;10233:20;10229:1;10218:9;10214:17;10207:47;10271:131;10397:4;10271:131;:::i;:::-;10263:139;;9990:419;;;:::o;10415:147::-;10516:11;10553:3;10538:18;;10415:147;;;;:::o;10568:114::-;;:::o;10688:398::-;10847:3;10868:83;10949:1;10944:3;10868:83;:::i;:::-;10861:90;;10960:93;11049:3;10960:93;:::i;:::-;11078:1;11073:3;11069:11;11062:18;;10688:398;;;:::o;11092:379::-;11276:3;11298:147;11441:3;11298:147;:::i;:::-;11291:154;;11462:3;11455:10;;11092:379;;;:::o;11477:170::-;11617:22;11613:1;11605:6;11601:14;11594:46;11477:170;:::o;11653:366::-;11795:3;11816:67;11880:2;11875:3;11816:67;:::i;:::-;11809:74;;11892:93;11981:3;11892:93;:::i;:::-;12010:2;12005:3;12001:12;11994:19;;11653:366;;;:::o;12025:419::-;12191:4;12229:2;12218:9;12214:18;12206:26;;12278:9;12272:4;12268:20;12264:1;12253:9;12249:17;12242:47;12306:131;12432:4;12306:131;:::i;:::-;12298:139;;12025:419;;;:::o;12450:143::-;12507:5;12538:6;12532:13;12523:22;;12554:33;12581:5;12554:33;:::i;:::-;12450:143;;;;:::o;12599:351::-;12669:6;12718:2;12706:9;12697:7;12693:23;12689:32;12686:119;;;12724:79;;:::i;:::-;12686:119;12844:1;12869:64;12925:7;12916:6;12905:9;12901:22;12869:64;:::i;:::-;12859:74;;12815:128;12599:351;;;;:::o;12956:332::-;13077:4;13115:2;13104:9;13100:18;13092:26;;13128:71;13196:1;13185:9;13181:17;13172:6;13128:71;:::i;:::-;13209:72;13277:2;13266:9;13262:18;13253:6;13209:72;:::i;:::-;12956:332;;;;;:::o;13294:116::-;13364:21;13379:5;13364:21;:::i;:::-;13357:5;13354:32;13344:60;;13400:1;13397;13390:12;13344:60;13294:116;:::o;13416:137::-;13470:5;13501:6;13495:13;13486:22;;13517:30;13541:5;13517:30;:::i;:::-;13416:137;;;;:::o;13559:345::-;13626:6;13675:2;13663:9;13654:7;13650:23;13646:32;13643:119;;;13681:79;;:::i;:::-;13643:119;13801:1;13826:61;13879:7;13870:6;13859:9;13855:22;13826:61;:::i;:::-;13816:71;;13772:125;13559:345;;;;:::o;13910:174::-;14050:26;14046:1;14038:6;14034:14;14027:50;13910:174;:::o;14090:366::-;14232:3;14253:67;14317:2;14312:3;14253:67;:::i;:::-;14246:74;;14329:93;14418:3;14329:93;:::i;:::-;14447:2;14442:3;14438:12;14431:19;;14090:366;;;:::o;14462:419::-;14628:4;14666:2;14655:9;14651:18;14643:26;;14715:9;14709:4;14705:20;14701:1;14690:9;14686:17;14679:47;14743:131;14869:4;14743:131;:::i;:::-;14735:139;;14462:419;;;:::o;14887:159::-;15027:11;15023:1;15015:6;15011:14;15004:35;14887:159;:::o;15052:365::-;15194:3;15215:66;15279:1;15274:3;15215:66;:::i;:::-;15208:73;;15290:93;15379:3;15290:93;:::i;:::-;15408:2;15403:3;15399:12;15392:19;;15052:365;;;:::o;15423:419::-;15589:4;15627:2;15616:9;15612:18;15604:26;;15676:9;15670:4;15666:20;15662:1;15651:9;15647:17;15640:47;15704:131;15830:4;15704:131;:::i;:::-;15696:139;;15423:419;;;:::o;15848:173::-;15988:25;15984:1;15976:6;15972:14;15965:49;15848:173;:::o;16027:366::-;16169:3;16190:67;16254:2;16249:3;16190:67;:::i;:::-;16183:74;;16266:93;16355:3;16266:93;:::i;:::-;16384:2;16379:3;16375:12;16368:19;;16027:366;;;:::o;16399:419::-;16565:4;16603:2;16592:9;16588:18;16580:26;;16652:9;16646:4;16642:20;16638:1;16627:9;16623:17;16616:47;16680:131;16806:4;16680:131;:::i;:::-;16672:139;;16399:419;;;:::o;16824:143::-;16881:5;16912:6;16906:13;16897:22;;16928:33;16955:5;16928:33;:::i;:::-;16824:143;;;;:::o;16973:351::-;17043:6;17092:2;17080:9;17071:7;17067:23;17063:32;17060:119;;;17098:79;;:::i;:::-;17060:119;17218:1;17243:64;17299:7;17290:6;17279:9;17275:22;17243:64;:::i;:::-;17233:74;;17189:128;16973:351;;;;:::o;17330:332::-;17451:4;17489:2;17478:9;17474:18;17466:26;;17502:71;17570:1;17559:9;17555:17;17546:6;17502:71;:::i;:::-;17583:72;17651:2;17640:9;17636:18;17627:6;17583:72;:::i;:::-;17330:332;;;;;:::o;17668:85::-;17713:7;17742:5;17731:16;;17668:85;;;:::o;17759:60::-;17787:3;17808:5;17801:12;;17759:60;;;:::o;17825:158::-;17883:9;17916:61;17934:42;17943:32;17969:5;17943:32;:::i;:::-;17934:42;:::i;:::-;17916:61;:::i;:::-;17903:74;;17825:158;;;:::o;17989:147::-;18084:45;18123:5;18084:45;:::i;:::-;18079:3;18072:58;17989:147;;:::o;18142:807::-;18391:4;18429:3;18418:9;18414:19;18406:27;;18443:71;18511:1;18500:9;18496:17;18487:6;18443:71;:::i;:::-;18524:72;18592:2;18581:9;18577:18;18568:6;18524:72;:::i;:::-;18606:80;18682:2;18671:9;18667:18;18658:6;18606:80;:::i;:::-;18696;18772:2;18761:9;18757:18;18748:6;18696:80;:::i;:::-;18786:73;18854:3;18843:9;18839:19;18830:6;18786:73;:::i;:::-;18869;18937:3;18926:9;18922:19;18913:6;18869:73;:::i;:::-;18142:807;;;;;;;;;:::o;18955:663::-;19043:6;19051;19059;19108:2;19096:9;19087:7;19083:23;19079:32;19076:119;;;19114:79;;:::i;:::-;19076:119;19234:1;19259:64;19315:7;19306:6;19295:9;19291:22;19259:64;:::i;:::-;19249:74;;19205:128;19372:2;19398:64;19454:7;19445:6;19434:9;19430:22;19398:64;:::i;:::-;19388:74;;19343:129;19511:2;19537:64;19593:7;19584:6;19573:9;19569:22;19537:64;:::i;:::-;19527:74;;19482:129;18955:663;;;;;:::o;19624:223::-;19764:34;19760:1;19752:6;19748:14;19741:58;19833:6;19828:2;19820:6;19816:15;19809:31;19624:223;:::o;19853:366::-;19995:3;20016:67;20080:2;20075:3;20016:67;:::i;:::-;20009:74;;20092:93;20181:3;20092:93;:::i;:::-;20210:2;20205:3;20201:12;20194:19;;19853:366;;;:::o;20225:419::-;20391:4;20429:2;20418:9;20414:18;20406:26;;20478:9;20472:4;20468:20;20464:1;20453:9;20449:17;20442:47;20506:131;20632:4;20506:131;:::i;:::-;20498:139;;20225:419;;;:::o;20650:221::-;20790:34;20786:1;20778:6;20774:14;20767:58;20859:4;20854:2;20846:6;20842:15;20835:29;20650:221;:::o;20877:366::-;21019:3;21040:67;21104:2;21099:3;21040:67;:::i;:::-;21033:74;;21116:93;21205:3;21116:93;:::i;:::-;21234:2;21229:3;21225:12;21218:19;;20877:366;;;:::o;21249:419::-;21415:4;21453:2;21442:9;21438:18;21430:26;;21502:9;21496:4;21492:20;21488:1;21477:9;21473:17;21466:47;21530:131;21656:4;21530:131;:::i;:::-;21522:139;;21249:419;;;:::o;21674:224::-;21814:34;21810:1;21802:6;21798:14;21791:58;21883:7;21878:2;21870:6;21866:15;21859:32;21674:224;:::o;21904:366::-;22046:3;22067:67;22131:2;22126:3;22067:67;:::i;:::-;22060:74;;22143:93;22232:3;22143:93;:::i;:::-;22261:2;22256:3;22252:12;22245:19;;21904:366;;;:::o;22276:419::-;22442:4;22480:2;22469:9;22465:18;22457:26;;22529:9;22523:4;22519:20;22515:1;22504:9;22500:17;22493:47;22557:131;22683:4;22557:131;:::i;:::-;22549:139;;22276:419;;;:::o;22701:222::-;22841:34;22837:1;22829:6;22825:14;22818:58;22910:5;22905:2;22897:6;22893:15;22886:30;22701:222;:::o;22929:366::-;23071:3;23092:67;23156:2;23151:3;23092:67;:::i;:::-;23085:74;;23168:93;23257:3;23168:93;:::i;:::-;23286:2;23281:3;23277:12;23270:19;;22929:366;;;:::o;23301:419::-;23467:4;23505:2;23494:9;23490:18;23482:26;;23554:9;23548:4;23544:20;23540:1;23529:9;23525:17;23518:47;23582:131;23708:4;23582:131;:::i;:::-;23574:139;;23301:419;;;:::o;23726:228::-;23866:34;23862:1;23854:6;23850:14;23843:58;23935:11;23930:2;23922:6;23918:15;23911:36;23726:228;:::o;23960:366::-;24102:3;24123:67;24187:2;24182:3;24123:67;:::i;:::-;24116:74;;24199:93;24288:3;24199:93;:::i;:::-;24317:2;24312:3;24308:12;24301:19;;23960:366;;;:::o;24332:419::-;24498:4;24536:2;24525:9;24521:18;24513:26;;24585:9;24579:4;24575:20;24571:1;24560:9;24556:17;24549:47;24613:131;24739:4;24613:131;:::i;:::-;24605:139;;24332:419;;;:::o;24757:223::-;24897:34;24893:1;24885:6;24881:14;24874:58;24966:6;24961:2;24953:6;24949:15;24942:31;24757:223;:::o;24986:366::-;25128:3;25149:67;25213:2;25208:3;25149:67;:::i;:::-;25142:74;;25225:93;25314:3;25225:93;:::i;:::-;25343:2;25338:3;25334:12;25327:19;;24986:366;;;:::o;25358:419::-;25524:4;25562:2;25551:9;25547:18;25539:26;;25611:9;25605:4;25601:20;25597:1;25586:9;25582:17;25575:47;25639:131;25765:4;25639:131;:::i;:::-;25631:139;;25358:419;;;:::o;25783:175::-;25923:27;25919:1;25911:6;25907:14;25900:51;25783:175;:::o;25964:366::-;26106:3;26127:67;26191:2;26186:3;26127:67;:::i;:::-;26120:74;;26203:93;26292:3;26203:93;:::i;:::-;26321:2;26316:3;26312:12;26305:19;;25964:366;;;:::o;26336:419::-;26502:4;26540:2;26529:9;26525:18;26517:26;;26589:9;26583:4;26579:20;26575:1;26564:9;26560:17;26553:47;26617:131;26743:4;26617:131;:::i;:::-;26609:139;;26336:419;;;:::o;26761:191::-;26801:3;26820:20;26838:1;26820:20;:::i;:::-;26815:25;;26854:20;26872:1;26854:20;:::i;:::-;26849:25;;26897:1;26894;26890:9;26883:16;;26918:3;26915:1;26912:10;26909:36;;;26925:18;;:::i;:::-;26909:36;26761:191;;;;:::o;26958:176::-;27098:28;27094:1;27086:6;27082:14;27075:52;26958:176;:::o;27140:366::-;27282:3;27303:67;27367:2;27362:3;27303:67;:::i;:::-;27296:74;;27379:93;27468:3;27379:93;:::i;:::-;27497:2;27492:3;27488:12;27481:19;;27140:366;;;:::o;27512:419::-;27678:4;27716:2;27705:9;27701:18;27693:26;;27765:9;27759:4;27755:20;27751:1;27740:9;27736:17;27729:47;27793:131;27919:4;27793:131;:::i;:::-;27785:139;;27512:419;;;:::o;27937:233::-;27976:3;27999:24;28017:5;27999:24;:::i;:::-;27990:33;;28045:66;28038:5;28035:77;28032:103;;28115:18;;:::i;:::-;28032:103;28162:1;28155:5;28151:13;28144:20;;27937:233;;;:::o;28176:169::-;28316:21;28312:1;28304:6;28300:14;28293:45;28176:169;:::o;28351:366::-;28493:3;28514:67;28578:2;28573:3;28514:67;:::i;:::-;28507:74;;28590:93;28679:3;28590:93;:::i;:::-;28708:2;28703:3;28699:12;28692:19;;28351:366;;;:::o;28723:419::-;28889:4;28927:2;28916:9;28912:18;28904:26;;28976:9;28970:4;28966:20;28962:1;28951:9;28947:17;28940:47;29004:131;29130:4;29004:131;:::i;:::-;28996:139;;28723:419;;;:::o;29148:194::-;29188:4;29208:20;29226:1;29208:20;:::i;:::-;29203:25;;29242:20;29260:1;29242:20;:::i;:::-;29237:25;;29286:1;29283;29279:9;29271:17;;29310:1;29304:4;29301:11;29298:37;;;29315:18;;:::i;:::-;29298:37;29148:194;;;;:::o;29348:180::-;29396:77;29393:1;29386:88;29493:4;29490:1;29483:15;29517:4;29514:1;29507:15;29534:180;29582:77;29579:1;29572:88;29679:4;29676:1;29669:15;29703:4;29700:1;29693:15;29720:114;29787:6;29821:5;29815:12;29805:22;;29720:114;;;:::o;29840:184::-;29939:11;29973:6;29968:3;29961:19;30013:4;30008:3;30004:14;29989:29;;29840:184;;;;:::o;30030:132::-;30097:4;30120:3;30112:11;;30150:4;30145:3;30141:14;30133:22;;30030:132;;;:::o;30168:108::-;30245:24;30263:5;30245:24;:::i;:::-;30240:3;30233:37;30168:108;;:::o;30282:179::-;30351:10;30372:46;30414:3;30406:6;30372:46;:::i;:::-;30450:4;30445:3;30441:14;30427:28;;30282:179;;;;:::o;30467:113::-;30537:4;30569;30564:3;30560:14;30552:22;;30467:113;;;:::o;30616:732::-;30735:3;30764:54;30812:5;30764:54;:::i;:::-;30834:86;30913:6;30908:3;30834:86;:::i;:::-;30827:93;;30944:56;30994:5;30944:56;:::i;:::-;31023:7;31054:1;31039:284;31064:6;31061:1;31058:13;31039:284;;;31140:6;31134:13;31167:63;31226:3;31211:13;31167:63;:::i;:::-;31160:70;;31253:60;31306:6;31253:60;:::i;:::-;31243:70;;31099:224;31086:1;31083;31079:9;31074:14;;31039:284;;;31043:14;31339:3;31332:10;;30740:608;;;30616:732;;;;:::o;31354:831::-;31617:4;31655:3;31644:9;31640:19;31632:27;;31669:71;31737:1;31726:9;31722:17;31713:6;31669:71;:::i;:::-;31750:80;31826:2;31815:9;31811:18;31802:6;31750:80;:::i;:::-;31877:9;31871:4;31867:20;31862:2;31851:9;31847:18;31840:48;31905:108;32008:4;31999:6;31905:108;:::i;:::-;31897:116;;32023:72;32091:2;32080:9;32076:18;32067:6;32023:72;:::i;:::-;32105:73;32173:3;32162:9;32158:19;32149:6;32105:73;:::i;:::-;31354:831;;;;;;;;:::o;32191:180::-;32239:77;32236:1;32229:88;32336:4;32333:1;32326:15;32360:4;32357:1;32350:15;32377:185;32417:1;32434:20;32452:1;32434:20;:::i;:::-;32429:25;;32468:20;32486:1;32468:20;:::i;:::-;32463:25;;32507:1;32497:35;;32512:18;;:::i;:::-;32497:35;32554:1;32551;32547:9;32542:14;;32377:185;;;;:::o;32568:220::-;32708:34;32704:1;32696:6;32692:14;32685:58;32777:3;32772:2;32764:6;32760:15;32753:28;32568:220;:::o;32794:366::-;32936:3;32957:67;33021:2;33016:3;32957:67;:::i;:::-;32950:74;;33033:93;33122:3;33033:93;:::i;:::-;33151:2;33146:3;33142:12;33135:19;;32794:366;;;:::o;33166:419::-;33332:4;33370:2;33359:9;33355:18;33347:26;;33419:9;33413:4;33409:20;33405:1;33394:9;33390:17;33383:47;33447:131;33573:4;33447:131;:::i;:::-;33439:139;;33166:419;;;:::o;33591:177::-;33731:29;33727:1;33719:6;33715:14;33708:53;33591:177;:::o;33774:366::-;33916:3;33937:67;34001:2;33996:3;33937:67;:::i;:::-;33930:74;;34013:93;34102:3;34013:93;:::i;:::-;34131:2;34126:3;34122:12;34115:19;;33774:366;;;:::o;34146:419::-;34312:4;34350:2;34339:9;34335:18;34327:26;;34399:9;34393:4;34389:20;34385:1;34374:9;34370:17;34363:47;34427:131;34553:4;34427:131;:::i;:::-;34419:139;;34146:419;;;:::o

Swarm Source

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