ETH Price: $2,697.94 (-0.07%)

Token

Layer Zero (L0)
 

Overview

Max Total Supply

1,000,000 L0

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1.599760024 L0

Value
$0.00
0x62c08fbb26f32E9254fb1b2c66212bd834eFDCEC
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:
LayerZero

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 https://t.me/Layerzero_erc20

**/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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 LayerZero is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Layer Zero";
    string private constant _symbol = "L0";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _MFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _MFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 40;

    //Original Fee
    uint256 private _MFee = _MFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousMFee = _MFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;
    mapping(address => uint256) public _buyMap;
    address payable private _developmentAddress =
        payable(0xaa56a9200a9478f9772E97F76061e2e60f1E450e);
    address payable private _marketingAddress =
        payable(0xaa56a9200a9478f9772E97F76061e2e60f1E450e);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = (_tTotal * 2) / 100;
    uint256 public _swapTokensAtAmount = _tTotal / 1000;

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        ); //
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = 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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_MFee == 0 && _taxFee == 0) return;

        _previousMFee = _MFee;
        _previoustaxFee = _taxFee;

        _MFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _MFee = _previousMFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(
                !bots[from] && !bots[to],
                "TOKEN: Your account is blacklisted!"
            );

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }

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

            if (contractTokenBalance >= _swapTokensAtAmount * 8) {
                contractTokenBalance = _swapTokensAtAmount * 8;
            }

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

        bool takeFee = true;

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

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

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

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

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

    function manualswap() external {
        require(
            _msgSender() == _developmentAddress ||
                _msgSender() == _marketingAddress
        );
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

    receive() external payable {}

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

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

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

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(
        uint256 MFeeOnBuy,
        uint256 MFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        _MFeeOnBuy = MFeeOnBuy;
        _MFeeOnSell = MFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        uint256 totalFee = _MFeeOnBuy +
            _MFeeOnSell +
            _taxFeeOnBuy +
            _taxFeeOnSell;
        require(totalFee <= 60, "Total Fees cannot be more than 60%");
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = (_tTotal * maxTxAmount) / 100;
        require(_maxTxAmount >= _tTotal / 100);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = (_tTotal * maxWalletSize) / 100;
        require(_maxWalletSize >= _tTotal / 100);
    }

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

    function updateMarketingAddress(address _newmarketingAddress)
        public
        onlyOwner
    {
        _marketingAddress = payable(_newmarketingAddress);
    }
}

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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"MFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"MFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newmarketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b919062000783565b6000196200002a9190620007ea565b600655600060085560146009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f5573aa56a9200a9478f9772e97f76061e2e60f1e450e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aa56a9200a9478f9772e97f76061e2e60f1e450e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066038d7ea4c680006016556064600266038d7ea4c6800062000176919062000825565b62000182919062000886565b6017556103e866038d7ea4c680006200019c919062000886565b601855348015620001ac57600080fd5b506000620001bf6200071960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002746200071960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035357600080fd5b505afa15801562000368573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038e919062000928565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f157600080fd5b505afa15801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c919062000928565b6040518363ffffffff1660e01b81526004016200044b9291906200096b565b602060405180830381600087803b1580156200046657600080fd5b505af11580156200047b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a1919062000928565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004f76200072160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006a46200071960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200070a9190620009a9565b60405180910390a350620009c6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000790826200074a565b91506200079d836200074a565b925082620007b057620007af62000754565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007f7826200074a565b915062000804836200074a565b9250828210156200081a5762000819620007bb565b5b828203905092915050565b600062000832826200074a565b91506200083f836200074a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200087b576200087a620007bb565b5b828202905092915050565b600062000893826200074a565b9150620008a0836200074a565b925082620008b357620008b262000754565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008f082620008c3565b9050919050565b6200090281620008e3565b81146200090e57600080fd5b50565b6000815190506200092281620008f7565b92915050565b600060208284031215620009415762000940620008be565b5b6000620009518482850162000911565b91505092915050565b6200096581620008e3565b82525050565b60006040820190506200098260008301856200095a565b6200099160208301846200095a565b9392505050565b620009a3816200074a565b82525050565b6000602082019050620009c0600083018462000998565b92915050565b613ee780620009d66000396000f3fe6080604052600436106101d05760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638da5cb5b116100d15780638da5cb5b146104f85780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b806374010ece146104675780637d1db4a5146104905780637f2feddc146104bb576101d7565b80632fd689e31161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd146102985780632369bf83146102c357806323b872dd146102ec576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612de1565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612eb2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f0a565b61087b565b6040516102649190612f65565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612fdf565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190613009565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613024565b6108ce565b005b3480156102f857600080fd5b50610313600480360381019061030e9190613051565b6109a7565b6040516103209190612f65565b60405180910390f35b34801561033557600080fd5b5061033e610a80565b60405161034b9190613009565b60405180910390f35b34801561036057600080fd5b50610369610a86565b60405161037691906130c0565b60405180910390f35b34801561038b57600080fd5b50610394610a8f565b6040516103a191906130ea565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613024565b610ab5565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190613131565b610ba5565b005b34801561040857600080fd5b50610411610c57565b005b34801561041f57600080fd5b5061043a60048036038101906104359190613024565b610c68565b6040516104479190613009565b60405180910390f35b34801561045c57600080fd5b50610465610cb9565b005b34801561047357600080fd5b5061048e6004803603810190610489919061315e565b610e0c565b005b34801561049c57600080fd5b506104a5610eeb565b6040516104b29190613009565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613024565b610ef1565b6040516104ef9190613009565b60405180910390f35b34801561050457600080fd5b5061050d610f09565b60405161051a91906130ea565b60405180910390f35b34801561052f57600080fd5b50610538610f32565b6040516105459190613009565b60405180910390f35b34801561055a57600080fd5b50610563610f38565b6040516105709190612eb2565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b919061315e565b610f75565b005b3480156105ae57600080fd5b506105c960048036038101906105c4919061318b565b611014565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612f0a565b61113e565b6040516105ff9190612f65565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613024565b61115c565b60405161063c9190612f65565b60405180910390f35b34801561065157600080fd5b5061065a61117c565b005b34801561066857600080fd5b50610683600480360381019061067e919061324d565b611255565b005b34801561069157600080fd5b506106ac60048036038101906106a791906132ad565b61138f565b6040516106b99190613009565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e4919061315e565b611416565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613024565b6114f5565b005b61071c6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613339565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd613359565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906133b7565b9150506107ac565b5050565b60606040518060400160405280600a81526020017f4c61796572205a65726f00000000000000000000000000000000000000000000815250905090565b600061088f6108886116b7565b84846116bf565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6108d66116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095a90613339565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006109b484848461188a565b610a75846109c06116b7565b610a7085604051806060016040528060288152602001613e8a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a266116b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212e9092919063ffffffff16565b6116bf565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abd6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4190613339565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610bad6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190613339565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610c6581612192565b50565b6000610cb2600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fe565b9050919050565b610cc16116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590613339565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e146116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890613339565b60405180910390fd5b60648166038d7ea4c68000610eb69190613400565b610ec09190613489565b601681905550606466038d7ea4c68000610eda9190613489565b6016541015610ee857600080fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600281526020017f4c30000000000000000000000000000000000000000000000000000000000000815250905090565b610f7d6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190613339565b60405180910390fd5b8060188190555050565b61101c6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090613339565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506000600b54600954600a546008546110dd91906134ba565b6110e791906134ba565b6110f191906134ba565b9050603c811115611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90613582565b60405180910390fd5b5050505050565b600061115261114b6116b7565b848461188a565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111bd6116b7565b73ffffffffffffffffffffffffffffffffffffffff1614806112335750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661121b6116b7565b73ffffffffffffffffffffffffffffffffffffffff16145b61123c57600080fd5b600061124730610c68565b90506112528161226c565b50565b61125d6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190613339565b60405180910390fd5b60005b838390508110156113895781600560008686858181106113105761130f613359565b5b90506020020160208101906113259190613024565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611381906133b7565b9150506112ed565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141e6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613339565b60405180910390fd5b60648166038d7ea4c680006114c09190613400565b6114ca9190613489565b601781905550606466038d7ea4c680006114e49190613489565b60175410156114f257600080fd5b50565b6114fd6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158190613339565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190613614565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906136a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613738565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161187d9190613009565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f1906137ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561196a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119619061385c565b60405180910390fd5b600081116119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a4906138ee565b60405180910390fd5b6119b5610f09565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2357506119f3610f09565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e2d57601560149054906101000a900460ff16611ab257611a44610f09565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890613980565b60405180910390fd5b5b601654811115611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee906139ec565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b9b5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd190613a7e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c875760175481611c3c84610c68565b611c4691906134ba565b10611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90613b10565b60405180910390fd5b5b6000611c9230610c68565b9050600060185482101590506008601854611cad9190613400565b8210611cc5576008601854611cc29190613400565b91505b808015611cdd575060158054906101000a900460ff16155b8015611d375750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4f5750601560169054906101000a900460ff165b8015611da55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611dfb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e2a57611e098261226c565b600047905067011c37937e080000811115611e2857611e2747612192565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ed45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f875750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f865750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f95576000905061211c565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120405750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561205857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121035750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561211b57600a54600c81905550600b54600d819055505b5b612128848484846124f2565b50505050565b6000838311158290612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d9190612eb2565b60405180910390fd5b50600083856121859190613b30565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121fa573d6000803e3d6000fd5b5050565b6000600654821115612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c90613bd6565b60405180910390fd5b600061224f61251f565b9050612264818461254a90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122a3576122a2612c40565b5b6040519080825280602002602001820160405280156122d15781602001602082028036833780820191505090505b50905030816000815181106122e9576122e8613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561238b57600080fd5b505afa15801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c39190613c0b565b816001815181106123d7576123d6613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061243e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116bf565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124a2959493929190613d31565b600060405180830381600087803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612500576124ff612594565b5b61250b8484846125d7565b80612519576125186127a2565b5b50505050565b600080600061252c6127b6565b91509150612543818361254a90919063ffffffff16565b9250505090565b600061258c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612812565b905092915050565b6000600c541480156125a857506000600d54145b156125b2576125d5565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125e987612875565b95509550955095509550955061264786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126dc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272881612985565b6127328483612a42565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161278f9190613009565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506127e866038d7ea4c6800060065461254a90919063ffffffff16565b8210156128055760065466038d7ea4c6800093509350505061280e565b81819350935050505b9091565b60008083118290612859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128509190612eb2565b60405180910390fd5b50600083856128689190613489565b9050809150509392505050565b60008060008060008060008060006128928a600c54600d54612a7c565b92509250925060006128a261251f565b905060008060006128b58e878787612b12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061291f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061212e565b905092915050565b600080828461293691906134ba565b90508381101561297b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290613dd7565b60405180910390fd5b8091505092915050565b600061298f61251f565b905060006129a68284612b9b90919063ffffffff16565b90506129fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a57826006546128dd90919063ffffffff16565b600681905550612a728160075461292790919063ffffffff16565b6007819055505050565b600080600080612aa86064612a9a888a612b9b90919063ffffffff16565b61254a90919063ffffffff16565b90506000612ad26064612ac4888b612b9b90919063ffffffff16565b61254a90919063ffffffff16565b90506000612afb82612aed858c6128dd90919063ffffffff16565b6128dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b2b8589612b9b90919063ffffffff16565b90506000612b428689612b9b90919063ffffffff16565b90506000612b598789612b9b90919063ffffffff16565b90506000612b8282612b7485876128dd90919063ffffffff16565b6128dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612bae5760009050612c10565b60008284612bbc9190613400565b9050828482612bcb9190613489565b14612c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0290613e69565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c7882612c2f565b810181811067ffffffffffffffff82111715612c9757612c96612c40565b5b80604052505050565b6000612caa612c16565b9050612cb68282612c6f565b919050565b600067ffffffffffffffff821115612cd657612cd5612c40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d1782612cec565b9050919050565b612d2781612d0c565b8114612d3257600080fd5b50565b600081359050612d4481612d1e565b92915050565b6000612d5d612d5884612cbb565b612ca0565b90508083825260208201905060208402830185811115612d8057612d7f612ce7565b5b835b81811015612da95780612d958882612d35565b845260208401935050602081019050612d82565b5050509392505050565b600082601f830112612dc857612dc7612c2a565b5b8135612dd8848260208601612d4a565b91505092915050565b600060208284031215612df757612df6612c20565b5b600082013567ffffffffffffffff811115612e1557612e14612c25565b5b612e2184828501612db3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e64578082015181840152602081019050612e49565b83811115612e73576000848401525b50505050565b6000612e8482612e2a565b612e8e8185612e35565b9350612e9e818560208601612e46565b612ea781612c2f565b840191505092915050565b60006020820190508181036000830152612ecc8184612e79565b905092915050565b6000819050919050565b612ee781612ed4565b8114612ef257600080fd5b50565b600081359050612f0481612ede565b92915050565b60008060408385031215612f2157612f20612c20565b5b6000612f2f85828601612d35565b9250506020612f4085828601612ef5565b9150509250929050565b60008115159050919050565b612f5f81612f4a565b82525050565b6000602082019050612f7a6000830184612f56565b92915050565b6000819050919050565b6000612fa5612fa0612f9b84612cec565b612f80565b612cec565b9050919050565b6000612fb782612f8a565b9050919050565b6000612fc982612fac565b9050919050565b612fd981612fbe565b82525050565b6000602082019050612ff46000830184612fd0565b92915050565b61300381612ed4565b82525050565b600060208201905061301e6000830184612ffa565b92915050565b60006020828403121561303a57613039612c20565b5b600061304884828501612d35565b91505092915050565b60008060006060848603121561306a57613069612c20565b5b600061307886828701612d35565b935050602061308986828701612d35565b925050604061309a86828701612ef5565b9150509250925092565b600060ff82169050919050565b6130ba816130a4565b82525050565b60006020820190506130d560008301846130b1565b92915050565b6130e481612d0c565b82525050565b60006020820190506130ff60008301846130db565b92915050565b61310e81612f4a565b811461311957600080fd5b50565b60008135905061312b81613105565b92915050565b60006020828403121561314757613146612c20565b5b60006131558482850161311c565b91505092915050565b60006020828403121561317457613173612c20565b5b600061318284828501612ef5565b91505092915050565b600080600080608085870312156131a5576131a4612c20565b5b60006131b387828801612ef5565b94505060206131c487828801612ef5565b93505060406131d587828801612ef5565b92505060606131e687828801612ef5565b91505092959194509250565b600080fd5b60008083601f84011261320d5761320c612c2a565b5b8235905067ffffffffffffffff81111561322a576132296131f2565b5b60208301915083602082028301111561324657613245612ce7565b5b9250929050565b60008060006040848603121561326657613265612c20565b5b600084013567ffffffffffffffff81111561328457613283612c25565b5b613290868287016131f7565b935093505060206132a38682870161311c565b9150509250925092565b600080604083850312156132c4576132c3612c20565b5b60006132d285828601612d35565b92505060206132e385828601612d35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613323602083612e35565b915061332e826132ed565b602082019050919050565b6000602082019050818103600083015261335281613316565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133c282612ed4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133f5576133f4613388565b5b600182019050919050565b600061340b82612ed4565b915061341683612ed4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561344f5761344e613388565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061349482612ed4565b915061349f83612ed4565b9250826134af576134ae61345a565b5b828204905092915050565b60006134c582612ed4565b91506134d083612ed4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561350557613504613388565b5b828201905092915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e203660008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b600061356c602283612e35565b915061357782613510565b604082019050919050565b6000602082019050818103600083015261359b8161355f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135fe602683612e35565b9150613609826135a2565b604082019050919050565b6000602082019050818103600083015261362d816135f1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613690602483612e35565b915061369b82613634565b604082019050919050565b600060208201905081810360008301526136bf81613683565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613722602283612e35565b915061372d826136c6565b604082019050919050565b6000602082019050818103600083015261375181613715565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137b4602583612e35565b91506137bf82613758565b604082019050919050565b600060208201905081810360008301526137e3816137a7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613846602383612e35565b9150613851826137ea565b604082019050919050565b6000602082019050818103600083015261387581613839565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006138d8602983612e35565b91506138e38261387c565b604082019050919050565b60006020820190508181036000830152613907816138cb565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061396a603f83612e35565b91506139758261390e565b604082019050919050565b600060208201905081810360008301526139998161395d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006139d6601c83612e35565b91506139e1826139a0565b602082019050919050565b60006020820190508181036000830152613a05816139c9565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a68602383612e35565b9150613a7382613a0c565b604082019050919050565b60006020820190508181036000830152613a9781613a5b565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613afa602383612e35565b9150613b0582613a9e565b604082019050919050565b60006020820190508181036000830152613b2981613aed565b9050919050565b6000613b3b82612ed4565b9150613b4683612ed4565b925082821015613b5957613b58613388565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613bc0602a83612e35565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b600081519050613c0581612d1e565b92915050565b600060208284031215613c2157613c20612c20565b5b6000613c2f84828501613bf6565b91505092915050565b6000819050919050565b6000613c5d613c58613c5384613c38565b612f80565b612ed4565b9050919050565b613c6d81613c42565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ca881612d0c565b82525050565b6000613cba8383613c9f565b60208301905092915050565b6000602082019050919050565b6000613cde82613c73565b613ce88185613c7e565b9350613cf383613c8f565b8060005b83811015613d24578151613d0b8882613cae565b9750613d1683613cc6565b925050600181019050613cf7565b5085935050505092915050565b600060a082019050613d466000830188612ffa565b613d536020830187613c64565b8181036040830152613d658186613cd3565b9050613d7460608301856130db565b613d816080830184612ffa565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613dc1601b83612e35565b9150613dcc82613d8b565b602082019050919050565b60006020820190508181036000830152613df081613db4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e53602183612e35565b9150613e5e82613df7565b604082019050919050565b60006020820190508181036000830152613e8281613e46565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e75010bc4666db15a6bfb785f4a8feb46a1e6ea14ce017a8ec390443632ac00a64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638da5cb5b116100d15780638da5cb5b146104f85780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b806374010ece146104675780637d1db4a5146104905780637f2feddc146104bb576101d7565b80632fd689e31161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd146102985780632369bf83146102c357806323b872dd146102ec576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612de1565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612eb2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f0a565b61087b565b6040516102649190612f65565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612fdf565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190613009565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613024565b6108ce565b005b3480156102f857600080fd5b50610313600480360381019061030e9190613051565b6109a7565b6040516103209190612f65565b60405180910390f35b34801561033557600080fd5b5061033e610a80565b60405161034b9190613009565b60405180910390f35b34801561036057600080fd5b50610369610a86565b60405161037691906130c0565b60405180910390f35b34801561038b57600080fd5b50610394610a8f565b6040516103a191906130ea565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613024565b610ab5565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190613131565b610ba5565b005b34801561040857600080fd5b50610411610c57565b005b34801561041f57600080fd5b5061043a60048036038101906104359190613024565b610c68565b6040516104479190613009565b60405180910390f35b34801561045c57600080fd5b50610465610cb9565b005b34801561047357600080fd5b5061048e6004803603810190610489919061315e565b610e0c565b005b34801561049c57600080fd5b506104a5610eeb565b6040516104b29190613009565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613024565b610ef1565b6040516104ef9190613009565b60405180910390f35b34801561050457600080fd5b5061050d610f09565b60405161051a91906130ea565b60405180910390f35b34801561052f57600080fd5b50610538610f32565b6040516105459190613009565b60405180910390f35b34801561055a57600080fd5b50610563610f38565b6040516105709190612eb2565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b919061315e565b610f75565b005b3480156105ae57600080fd5b506105c960048036038101906105c4919061318b565b611014565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612f0a565b61113e565b6040516105ff9190612f65565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613024565b61115c565b60405161063c9190612f65565b60405180910390f35b34801561065157600080fd5b5061065a61117c565b005b34801561066857600080fd5b50610683600480360381019061067e919061324d565b611255565b005b34801561069157600080fd5b506106ac60048036038101906106a791906132ad565b61138f565b6040516106b99190613009565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e4919061315e565b611416565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613024565b6114f5565b005b61071c6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613339565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd613359565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906133b7565b9150506107ac565b5050565b60606040518060400160405280600a81526020017f4c61796572205a65726f00000000000000000000000000000000000000000000815250905090565b600061088f6108886116b7565b84846116bf565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6108d66116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095a90613339565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006109b484848461188a565b610a75846109c06116b7565b610a7085604051806060016040528060288152602001613e8a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a266116b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212e9092919063ffffffff16565b6116bf565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abd6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4190613339565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610bad6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190613339565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610c6581612192565b50565b6000610cb2600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fe565b9050919050565b610cc16116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590613339565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e146116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890613339565b60405180910390fd5b60648166038d7ea4c68000610eb69190613400565b610ec09190613489565b601681905550606466038d7ea4c68000610eda9190613489565b6016541015610ee857600080fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600281526020017f4c30000000000000000000000000000000000000000000000000000000000000815250905090565b610f7d6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190613339565b60405180910390fd5b8060188190555050565b61101c6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090613339565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506000600b54600954600a546008546110dd91906134ba565b6110e791906134ba565b6110f191906134ba565b9050603c811115611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90613582565b60405180910390fd5b5050505050565b600061115261114b6116b7565b848461188a565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111bd6116b7565b73ffffffffffffffffffffffffffffffffffffffff1614806112335750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661121b6116b7565b73ffffffffffffffffffffffffffffffffffffffff16145b61123c57600080fd5b600061124730610c68565b90506112528161226c565b50565b61125d6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190613339565b60405180910390fd5b60005b838390508110156113895781600560008686858181106113105761130f613359565b5b90506020020160208101906113259190613024565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611381906133b7565b9150506112ed565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141e6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613339565b60405180910390fd5b60648166038d7ea4c680006114c09190613400565b6114ca9190613489565b601781905550606466038d7ea4c680006114e49190613489565b60175410156114f257600080fd5b50565b6114fd6116b7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158190613339565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190613614565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906136a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613738565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161187d9190613009565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f1906137ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561196a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119619061385c565b60405180910390fd5b600081116119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a4906138ee565b60405180910390fd5b6119b5610f09565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2357506119f3610f09565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e2d57601560149054906101000a900460ff16611ab257611a44610f09565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890613980565b60405180910390fd5b5b601654811115611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee906139ec565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b9b5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd190613a7e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c875760175481611c3c84610c68565b611c4691906134ba565b10611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90613b10565b60405180910390fd5b5b6000611c9230610c68565b9050600060185482101590506008601854611cad9190613400565b8210611cc5576008601854611cc29190613400565b91505b808015611cdd575060158054906101000a900460ff16155b8015611d375750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4f5750601560169054906101000a900460ff165b8015611da55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611dfb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e2a57611e098261226c565b600047905067011c37937e080000811115611e2857611e2747612192565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ed45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f875750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f865750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f95576000905061211c565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120405750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561205857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121035750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561211b57600a54600c81905550600b54600d819055505b5b612128848484846124f2565b50505050565b6000838311158290612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d9190612eb2565b60405180910390fd5b50600083856121859190613b30565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121fa573d6000803e3d6000fd5b5050565b6000600654821115612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c90613bd6565b60405180910390fd5b600061224f61251f565b9050612264818461254a90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122a3576122a2612c40565b5b6040519080825280602002602001820160405280156122d15781602001602082028036833780820191505090505b50905030816000815181106122e9576122e8613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561238b57600080fd5b505afa15801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c39190613c0b565b816001815181106123d7576123d6613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061243e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116bf565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124a2959493929190613d31565b600060405180830381600087803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612500576124ff612594565b5b61250b8484846125d7565b80612519576125186127a2565b5b50505050565b600080600061252c6127b6565b91509150612543818361254a90919063ffffffff16565b9250505090565b600061258c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612812565b905092915050565b6000600c541480156125a857506000600d54145b156125b2576125d5565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125e987612875565b95509550955095509550955061264786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126dc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272881612985565b6127328483612a42565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161278f9190613009565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506127e866038d7ea4c6800060065461254a90919063ffffffff16565b8210156128055760065466038d7ea4c6800093509350505061280e565b81819350935050505b9091565b60008083118290612859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128509190612eb2565b60405180910390fd5b50600083856128689190613489565b9050809150509392505050565b60008060008060008060008060006128928a600c54600d54612a7c565b92509250925060006128a261251f565b905060008060006128b58e878787612b12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061291f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061212e565b905092915050565b600080828461293691906134ba565b90508381101561297b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290613dd7565b60405180910390fd5b8091505092915050565b600061298f61251f565b905060006129a68284612b9b90919063ffffffff16565b90506129fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a57826006546128dd90919063ffffffff16565b600681905550612a728160075461292790919063ffffffff16565b6007819055505050565b600080600080612aa86064612a9a888a612b9b90919063ffffffff16565b61254a90919063ffffffff16565b90506000612ad26064612ac4888b612b9b90919063ffffffff16565b61254a90919063ffffffff16565b90506000612afb82612aed858c6128dd90919063ffffffff16565b6128dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b2b8589612b9b90919063ffffffff16565b90506000612b428689612b9b90919063ffffffff16565b90506000612b598789612b9b90919063ffffffff16565b90506000612b8282612b7485876128dd90919063ffffffff16565b6128dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612bae5760009050612c10565b60008284612bbc9190613400565b9050828482612bcb9190613489565b14612c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0290613e69565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c7882612c2f565b810181811067ffffffffffffffff82111715612c9757612c96612c40565b5b80604052505050565b6000612caa612c16565b9050612cb68282612c6f565b919050565b600067ffffffffffffffff821115612cd657612cd5612c40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d1782612cec565b9050919050565b612d2781612d0c565b8114612d3257600080fd5b50565b600081359050612d4481612d1e565b92915050565b6000612d5d612d5884612cbb565b612ca0565b90508083825260208201905060208402830185811115612d8057612d7f612ce7565b5b835b81811015612da95780612d958882612d35565b845260208401935050602081019050612d82565b5050509392505050565b600082601f830112612dc857612dc7612c2a565b5b8135612dd8848260208601612d4a565b91505092915050565b600060208284031215612df757612df6612c20565b5b600082013567ffffffffffffffff811115612e1557612e14612c25565b5b612e2184828501612db3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e64578082015181840152602081019050612e49565b83811115612e73576000848401525b50505050565b6000612e8482612e2a565b612e8e8185612e35565b9350612e9e818560208601612e46565b612ea781612c2f565b840191505092915050565b60006020820190508181036000830152612ecc8184612e79565b905092915050565b6000819050919050565b612ee781612ed4565b8114612ef257600080fd5b50565b600081359050612f0481612ede565b92915050565b60008060408385031215612f2157612f20612c20565b5b6000612f2f85828601612d35565b9250506020612f4085828601612ef5565b9150509250929050565b60008115159050919050565b612f5f81612f4a565b82525050565b6000602082019050612f7a6000830184612f56565b92915050565b6000819050919050565b6000612fa5612fa0612f9b84612cec565b612f80565b612cec565b9050919050565b6000612fb782612f8a565b9050919050565b6000612fc982612fac565b9050919050565b612fd981612fbe565b82525050565b6000602082019050612ff46000830184612fd0565b92915050565b61300381612ed4565b82525050565b600060208201905061301e6000830184612ffa565b92915050565b60006020828403121561303a57613039612c20565b5b600061304884828501612d35565b91505092915050565b60008060006060848603121561306a57613069612c20565b5b600061307886828701612d35565b935050602061308986828701612d35565b925050604061309a86828701612ef5565b9150509250925092565b600060ff82169050919050565b6130ba816130a4565b82525050565b60006020820190506130d560008301846130b1565b92915050565b6130e481612d0c565b82525050565b60006020820190506130ff60008301846130db565b92915050565b61310e81612f4a565b811461311957600080fd5b50565b60008135905061312b81613105565b92915050565b60006020828403121561314757613146612c20565b5b60006131558482850161311c565b91505092915050565b60006020828403121561317457613173612c20565b5b600061318284828501612ef5565b91505092915050565b600080600080608085870312156131a5576131a4612c20565b5b60006131b387828801612ef5565b94505060206131c487828801612ef5565b93505060406131d587828801612ef5565b92505060606131e687828801612ef5565b91505092959194509250565b600080fd5b60008083601f84011261320d5761320c612c2a565b5b8235905067ffffffffffffffff81111561322a576132296131f2565b5b60208301915083602082028301111561324657613245612ce7565b5b9250929050565b60008060006040848603121561326657613265612c20565b5b600084013567ffffffffffffffff81111561328457613283612c25565b5b613290868287016131f7565b935093505060206132a38682870161311c565b9150509250925092565b600080604083850312156132c4576132c3612c20565b5b60006132d285828601612d35565b92505060206132e385828601612d35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613323602083612e35565b915061332e826132ed565b602082019050919050565b6000602082019050818103600083015261335281613316565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133c282612ed4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133f5576133f4613388565b5b600182019050919050565b600061340b82612ed4565b915061341683612ed4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561344f5761344e613388565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061349482612ed4565b915061349f83612ed4565b9250826134af576134ae61345a565b5b828204905092915050565b60006134c582612ed4565b91506134d083612ed4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561350557613504613388565b5b828201905092915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e203660008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b600061356c602283612e35565b915061357782613510565b604082019050919050565b6000602082019050818103600083015261359b8161355f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135fe602683612e35565b9150613609826135a2565b604082019050919050565b6000602082019050818103600083015261362d816135f1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613690602483612e35565b915061369b82613634565b604082019050919050565b600060208201905081810360008301526136bf81613683565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613722602283612e35565b915061372d826136c6565b604082019050919050565b6000602082019050818103600083015261375181613715565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137b4602583612e35565b91506137bf82613758565b604082019050919050565b600060208201905081810360008301526137e3816137a7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613846602383612e35565b9150613851826137ea565b604082019050919050565b6000602082019050818103600083015261387581613839565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006138d8602983612e35565b91506138e38261387c565b604082019050919050565b60006020820190508181036000830152613907816138cb565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061396a603f83612e35565b91506139758261390e565b604082019050919050565b600060208201905081810360008301526139998161395d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006139d6601c83612e35565b91506139e1826139a0565b602082019050919050565b60006020820190508181036000830152613a05816139c9565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a68602383612e35565b9150613a7382613a0c565b604082019050919050565b60006020820190508181036000830152613a9781613a5b565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613afa602383612e35565b9150613b0582613a9e565b604082019050919050565b60006020820190508181036000830152613b2981613aed565b9050919050565b6000613b3b82612ed4565b9150613b4683612ed4565b925082821015613b5957613b58613388565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613bc0602a83612e35565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b600081519050613c0581612d1e565b92915050565b600060208284031215613c2157613c20612c20565b5b6000613c2f84828501613bf6565b91505092915050565b6000819050919050565b6000613c5d613c58613c5384613c38565b612f80565b612ed4565b9050919050565b613c6d81613c42565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ca881612d0c565b82525050565b6000613cba8383613c9f565b60208301905092915050565b6000602082019050919050565b6000613cde82613c73565b613ce88185613c7e565b9350613cf383613c8f565b8060005b83811015613d24578151613d0b8882613cae565b9750613d1683613cc6565b925050600181019050613cf7565b5085935050505092915050565b600060a082019050613d466000830188612ffa565b613d536020830187613c64565b8181036040830152613d658186613cd3565b9050613d7460608301856130db565b613d816080830184612ffa565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613dc1601b83612e35565b9150613dcc82613d8b565b602082019050919050565b60006020820190508181036000830152613df081613db4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e53602183612e35565b9150613e5e82613df7565b604082019050919050565b60006020820190508181036000830152613e8281613e46565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e75010bc4666db15a6bfb785f4a8feb46a1e6ea14ce017a8ec390443632ac00a64736f6c63430008090033

Deployed Bytecode Sourcemap

4193:14311:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13026:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6707:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7632:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5530:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18331:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7833:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5829:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6893:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5578:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13203:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17548:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12875:143;;;;;;;;;;;;;:::i;:::-;;7087:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1645:148;;;;;;;;;;;;;:::i;:::-;;17688:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5727:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5255:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1431:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5771:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6798:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17334:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16776:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7233:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5212:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12590:277;;;;;;;;;;;;;:::i;:::-;;18063:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7440:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17871;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1801:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13026:169;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13102:9:::1;13097:91;13121:5;:12;13117:1;:16;13097:91;;;13172:4;13155;:14;13160:5;13166:1;13160:8;;;;;;;;:::i;:::-;;;;;;;;13155:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13135:3;;;;;:::i;:::-;;;;13097:91;;;;13026:169:::0;:::o;6707:83::-;6744:13;6777:5;;;;;;;;;;;;;;;;;6770:12;;6707:83;:::o;7632:193::-;7734:4;7756:39;7765:12;:10;:12::i;:::-;7779:7;7788:6;7756:8;:39::i;:::-;7813:4;7806:11;;7632:193;;;;:::o;5530:41::-;;;;;;;;;;;;;:::o;6984:95::-;7037:7;4739:15;7057:14;;6984:95;:::o;18331:170::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18472:20:::1;18444:17;;:49;;;;;;;;;;;;;;;;;;18331:170:::0;:::o;7833:446::-;7965:4;7982:36;7992:6;8000:9;8011:6;7982:9;:36::i;:::-;8029:220;8052:6;8073:12;:10;:12::i;:::-;8100:138;8156:6;8100:138;;;;;;;;;;;;;;;;;:11;:19;8112:6;8100:19;;;;;;;;;;;;;;;:33;8120:12;:10;:12::i;:::-;8100:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8029:8;:220::i;:::-;8267:4;8260:11;;7833:446;;;;;:::o;5829:51::-;;;;:::o;6893:83::-;6934:5;4413:1;6952:16;;6893:83;:::o;5578:28::-;;;;;;;;;;;;;:::o;13203:92::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13282:5:::1;13267:4;:12;13272:6;13267:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13203:92:::0;:::o;17548:101::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17629:12:::1;17615:11;;:26;;;;;;;;;;;;;;;;;;17548:101:::0;:::o;12875:143::-;12917:26;12946:21;12917:50;;12978:32;12991:18;12978:12;:32::i;:::-;12906:112;12875:143::o;7087:138::-;7153:7;7180:37;7200:7;:16;7208:7;7200:16;;;;;;;;;;;;;;;;7180:19;:37::i;:::-;7173:44;;7087:138;;;:::o;1645:148::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1752:1:::1;1715:40;;1736:6;::::0;::::1;;;;;;;;1715:40;;;;;;;;;;;;1783:1;1766:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1645:148::o:0;17688:175::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17803:3:::1;17788:11;4739:15;17778:21;;;;:::i;:::-;17777:29;;;;:::i;:::-;17762:12;:44;;;;17851:3;4739:15;17841:13;;;;:::i;:::-;17825:12;;:29;;17817:38;;;::::0;::::1;;17688:175:::0;:::o;5727:37::-;;;;:::o;5255:42::-;;;;;;;;;;;;;;;;;:::o;1431:79::-;1469:7;1496:6;;;;;;;;;;;1489:13;;1431:79;:::o;5771:51::-;;;;:::o;6798:87::-;6837:13;6870:7;;;;;;;;;;;;;;;;;6863:14;;6798:87;:::o;17334:162::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17470:18:::1;17448:19;:40;;;;17334:162:::0;:::o;16776:506::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16958:9:::1;16945:10;:22;;;;16992:10;16978:11;:24;;;;17028:11;17013:12;:26;;;;17066:12;17050:13;:28;;;;17089:16;17189:13;;17161:12;;17134:11;;17108:10;;:37;;;;:::i;:::-;:65;;;;:::i;:::-;:94;;;;:::i;:::-;17089:113;;17233:2;17221:8;:14;;17213:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16934:348;16776:506:::0;;;;:::o;7233:199::-;7338:4;7360:42;7370:12;:10;:12::i;:::-;7384:9;7395:6;7360:9;:42::i;:::-;7420:4;7413:11;;7233:199;;;;:::o;5212:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12590:277::-;12670:19;;;;;;;;;;;12654:35;;:12;:10;:12::i;:::-;:35;;;:89;;;;12726:17;;;;;;;;;;;12710:33;;:12;:10;:12::i;:::-;:33;;;12654:89;12632:122;;;;;;12765:23;12791:24;12809:4;12791:9;:24::i;:::-;12765:50;;12826:33;12843:15;12826:16;:33::i;:::-;12621:246;12590:277::o;18063:260::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18206:9:::1;18201:115;18225:8;;:15;;18221:1;:19;18201:115;;;18296:8;18262:18;:31;18281:8;;18290:1;18281:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18262:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18242:3;;;;;:::i;:::-;;;;18201:115;;;;18063:260:::0;;;:::o;7440:184::-;7557:7;7589:11;:18;7601:5;7589:18;;;;;;;;;;;;;;;:27;7608:7;7589:27;;;;;;;;;;;;;;;;7582:34;;7440:184;;;;:::o;17871:::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17993:3:::1;17976:13;4739:15;17966:23;;;;:::i;:::-;17965:31;;;;:::i;:::-;17948:14;:48;;;;18043:3;4739:15;18033:13;;;;:::i;:::-;18015:14;;:31;;18007:40;;;::::0;::::1;;17871:184:::0;:::o;1801:281::-;1568:12;:10;:12::i;:::-;1558:22;;:6;;;;;;;;;;:22;;;1550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1924:1:::1;1904:22;;:8;:22;;;;1882:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2037:8;2008:38;;2029:6;::::0;::::1;;;;;;;;2008:38;;;;;;;;;;;;2066:8;2057:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1801:281:::0;:::o;145:98::-;198:7;225:10;218:17;;145:98;:::o;8946:369::-;9090:1;9073:19;;:5;:19;;;;9065:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:1;9152:21;;:7;:21;;;;9144:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9253:6;9223:11;:18;9235:5;9223:18;;;;;;;;;;;;;;;:27;9242:7;9223:27;;;;;;;;;;;;;;;:36;;;;9291:7;9275:32;;9284:5;9275:32;;;9300:6;9275:32;;;;;;:::i;:::-;;;;;;;;8946:369;;;:::o;9323:2661::-;9461:1;9445:18;;:4;:18;;;;9437:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9538:1;9524:16;;:2;:16;;;;9516:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9608:1;9599:6;:10;9591:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9680:7;:5;:7::i;:::-;9672:15;;:4;:15;;;;:32;;;;;9697:7;:5;:7::i;:::-;9691:13;;:2;:13;;;;9672:32;9668:1572;;;9759:11;;;;;;;;;;;9754:205;;9829:7;:5;:7::i;:::-;9821:15;;:4;:15;;;9791:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;9754:205;9993:12;;9983:6;:22;;9975:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10080:4;:10;10085:4;10080:10;;;;;;;;;;;;;;;;;;;;;;;;;10079:11;:24;;;;;10095:4;:8;10100:2;10095:8;;;;;;;;;;;;;;;;;;;;;;;;;10094:9;10079:24;10053:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;10201:13;;;;;;;;;;;10195:19;;:2;:19;;;10191:208;;10290:14;;10281:6;10265:13;10275:2;10265:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10235:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;10191:208;10415:28;10446:24;10464:4;10446:9;:24::i;:::-;10415:55;;10485:12;10524:19;;10500:20;:43;;10485:58;;10610:1;10588:19;;:23;;;;:::i;:::-;10564:20;:47;10560:134;;10677:1;10655:19;;:23;;;;:::i;:::-;10632:46;;10560:134;10732:7;:35;;;;;10761:6;;;;;;;;;;10760:7;10732:35;:77;;;;;10796:13;;;;;;;;;;;10788:21;;:4;:21;;;;10732:77;:109;;;;;10830:11;;;;;;;;;;;10732:109;:155;;;;;10863:18;:24;10882:4;10863:24;;;;;;;;;;;;;;;;;;;;;;;;;10862:25;10732:155;:199;;;;;10909:18;:22;10928:2;10909:22;;;;;;;;;;;;;;;;;;;;;;;;;10908:23;10732:199;10710:519;;;10966:38;10983:20;10966:16;:38::i;:::-;11023:26;11052:21;11023:50;;11117:17;11096:18;:38;11092:122;;;11159:35;11172:21;11159:12;:35::i;:::-;11092:122;10947:282;10710:519;9706:1534;;9668:1572;11252:12;11267:4;11252:19;;11330:18;:24;11349:4;11330:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11358:18;:22;11377:2;11358:22;;;;;;;;;;;;;;;;;;;;;;;;;11330:50;11329:115;;;;11407:13;;;;;;;;;;;11399:21;;:4;:21;;;;:44;;;;;11430:13;;;;;;;;;;;11424:19;;:2;:19;;;;11399:44;11329:115;11311:612;;;11481:5;11471:15;;11311:612;;;11563:13;;;;;;;;;;;11555:21;;:4;:21;;;:55;;;;;11594:15;;;;;;;;;;;11580:30;;:2;:30;;;;11555:55;11551:155;;;11639:10;;11631:5;:18;;;;11678:12;;11668:7;:22;;;;11551:155;11765:13;;;;;;;;;;;11759:19;;:2;:19;;;:55;;;;;11798:15;;;;;;;;;;;11782:32;;:4;:32;;;;11759:55;11755:157;;;11843:11;;11835:5;:19;;;;11883:13;;11873:7;:23;;;;11755:157;11311:612;11935:41;11950:4;11956:2;11960:6;11968:7;11935:14;:41::i;:::-;9426:2558;9323:2661;;;:::o;2444:224::-;2564:7;2597:1;2592;:6;;2600:12;2584:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2624:9;2640:1;2636;:5;;;;:::i;:::-;2624:17;;2659:1;2652:8;;;2444:224;;;;;:::o;12483:99::-;12540:17;;;;;;;;;;;:26;;:34;12567:6;12540:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12483:99;:::o;8287:323::-;8382:7;8440;;8429;:18;;8407:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8528:19;8550:10;:8;:10::i;:::-;8528:32;;8578:24;8590:11;8578:7;:11;;:24;;;;:::i;:::-;8571:31;;;8287:323;;;:::o;11992:483::-;5985:4;5976:6;;:13;;;;;;;;;;;;;;;;;;12070:21:::1;12108:1;12094:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12070:40;;12139:4;12121;12126:1;12121:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12165:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12155:4;12160:1;12155:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12198:62;12215:4;12230:15;;;;;;;;;;;12248:11;12198:8;:62::i;:::-;12271:15;;;;;;;;;;;:66;;;12352:11;12378:1;12394:4;12421;12441:15;12271:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12059:416;6021:5:::0;6012:6;;:14;;;;;;;;;;;;;;;;;;11992:483;:::o;13303:282::-;13459:7;13454:28;;13468:14;:12;:14::i;:::-;13454:28;13493:44;13511:6;13519:9;13530:6;13493:17;:44::i;:::-;13553:7;13548:29;;13562:15;:13;:15::i;:::-;13548:29;13303:282;;;;:::o;16339:164::-;16381:7;16402:15;16419;16438:19;:17;:19::i;:::-;16401:56;;;;16475:20;16487:7;16475;:11;;:20;;;;:::i;:::-;16468:27;;;;16339:164;:::o;2930:132::-;2988:7;3015:39;3019:1;3022;3015:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3008:46;;2930:132;;;;:::o;8618:203::-;8674:1;8665:5;;:10;:26;;;;;8690:1;8679:7;;:12;8665:26;8661:39;;;8693:7;;8661:39;8728:5;;8712:13;:21;;;;8762:7;;8744:15;:25;;;;8790:1;8782:5;:9;;;;8812:1;8802:7;:11;;;;8618:203;:::o;13593:610::-;13740:15;13770:23;13808:12;13835:23;13873:12;13900:13;13927:19;13938:7;13927:10;:19::i;:::-;13725:221;;;;;;;;;;;;13975:28;13995:7;13975;:15;13983:6;13975:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13957:7;:15;13965:6;13957:15;;;;;;;;;;;;;;;:46;;;;14035:39;14058:15;14035:7;:18;14043:9;14035:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14014:7;:18;14022:9;14014:18;;;;;;;;;;;;;;;:60;;;;14085:16;14095:5;14085:9;:16::i;:::-;14112:23;14124:4;14130;14112:11;:23::i;:::-;14168:9;14151:44;;14160:6;14151:44;;;14179:15;14151:44;;;;;;:::i;:::-;;;;;;;;13714:489;;;;;;13593:610;;;:::o;8829:109::-;8881:13;;8873:5;:21;;;;8915:15;;8905:7;:25;;;;8829:109::o;16511:257::-;16562:7;16571;16591:15;16609:7;;16591:25;;16627:15;4739;16627:25;;16677:20;4739:15;16677:7;;:11;;:20;;;;:::i;:::-;16667:7;:30;16663:61;;;16707:7;;4739:15;16699:25;;;;;;;;16663:61;16743:7;16752;16735:25;;;;;;16511:257;;;:::o;3070:223::-;3190:7;3222:1;3218;:5;3225:12;3210:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3249:9;3265:1;3261;:5;;;;:::i;:::-;3249:17;;3284:1;3277:8;;;3070:223;;;;;:::o;14622:698::-;14722:7;14744;14766;14788;14810;14832;14868:23;14893:12;14907:13;14924:86;14950:7;14972:5;;14992:7;;14924:11;:86::i;:::-;14867:143;;;;;;15021:19;15043:10;:8;:10::i;:::-;15021:32;;15065:15;15082:23;15107:12;15123:109;15149:7;15171:4;15190:5;15210:11;15123;:109::i;:::-;15064:168;;;;;;15251:7;15260:15;15277:4;15283:15;15300:4;15306:5;15243:69;;;;;;;;;;;;;;;;;;;14622:698;;;;;;;:::o;2300:136::-;2358:7;2385:43;2389:1;2392;2385:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2378:50;;2300:136;;;;:::o;2113:179::-;2171:7;2191:9;2207:1;2203;:5;;;;:::i;:::-;2191:17;;2232:1;2227;:6;;2219:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2283:1;2276:8;;;2113:179;;;;:::o;14211:211::-;14264:19;14286:10;:8;:10::i;:::-;14264:32;;14307:13;14323:22;14333:11;14323:5;:9;;:22;;;;:::i;:::-;14307:38;;14381:33;14408:5;14381:7;:22;14397:4;14381:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14356:7;:22;14372:4;14356:22;;;;;;;;;;;;;;;:58;;;;14253:169;;14211:211;:::o;14430:147::-;14508:17;14520:4;14508:7;;:11;;:17;;;;:::i;:::-;14498:7;:27;;;;14549:20;14564:4;14549:10;;:14;;:20;;;;:::i;:::-;14536:10;:33;;;;14430:147;;:::o;15328:461::-;15493:7;15515;15537;15572:12;15587:26;15609:3;15587:17;15599:4;15587:7;:11;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;15572:41;;15624:13;15640:28;15664:3;15640:19;15652:6;15640:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15624:44;;15679:23;15705:28;15727:5;15705:17;15717:4;15705:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15679:54;;15752:15;15769:4;15775:5;15744:37;;;;;;;;;15328:461;;;;;;;:::o;15797:534::-;15991:7;16013;16035;16070:15;16088:24;16100:11;16088:7;:11;;:24;;;;:::i;:::-;16070:42;;16123:12;16138:21;16147:11;16138:4;:8;;:21;;;;:::i;:::-;16123:36;;16170:13;16186:22;16196:11;16186:5;:9;;:22;;;;:::i;:::-;16170:38;;16219:23;16245:28;16267:5;16245:17;16257:4;16245:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16219:54;;16292:7;16301:15;16318:4;16284:39;;;;;;;;;;15797:534;;;;;;;;:::o;2676:246::-;2734:7;2763:1;2758;:6;2754:47;;;2788:1;2781:8;;;;2754:47;2811:9;2827:1;2823;:5;;;;:::i;:::-;2811:17;;2856:1;2851;2847;:5;;;;:::i;:::-;:10;2839:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2913:1;2906:8;;;2676:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:329::-;7720:6;7769:2;7757:9;7748:7;7744:23;7740:32;7737:119;;;7775:79;;:::i;:::-;7737:119;7895:1;7920:53;7965:7;7956:6;7945:9;7941:22;7920:53;:::i;:::-;7910:63;;7866:117;7661:329;;;;:::o;7996:619::-;8073:6;8081;8089;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8391:2;8417:53;8462:7;8453:6;8442:9;8438:22;8417:53;:::i;:::-;8407:63;;8362:118;8519:2;8545:53;8590:7;8581:6;8570:9;8566:22;8545:53;:::i;:::-;8535:63;;8490:118;7996:619;;;;;:::o;8621:86::-;8656:7;8696:4;8689:5;8685:16;8674:27;;8621:86;;;:::o;8713:112::-;8796:22;8812:5;8796:22;:::i;:::-;8791:3;8784:35;8713:112;;:::o;8831:214::-;8920:4;8958:2;8947:9;8943:18;8935:26;;8971:67;9035:1;9024:9;9020:17;9011:6;8971:67;:::i;:::-;8831:214;;;;:::o;9051:118::-;9138:24;9156:5;9138:24;:::i;:::-;9133:3;9126:37;9051:118;;:::o;9175:222::-;9268:4;9306:2;9295:9;9291:18;9283:26;;9319:71;9387:1;9376:9;9372:17;9363:6;9319:71;:::i;:::-;9175:222;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:182::-;13137:34;13133:1;13125:6;13121:14;13114:58;12997:182;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:180::-;14030:77;14027:1;14020:88;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14168:180;14216:77;14213:1;14206:88;14313:4;14310:1;14303:15;14337:4;14334:1;14327:15;14354:233;14393:3;14416:24;14434:5;14416:24;:::i;:::-;14407:33;;14462:66;14455:5;14452:77;14449:103;;;14532:18;;:::i;:::-;14449:103;14579:1;14572:5;14568:13;14561:20;;14354:233;;;:::o;14593:348::-;14633:7;14656:20;14674:1;14656:20;:::i;:::-;14651:25;;14690:20;14708:1;14690:20;:::i;:::-;14685:25;;14878:1;14810:66;14806:74;14803:1;14800:81;14795:1;14788:9;14781:17;14777:105;14774:131;;;14885:18;;:::i;:::-;14774:131;14933:1;14930;14926:9;14915:20;;14593:348;;;;:::o;14947:180::-;14995:77;14992:1;14985:88;15092:4;15089:1;15082:15;15116:4;15113:1;15106:15;15133:185;15173:1;15190:20;15208:1;15190:20;:::i;:::-;15185:25;;15224:20;15242:1;15224:20;:::i;:::-;15219:25;;15263:1;15253:35;;15268:18;;:::i;:::-;15253:35;15310:1;15307;15303:9;15298:14;;15133:185;;;;:::o;15324:305::-;15364:3;15383:20;15401:1;15383:20;:::i;:::-;15378:25;;15417:20;15435:1;15417:20;:::i;:::-;15412:25;;15571:1;15503:66;15499:74;15496:1;15493:81;15490:107;;;15577:18;;:::i;:::-;15490:107;15621:1;15618;15614:9;15607:16;;15324:305;;;;:::o;15635:221::-;15775:34;15771:1;15763:6;15759:14;15752:58;15844:4;15839:2;15831:6;15827:15;15820:29;15635:221;:::o;15862:366::-;16004:3;16025:67;16089:2;16084:3;16025:67;:::i;:::-;16018:74;;16101:93;16190:3;16101:93;:::i;:::-;16219:2;16214:3;16210:12;16203:19;;15862:366;;;:::o;16234:419::-;16400:4;16438:2;16427:9;16423:18;16415:26;;16487:9;16481:4;16477:20;16473:1;16462:9;16458:17;16451:47;16515:131;16641:4;16515:131;:::i;:::-;16507:139;;16234:419;;;:::o;16659:225::-;16799:34;16795:1;16787:6;16783:14;16776:58;16868:8;16863:2;16855:6;16851:15;16844:33;16659:225;:::o;16890:366::-;17032:3;17053:67;17117:2;17112:3;17053:67;:::i;:::-;17046:74;;17129:93;17218:3;17129:93;:::i;:::-;17247:2;17242:3;17238:12;17231:19;;16890:366;;;:::o;17262:419::-;17428:4;17466:2;17455:9;17451:18;17443:26;;17515:9;17509:4;17505:20;17501:1;17490:9;17486:17;17479:47;17543:131;17669:4;17543:131;:::i;:::-;17535:139;;17262:419;;;:::o;17687:223::-;17827:34;17823:1;17815:6;17811:14;17804:58;17896:6;17891:2;17883:6;17879:15;17872:31;17687:223;:::o;17916:366::-;18058:3;18079:67;18143:2;18138:3;18079:67;:::i;:::-;18072:74;;18155:93;18244:3;18155:93;:::i;:::-;18273:2;18268:3;18264:12;18257:19;;17916:366;;;:::o;18288:419::-;18454:4;18492:2;18481:9;18477:18;18469:26;;18541:9;18535:4;18531:20;18527:1;18516:9;18512:17;18505:47;18569:131;18695:4;18569:131;:::i;:::-;18561:139;;18288:419;;;:::o;18713:221::-;18853:34;18849:1;18841:6;18837:14;18830:58;18922:4;18917:2;18909:6;18905:15;18898:29;18713:221;:::o;18940:366::-;19082:3;19103:67;19167:2;19162:3;19103:67;:::i;:::-;19096:74;;19179:93;19268:3;19179:93;:::i;:::-;19297:2;19292:3;19288:12;19281:19;;18940:366;;;:::o;19312:419::-;19478:4;19516:2;19505:9;19501:18;19493:26;;19565:9;19559:4;19555:20;19551:1;19540:9;19536:17;19529:47;19593:131;19719:4;19593:131;:::i;:::-;19585:139;;19312:419;;;:::o;19737:224::-;19877:34;19873:1;19865:6;19861:14;19854:58;19946:7;19941:2;19933:6;19929:15;19922:32;19737:224;:::o;19967:366::-;20109:3;20130:67;20194:2;20189:3;20130:67;:::i;:::-;20123:74;;20206:93;20295:3;20206:93;:::i;:::-;20324:2;20319:3;20315:12;20308:19;;19967:366;;;:::o;20339:419::-;20505:4;20543:2;20532:9;20528:18;20520:26;;20592:9;20586:4;20582:20;20578:1;20567:9;20563:17;20556:47;20620:131;20746:4;20620:131;:::i;:::-;20612:139;;20339:419;;;:::o;20764:222::-;20904:34;20900:1;20892:6;20888:14;20881:58;20973:5;20968:2;20960:6;20956:15;20949:30;20764:222;:::o;20992:366::-;21134:3;21155:67;21219:2;21214:3;21155:67;:::i;:::-;21148:74;;21231:93;21320:3;21231:93;:::i;:::-;21349:2;21344:3;21340:12;21333:19;;20992:366;;;:::o;21364:419::-;21530:4;21568:2;21557:9;21553:18;21545:26;;21617:9;21611:4;21607:20;21603:1;21592:9;21588:17;21581:47;21645:131;21771:4;21645:131;:::i;:::-;21637:139;;21364:419;;;:::o;21789:228::-;21929:34;21925:1;21917:6;21913:14;21906:58;21998:11;21993:2;21985:6;21981:15;21974:36;21789:228;:::o;22023:366::-;22165:3;22186:67;22250:2;22245:3;22186:67;:::i;:::-;22179:74;;22262:93;22351:3;22262:93;:::i;:::-;22380:2;22375:3;22371:12;22364:19;;22023:366;;;:::o;22395:419::-;22561:4;22599:2;22588:9;22584:18;22576:26;;22648:9;22642:4;22638:20;22634:1;22623:9;22619:17;22612:47;22676:131;22802:4;22676:131;:::i;:::-;22668:139;;22395:419;;;:::o;22820:250::-;22960:34;22956:1;22948:6;22944:14;22937:58;23029:33;23024:2;23016:6;23012:15;23005:58;22820:250;:::o;23076:366::-;23218:3;23239:67;23303:2;23298:3;23239:67;:::i;:::-;23232:74;;23315:93;23404:3;23315:93;:::i;:::-;23433:2;23428:3;23424:12;23417:19;;23076:366;;;:::o;23448:419::-;23614:4;23652:2;23641:9;23637:18;23629:26;;23701:9;23695:4;23691:20;23687:1;23676:9;23672:17;23665:47;23729:131;23855:4;23729:131;:::i;:::-;23721:139;;23448:419;;;:::o;23873:178::-;24013:30;24009:1;24001:6;23997:14;23990:54;23873:178;:::o;24057:366::-;24199:3;24220:67;24284:2;24279:3;24220:67;:::i;:::-;24213:74;;24296:93;24385:3;24296:93;:::i;:::-;24414:2;24409:3;24405:12;24398:19;;24057:366;;;:::o;24429:419::-;24595:4;24633:2;24622:9;24618:18;24610:26;;24682:9;24676:4;24672:20;24668:1;24657:9;24653:17;24646:47;24710:131;24836:4;24710:131;:::i;:::-;24702:139;;24429:419;;;:::o;24854:222::-;24994:34;24990:1;24982:6;24978:14;24971:58;25063:5;25058:2;25050:6;25046:15;25039:30;24854:222;:::o;25082:366::-;25224:3;25245:67;25309:2;25304:3;25245:67;:::i;:::-;25238:74;;25321:93;25410:3;25321:93;:::i;:::-;25439:2;25434:3;25430:12;25423:19;;25082:366;;;:::o;25454:419::-;25620:4;25658:2;25647:9;25643:18;25635:26;;25707:9;25701:4;25697:20;25693:1;25682:9;25678:17;25671:47;25735:131;25861:4;25735:131;:::i;:::-;25727:139;;25454:419;;;:::o;25879:222::-;26019:34;26015:1;26007:6;26003:14;25996:58;26088:5;26083:2;26075:6;26071:15;26064:30;25879:222;:::o;26107:366::-;26249:3;26270:67;26334:2;26329:3;26270:67;:::i;:::-;26263:74;;26346:93;26435:3;26346:93;:::i;:::-;26464:2;26459:3;26455:12;26448:19;;26107:366;;;:::o;26479:419::-;26645:4;26683:2;26672:9;26668:18;26660:26;;26732:9;26726:4;26722:20;26718:1;26707:9;26703:17;26696:47;26760:131;26886:4;26760:131;:::i;:::-;26752:139;;26479:419;;;:::o;26904:191::-;26944:4;26964:20;26982:1;26964:20;:::i;:::-;26959:25;;26998:20;27016:1;26998:20;:::i;:::-;26993:25;;27037:1;27034;27031:8;27028:34;;;27042:18;;:::i;:::-;27028:34;27087:1;27084;27080:9;27072:17;;26904:191;;;;:::o;27101:229::-;27241:34;27237:1;27229:6;27225:14;27218:58;27310:12;27305:2;27297:6;27293:15;27286:37;27101:229;:::o;27336:366::-;27478:3;27499:67;27563:2;27558:3;27499:67;:::i;:::-;27492:74;;27575:93;27664:3;27575:93;:::i;:::-;27693:2;27688:3;27684:12;27677:19;;27336:366;;;:::o;27708:419::-;27874:4;27912:2;27901:9;27897:18;27889:26;;27961:9;27955:4;27951:20;27947:1;27936:9;27932:17;27925:47;27989:131;28115:4;27989:131;:::i;:::-;27981:139;;27708:419;;;:::o;28133:143::-;28190:5;28221:6;28215:13;28206:22;;28237:33;28264:5;28237:33;:::i;:::-;28133:143;;;;:::o;28282:351::-;28352:6;28401:2;28389:9;28380:7;28376:23;28372:32;28369:119;;;28407:79;;:::i;:::-;28369:119;28527:1;28552:64;28608:7;28599:6;28588:9;28584:22;28552:64;:::i;:::-;28542:74;;28498:128;28282:351;;;;:::o;28639:85::-;28684:7;28713:5;28702:16;;28639:85;;;:::o;28730:158::-;28788:9;28821:61;28839:42;28848:32;28874:5;28848:32;:::i;:::-;28839:42;:::i;:::-;28821:61;:::i;:::-;28808:74;;28730:158;;;:::o;28894:147::-;28989:45;29028:5;28989:45;:::i;:::-;28984:3;28977:58;28894:147;;:::o;29047:114::-;29114:6;29148:5;29142:12;29132:22;;29047:114;;;:::o;29167:184::-;29266:11;29300:6;29295:3;29288:19;29340:4;29335:3;29331:14;29316:29;;29167:184;;;;:::o;29357:132::-;29424:4;29447:3;29439:11;;29477:4;29472:3;29468:14;29460:22;;29357:132;;;:::o;29495:108::-;29572:24;29590:5;29572:24;:::i;:::-;29567:3;29560:37;29495:108;;:::o;29609:179::-;29678:10;29699:46;29741:3;29733:6;29699:46;:::i;:::-;29777:4;29772:3;29768:14;29754:28;;29609:179;;;;:::o;29794:113::-;29864:4;29896;29891:3;29887:14;29879:22;;29794:113;;;:::o;29943:732::-;30062:3;30091:54;30139:5;30091:54;:::i;:::-;30161:86;30240:6;30235:3;30161:86;:::i;:::-;30154:93;;30271:56;30321:5;30271:56;:::i;:::-;30350:7;30381:1;30366:284;30391:6;30388:1;30385:13;30366:284;;;30467:6;30461:13;30494:63;30553:3;30538:13;30494:63;:::i;:::-;30487:70;;30580:60;30633:6;30580:60;:::i;:::-;30570:70;;30426:224;30413:1;30410;30406:9;30401:14;;30366:284;;;30370:14;30666:3;30659:10;;30067:608;;;29943:732;;;;:::o;30681:831::-;30944:4;30982:3;30971:9;30967:19;30959:27;;30996:71;31064:1;31053:9;31049:17;31040:6;30996:71;:::i;:::-;31077:80;31153:2;31142:9;31138:18;31129:6;31077:80;:::i;:::-;31204:9;31198:4;31194:20;31189:2;31178:9;31174:18;31167:48;31232:108;31335:4;31326:6;31232:108;:::i;:::-;31224:116;;31350:72;31418:2;31407:9;31403:18;31394:6;31350:72;:::i;:::-;31432:73;31500:3;31489:9;31485:19;31476:6;31432:73;:::i;:::-;30681:831;;;;;;;;:::o;31518:177::-;31658:29;31654:1;31646:6;31642:14;31635:53;31518:177;:::o;31701:366::-;31843:3;31864:67;31928:2;31923:3;31864:67;:::i;:::-;31857:74;;31940:93;32029:3;31940:93;:::i;:::-;32058:2;32053:3;32049:12;32042:19;;31701:366;;;:::o;32073:419::-;32239:4;32277:2;32266:9;32262:18;32254:26;;32326:9;32320:4;32316:20;32312:1;32301:9;32297:17;32290:47;32354:131;32480:4;32354:131;:::i;:::-;32346:139;;32073:419;;;:::o;32498:220::-;32638:34;32634:1;32626:6;32622:14;32615:58;32707:3;32702:2;32694:6;32690:15;32683:28;32498:220;:::o;32724:366::-;32866:3;32887:67;32951:2;32946:3;32887:67;:::i;:::-;32880:74;;32963:93;33052:3;32963:93;:::i;:::-;33081:2;33076:3;33072:12;33065:19;;32724:366;;;:::o;33096:419::-;33262:4;33300:2;33289:9;33285:18;33277:26;;33349:9;33343:4;33339:20;33335:1;33324:9;33320:17;33313:47;33377:131;33503:4;33377:131;:::i;:::-;33369:139;;33096:419;;;:::o

Swarm Source

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