ETH Price: $2,518.66 (-0.26%)

Token

MultiChain Bridge (MCB)
 

Overview

Max Total Supply

1,000,000,000 MCB

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,999,628.067016601562499999 MCB

Value
$0.00
0x1b5bf820189947af0e1fcdb4fe32a7c59807202c
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:
ChainBridge

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-28
*/

/*
Telegram Portal: https://t.me/multichainportal

Website: https://chainbridge.app/

dApp: https://dapp.chainbridge.app/

Docs: https://docs.chainbridge.app/

Twitter: https://twitter.com/MChainBridge

*/

// SPDX-License-Identifier: MIT



pragma solidity ^0.8.16;

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 ChainBridge is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "MultiChain Bridge";
    string private constant _symbol = "MCB";
    uint8 private constant _decimals = 18;

    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 = 1_000_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 32;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(msg.sender);

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

    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _tTotal * 25 / 10000;

    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 (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _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");

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

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

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

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    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)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _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 launch(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    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, _redisFee, _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 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).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 changeFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //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 = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function removeOmniLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

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

}

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":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"launch","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":"removeOmniLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000933565b633b9aca0062000025919062000984565b60001962000034919062000a14565b60001962000043919062000a4c565b600655600060085560196009556000600a556020600b55600a54600c55600b54600d55600c54600e55600d54600f5533601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff021916908315150217905550606460026012600a62000158919062000933565b633b9aca0062000169919062000984565b62000175919062000984565b62000181919062000a87565b601555606460026012600a62000198919062000933565b633b9aca00620001a9919062000984565b620001b5919062000984565b620001c1919062000a87565b60165561271060196012600a620001d9919062000933565b633b9aca00620001ea919062000984565b620001f6919062000984565b62000202919062000a87565b6017553480156200021257600080fd5b506000620002256200076860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002da6200076860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e4919062000b29565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000472919062000b29565b6040518363ffffffff1660e01b81526004016200049192919062000b6c565b6020604051808303816000875af1158015620004b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d7919062000b29565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200052d6200077060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006da6200076860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000739919062000933565b633b9aca006200074a919062000984565b60405162000759919062000baa565b60405180910390a35062000bc7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200082757808604811115620007ff57620007fe62000799565b5b60018516156200080f5780820291505b80810290506200081f85620007c8565b9450620007df565b94509492505050565b60008262000842576001905062000915565b8162000852576000905062000915565b81600181146200086b57600281146200087657620008ac565b600191505062000915565b60ff8411156200088b576200088a62000799565b5b8360020a915084821115620008a557620008a462000799565b5b5062000915565b5060208310610133831016604e8410600b8410161715620008e65782820a905083811115620008e057620008df62000799565b5b62000915565b620008f58484846001620007d5565b925090508184048111156200090f576200090e62000799565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000940826200091c565b91506200094d8362000926565b92506200097c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000830565b905092915050565b600062000991826200091c565b91506200099e836200091c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620009da57620009d962000799565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a21826200091c565b915062000a2e836200091c565b92508262000a415762000a40620009e5565b5b828206905092915050565b600062000a59826200091c565b915062000a66836200091c565b925082820390508181111562000a815762000a8062000799565b5b92915050565b600062000a94826200091c565b915062000aa1836200091c565b92508262000ab45762000ab3620009e5565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000af18262000ac4565b9050919050565b62000b038162000ae4565b811462000b0f57600080fd5b50565b60008151905062000b238162000af8565b92915050565b60006020828403121562000b425762000b4162000abf565b5b600062000b528482850162000b12565b91505092915050565b62000b668162000ae4565b82525050565b600060408201905062000b83600083018562000b5b565b62000b92602083018462000b5b565b9392505050565b62000ba4816200091c565b82525050565b600060208201905062000bc1600083018462000b99565b92915050565b613aa78062000bd76000396000f3fe6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063b1192e181161008a578063dd62ed3e11610064578063dd62ed3e146105e1578063df8a994c1461061e578063ea1644d514610635578063f2fde38b1461065e576101c2565b8063b1192e1814610578578063c3c8cd80146105a1578063c492f046146105b8576101c2565b80638f9a55c0116100c65780638f9a55c0146104bc57806395d89b41146104e757806398a5c31514610512578063a9059cbb1461053b576101c2565b80637d1db4a5146104295780637f2feddc146104545780638da5cb5b14610491576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806371916a6b146103d757806374010ece14610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610687565b6040516101e9919061299a565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612a5a565b6106c4565b6040516102269190612ab5565b60405180910390f35b34801561023b57600080fd5b506102446106e2565b6040516102519190612b2f565b60405180910390f35b34801561026657600080fd5b5061026f610708565b60405161027c9190612b59565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612b74565b61072c565b6040516102b99190612ab5565b60405180910390f35b3480156102ce57600080fd5b506102d7610805565b6040516102e49190612b59565b60405180910390f35b3480156102f957600080fd5b5061030261080b565b60405161030f9190612be3565b60405180910390f35b34801561032457600080fd5b5061032d610814565b60405161033a9190612c0d565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612c54565b61083a565b005b34801561037857600080fd5b506103816108ec565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c81565b6109bd565b6040516103b79190612b59565b60405180910390f35b3480156103cc57600080fd5b506103d5610a0e565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c54565b610b61565b005b34801561040c57600080fd5b5061042760048036038101906104229190612cae565b610c12565b005b34801561043557600080fd5b5061043e610cb1565b60405161044b9190612b59565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612c81565b610cb7565b6040516104889190612b59565b60405180910390f35b34801561049d57600080fd5b506104a6610ccf565b6040516104b39190612c0d565b60405180910390f35b3480156104c857600080fd5b506104d1610cf8565b6040516104de9190612b59565b60405180910390f35b3480156104f357600080fd5b506104fc610cfe565b604051610509919061299a565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612cae565b610d3b565b005b34801561054757600080fd5b50610562600480360381019061055d9190612a5a565b610dda565b60405161056f9190612ab5565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612cdb565b610df8565b005b3480156105ad57600080fd5b506105b6610eaf565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612da7565b610f88565b005b3480156105ed57600080fd5b5061060860048036038101906106039190612e07565b6110c2565b6040516106159190612b59565b60405180910390f35b34801561062a57600080fd5b50610633611149565b005b34801561064157600080fd5b5061065c60048036038101906106579190612cae565b611226565b005b34801561066a57600080fd5b5061068560048036038101906106809190612c81565b6112c5565b005b60606040518060400160405280601181526020017f4d756c7469436861696e20427269646765000000000000000000000000000000815250905090565b60006106d86106d1611486565b848461148e565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107189190612fa9565b633b9aca006107279190612ff4565b905090565b6000610739848484611657565b6107fa84610745611486565b6107f585604051806060016040528060288152602001613a4a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ab611486565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df79092919063ffffffff16565b61148e565b600190509392505050565b60175481565b60006012905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610842611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c69061309a565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092d611486565b73ffffffffffffffffffffffffffffffffffffffff1614806109a35750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661098b611486565b73ffffffffffffffffffffffffffffffffffffffff16145b6109ac57600080fd5b60004790506109ba81611e5b565b50565b6000610a07600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec7565b9050919050565b610a16611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a9061309a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b69611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed9061309a565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b610c1a611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e9061309a565b60405180910390fd5b8060158190555050565b60155481565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f4d43420000000000000000000000000000000000000000000000000000000000815250905090565b610d43611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc79061309a565b60405180910390fd5b8060178190555050565b6000610dee610de7611486565b8484611657565b6001905092915050565b610e00611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e849061309a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef0611486565b73ffffffffffffffffffffffffffffffffffffffff161480610f665750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f4e611486565b73ffffffffffffffffffffffffffffffffffffffff16145b610f6f57600080fd5b6000610f7a306109bd565b9050610f8581611f35565b50565b610f90611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110149061309a565b60405180910390fd5b60005b838390508110156110bc578160056000868685818110611043576110426130ba565b5b90506020020160208101906110589190612c81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b4906130e9565b915050611020565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611151611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d59061309a565b60405180910390fd5b6012600a6111ec9190612fa9565b633b9aca006111fb9190612ff4565b6015819055506012600a61120f9190612fa9565b633b9aca0061121e9190612ff4565b601681905550565b61122e611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b29061309a565b60405180910390fd5b8060168190555050565b6112cd611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113519061309a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c0906131a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f490613235565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361156c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611563906132c7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164a9190612b59565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613359565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906133eb565b60405180910390fd5b60008111611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f9061347d565b60405180910390fd5b611780610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ee57506117be610ccf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611af65760148054906101000a900460ff1661187b5761180d610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061350f565b60405180910390fd5b5b6015548111156118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b79061357b565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461196d5760165481611922846109bd565b61192c919061359b565b1061196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613641565b60405180910390fd5b5b6000611978306109bd565b90506000601754821015905060155482106119935760155491505b8080156119ad5750601460159054906101000a900460ff16155b8015611a075750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a1f5750601460169054906101000a900460ff165b8015611a755750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611acb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611af357611ad982611f35565b60004790506000811115611af157611af047611e5b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b9d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c505750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c4f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c5e5760009050611de5565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d095750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dcc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611de457600a54600c81905550600b54600d819055505b5b611df1848484846121ae565b50505050565b6000838311158290611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e36919061299a565b60405180910390fd5b5060008385611e4e9190613661565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ec3573d6000803e3d6000fd5b5050565b6000600654821115611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613707565b60405180910390fd5b6000611f186121db565b9050611f2d818461220690919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f6d57611f6c613727565b5b604051908082528060200260200182016040528015611f9b5781602001602082028036833780820191505090505b5090503081600081518110611fb357611fb26130ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e919061376b565b81600181518110612092576120916130ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120f930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461148e565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161215d959493929190613891565b600060405180830381600087803b15801561217757600080fd5b505af115801561218b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806121bc576121bb612250565b5b6121c784848461228d565b806121d5576121d4612458565b5b50505050565b60008060006121e861246c565b915091506121ff818361220690919063ffffffff16565b9250505090565b600061224883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612507565b905092915050565b6000600c5414801561226457506000600d54145b61228b57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061229f8761256a565b9550955095509550955095506122fd86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061239285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123de8161267a565b6123e88483612737565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124459190612b59565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006012600a6124869190612fa9565b633b9aca006124959190612ff4565b90506124c86012600a6124a89190612fa9565b633b9aca006124b79190612ff4565b60065461220690919063ffffffff16565b8210156124fa576006546012600a6124e09190612fa9565b633b9aca006124ef9190612ff4565b935093505050612503565b81819350935050505b9091565b6000808311829061254e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612545919061299a565b60405180910390fd5b506000838561255d919061391a565b9050809150509392505050565b60008060008060008060008060006125878a600c54600d54612771565b92509250925060006125976121db565b905060008060006125aa8e878787612807565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061261483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611df7565b905092915050565b600080828461262b919061359b565b905083811015612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790613997565b60405180910390fd5b8091505092915050565b60006126846121db565b9050600061269b828461289090919063ffffffff16565b90506126ef81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61274c826006546125d290919063ffffffff16565b6006819055506127678160075461261c90919063ffffffff16565b6007819055505050565b60008060008061279d606461278f888a61289090919063ffffffff16565b61220690919063ffffffff16565b905060006127c760646127b9888b61289090919063ffffffff16565b61220690919063ffffffff16565b905060006127f0826127e2858c6125d290919063ffffffff16565b6125d290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612820858961289090919063ffffffff16565b90506000612837868961289090919063ffffffff16565b9050600061284e878961289090919063ffffffff16565b905060006128778261286985876125d290919063ffffffff16565b6125d290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036128a25760009050612904565b600082846128b09190612ff4565b90508284826128bf919061391a565b146128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f690613a29565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612944578082015181840152602081019050612929565b60008484015250505050565b6000601f19601f8301169050919050565b600061296c8261290a565b6129768185612915565b9350612986818560208601612926565b61298f81612950565b840191505092915050565b600060208201905081810360008301526129b48184612961565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129f1826129c6565b9050919050565b612a01816129e6565b8114612a0c57600080fd5b50565b600081359050612a1e816129f8565b92915050565b6000819050919050565b612a3781612a24565b8114612a4257600080fd5b50565b600081359050612a5481612a2e565b92915050565b60008060408385031215612a7157612a706129bc565b5b6000612a7f85828601612a0f565b9250506020612a9085828601612a45565b9150509250929050565b60008115159050919050565b612aaf81612a9a565b82525050565b6000602082019050612aca6000830184612aa6565b92915050565b6000819050919050565b6000612af5612af0612aeb846129c6565b612ad0565b6129c6565b9050919050565b6000612b0782612ada565b9050919050565b6000612b1982612afc565b9050919050565b612b2981612b0e565b82525050565b6000602082019050612b446000830184612b20565b92915050565b612b5381612a24565b82525050565b6000602082019050612b6e6000830184612b4a565b92915050565b600080600060608486031215612b8d57612b8c6129bc565b5b6000612b9b86828701612a0f565b9350506020612bac86828701612a0f565b9250506040612bbd86828701612a45565b9150509250925092565b600060ff82169050919050565b612bdd81612bc7565b82525050565b6000602082019050612bf86000830184612bd4565b92915050565b612c07816129e6565b82525050565b6000602082019050612c226000830184612bfe565b92915050565b612c3181612a9a565b8114612c3c57600080fd5b50565b600081359050612c4e81612c28565b92915050565b600060208284031215612c6a57612c696129bc565b5b6000612c7884828501612c3f565b91505092915050565b600060208284031215612c9757612c966129bc565b5b6000612ca584828501612a0f565b91505092915050565b600060208284031215612cc457612cc36129bc565b5b6000612cd284828501612a45565b91505092915050565b60008060008060808587031215612cf557612cf46129bc565b5b6000612d0387828801612a45565b9450506020612d1487828801612a45565b9350506040612d2587828801612a45565b9250506060612d3687828801612a45565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612d6757612d66612d42565b5b8235905067ffffffffffffffff811115612d8457612d83612d47565b5b602083019150836020820283011115612da057612d9f612d4c565b5b9250929050565b600080600060408486031215612dc057612dbf6129bc565b5b600084013567ffffffffffffffff811115612dde57612ddd6129c1565b5b612dea86828701612d51565b93509350506020612dfd86828701612c3f565b9150509250925092565b60008060408385031215612e1e57612e1d6129bc565b5b6000612e2c85828601612a0f565b9250506020612e3d85828601612a0f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ecd57808604811115612ea957612ea8612e47565b5b6001851615612eb85780820291505b8081029050612ec685612e76565b9450612e8d565b94509492505050565b600082612ee65760019050612fa2565b81612ef45760009050612fa2565b8160018114612f0a5760028114612f1457612f43565b6001915050612fa2565b60ff841115612f2657612f25612e47565b5b8360020a915084821115612f3d57612f3c612e47565b5b50612fa2565b5060208310610133831016604e8410600b8410161715612f785782820a905083811115612f7357612f72612e47565b5b612fa2565b612f858484846001612e83565b92509050818404811115612f9c57612f9b612e47565b5b81810290505b9392505050565b6000612fb482612a24565b9150612fbf83612bc7565b9250612fec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ed6565b905092915050565b6000612fff82612a24565b915061300a83612a24565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561304357613042612e47565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613084602083612915565b915061308f8261304e565b602082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130f482612a24565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361312657613125612e47565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061318d602683612915565b915061319882613131565b604082019050919050565b600060208201905081810360008301526131bc81613180565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061321f602483612915565b915061322a826131c3565b604082019050919050565b6000602082019050818103600083015261324e81613212565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b1602283612915565b91506132bc82613255565b604082019050919050565b600060208201905081810360008301526132e0816132a4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613343602583612915565b915061334e826132e7565b604082019050919050565b6000602082019050818103600083015261337281613336565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133d5602383612915565b91506133e082613379565b604082019050919050565b60006020820190508181036000830152613404816133c8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613467602983612915565b91506134728261340b565b604082019050919050565b600060208201905081810360008301526134968161345a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134f9603f83612915565b91506135048261349d565b604082019050919050565b60006020820190508181036000830152613528816134ec565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613565601c83612915565b91506135708261352f565b602082019050919050565b6000602082019050818103600083015261359481613558565b9050919050565b60006135a682612a24565b91506135b183612a24565b92508282019050808211156135c9576135c8612e47565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061362b602383612915565b9150613636826135cf565b604082019050919050565b6000602082019050818103600083015261365a8161361e565b9050919050565b600061366c82612a24565b915061367783612a24565b925082820390508181111561368f5761368e612e47565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136f1602a83612915565b91506136fc82613695565b604082019050919050565b60006020820190508181036000830152613720816136e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613765816129f8565b92915050565b600060208284031215613781576137806129bc565b5b600061378f84828501613756565b91505092915050565b6000819050919050565b60006137bd6137b86137b384613798565b612ad0565b612a24565b9050919050565b6137cd816137a2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613808816129e6565b82525050565b600061381a83836137ff565b60208301905092915050565b6000602082019050919050565b600061383e826137d3565b61384881856137de565b9350613853836137ef565b8060005b8381101561388457815161386b888261380e565b975061387683613826565b925050600181019050613857565b5085935050505092915050565b600060a0820190506138a66000830188612b4a565b6138b360208301876137c4565b81810360408301526138c58186613833565b90506138d46060830185612bfe565b6138e16080830184612b4a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061392582612a24565b915061393083612a24565b9250826139405761393f6138eb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613981601b83612915565b915061398c8261394b565b602082019050919050565b600060208201905081810360008301526139b081613974565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a13602183612915565b9150613a1e826139b7565b604082019050919050565b60006020820190508181036000830152613a4281613a06565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122050a6e7c4159dd0f6203c77a5329bb9ac9ebfeab9fb7b01a55caf35bc3a5b42b664736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063b1192e181161008a578063dd62ed3e11610064578063dd62ed3e146105e1578063df8a994c1461061e578063ea1644d514610635578063f2fde38b1461065e576101c2565b8063b1192e1814610578578063c3c8cd80146105a1578063c492f046146105b8576101c2565b80638f9a55c0116100c65780638f9a55c0146104bc57806395d89b41146104e757806398a5c31514610512578063a9059cbb1461053b576101c2565b80637d1db4a5146104295780637f2feddc146104545780638da5cb5b14610491576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806371916a6b146103d757806374010ece14610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610687565b6040516101e9919061299a565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612a5a565b6106c4565b6040516102269190612ab5565b60405180910390f35b34801561023b57600080fd5b506102446106e2565b6040516102519190612b2f565b60405180910390f35b34801561026657600080fd5b5061026f610708565b60405161027c9190612b59565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612b74565b61072c565b6040516102b99190612ab5565b60405180910390f35b3480156102ce57600080fd5b506102d7610805565b6040516102e49190612b59565b60405180910390f35b3480156102f957600080fd5b5061030261080b565b60405161030f9190612be3565b60405180910390f35b34801561032457600080fd5b5061032d610814565b60405161033a9190612c0d565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612c54565b61083a565b005b34801561037857600080fd5b506103816108ec565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c81565b6109bd565b6040516103b79190612b59565b60405180910390f35b3480156103cc57600080fd5b506103d5610a0e565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c54565b610b61565b005b34801561040c57600080fd5b5061042760048036038101906104229190612cae565b610c12565b005b34801561043557600080fd5b5061043e610cb1565b60405161044b9190612b59565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612c81565b610cb7565b6040516104889190612b59565b60405180910390f35b34801561049d57600080fd5b506104a6610ccf565b6040516104b39190612c0d565b60405180910390f35b3480156104c857600080fd5b506104d1610cf8565b6040516104de9190612b59565b60405180910390f35b3480156104f357600080fd5b506104fc610cfe565b604051610509919061299a565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612cae565b610d3b565b005b34801561054757600080fd5b50610562600480360381019061055d9190612a5a565b610dda565b60405161056f9190612ab5565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612cdb565b610df8565b005b3480156105ad57600080fd5b506105b6610eaf565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612da7565b610f88565b005b3480156105ed57600080fd5b5061060860048036038101906106039190612e07565b6110c2565b6040516106159190612b59565b60405180910390f35b34801561062a57600080fd5b50610633611149565b005b34801561064157600080fd5b5061065c60048036038101906106579190612cae565b611226565b005b34801561066a57600080fd5b5061068560048036038101906106809190612c81565b6112c5565b005b60606040518060400160405280601181526020017f4d756c7469436861696e20427269646765000000000000000000000000000000815250905090565b60006106d86106d1611486565b848461148e565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107189190612fa9565b633b9aca006107279190612ff4565b905090565b6000610739848484611657565b6107fa84610745611486565b6107f585604051806060016040528060288152602001613a4a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ab611486565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df79092919063ffffffff16565b61148e565b600190509392505050565b60175481565b60006012905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610842611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c69061309a565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092d611486565b73ffffffffffffffffffffffffffffffffffffffff1614806109a35750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661098b611486565b73ffffffffffffffffffffffffffffffffffffffff16145b6109ac57600080fd5b60004790506109ba81611e5b565b50565b6000610a07600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec7565b9050919050565b610a16611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a9061309a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b69611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed9061309a565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b610c1a611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e9061309a565b60405180910390fd5b8060158190555050565b60155481565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f4d43420000000000000000000000000000000000000000000000000000000000815250905090565b610d43611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc79061309a565b60405180910390fd5b8060178190555050565b6000610dee610de7611486565b8484611657565b6001905092915050565b610e00611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e849061309a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef0611486565b73ffffffffffffffffffffffffffffffffffffffff161480610f665750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f4e611486565b73ffffffffffffffffffffffffffffffffffffffff16145b610f6f57600080fd5b6000610f7a306109bd565b9050610f8581611f35565b50565b610f90611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110149061309a565b60405180910390fd5b60005b838390508110156110bc578160056000868685818110611043576110426130ba565b5b90506020020160208101906110589190612c81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b4906130e9565b915050611020565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611151611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d59061309a565b60405180910390fd5b6012600a6111ec9190612fa9565b633b9aca006111fb9190612ff4565b6015819055506012600a61120f9190612fa9565b633b9aca0061121e9190612ff4565b601681905550565b61122e611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b29061309a565b60405180910390fd5b8060168190555050565b6112cd611486565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113519061309a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c0906131a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f490613235565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361156c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611563906132c7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164a9190612b59565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613359565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906133eb565b60405180910390fd5b60008111611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f9061347d565b60405180910390fd5b611780610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ee57506117be610ccf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611af65760148054906101000a900460ff1661187b5761180d610ccf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061350f565b60405180910390fd5b5b6015548111156118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b79061357b565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461196d5760165481611922846109bd565b61192c919061359b565b1061196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613641565b60405180910390fd5b5b6000611978306109bd565b90506000601754821015905060155482106119935760155491505b8080156119ad5750601460159054906101000a900460ff16155b8015611a075750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a1f5750601460169054906101000a900460ff165b8015611a755750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611acb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611af357611ad982611f35565b60004790506000811115611af157611af047611e5b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b9d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c505750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c4f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c5e5760009050611de5565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d095750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dcc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611de457600a54600c81905550600b54600d819055505b5b611df1848484846121ae565b50505050565b6000838311158290611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e36919061299a565b60405180910390fd5b5060008385611e4e9190613661565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ec3573d6000803e3d6000fd5b5050565b6000600654821115611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613707565b60405180910390fd5b6000611f186121db565b9050611f2d818461220690919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f6d57611f6c613727565b5b604051908082528060200260200182016040528015611f9b5781602001602082028036833780820191505090505b5090503081600081518110611fb357611fb26130ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e919061376b565b81600181518110612092576120916130ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120f930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461148e565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161215d959493929190613891565b600060405180830381600087803b15801561217757600080fd5b505af115801561218b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806121bc576121bb612250565b5b6121c784848461228d565b806121d5576121d4612458565b5b50505050565b60008060006121e861246c565b915091506121ff818361220690919063ffffffff16565b9250505090565b600061224883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612507565b905092915050565b6000600c5414801561226457506000600d54145b61228b57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061229f8761256a565b9550955095509550955095506122fd86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061239285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123de8161267a565b6123e88483612737565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124459190612b59565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006012600a6124869190612fa9565b633b9aca006124959190612ff4565b90506124c86012600a6124a89190612fa9565b633b9aca006124b79190612ff4565b60065461220690919063ffffffff16565b8210156124fa576006546012600a6124e09190612fa9565b633b9aca006124ef9190612ff4565b935093505050612503565b81819350935050505b9091565b6000808311829061254e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612545919061299a565b60405180910390fd5b506000838561255d919061391a565b9050809150509392505050565b60008060008060008060008060006125878a600c54600d54612771565b92509250925060006125976121db565b905060008060006125aa8e878787612807565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061261483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611df7565b905092915050565b600080828461262b919061359b565b905083811015612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790613997565b60405180910390fd5b8091505092915050565b60006126846121db565b9050600061269b828461289090919063ffffffff16565b90506126ef81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61274c826006546125d290919063ffffffff16565b6006819055506127678160075461261c90919063ffffffff16565b6007819055505050565b60008060008061279d606461278f888a61289090919063ffffffff16565b61220690919063ffffffff16565b905060006127c760646127b9888b61289090919063ffffffff16565b61220690919063ffffffff16565b905060006127f0826127e2858c6125d290919063ffffffff16565b6125d290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612820858961289090919063ffffffff16565b90506000612837868961289090919063ffffffff16565b9050600061284e878961289090919063ffffffff16565b905060006128778261286985876125d290919063ffffffff16565b6125d290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036128a25760009050612904565b600082846128b09190612ff4565b90508284826128bf919061391a565b146128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f690613a29565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612944578082015181840152602081019050612929565b60008484015250505050565b6000601f19601f8301169050919050565b600061296c8261290a565b6129768185612915565b9350612986818560208601612926565b61298f81612950565b840191505092915050565b600060208201905081810360008301526129b48184612961565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129f1826129c6565b9050919050565b612a01816129e6565b8114612a0c57600080fd5b50565b600081359050612a1e816129f8565b92915050565b6000819050919050565b612a3781612a24565b8114612a4257600080fd5b50565b600081359050612a5481612a2e565b92915050565b60008060408385031215612a7157612a706129bc565b5b6000612a7f85828601612a0f565b9250506020612a9085828601612a45565b9150509250929050565b60008115159050919050565b612aaf81612a9a565b82525050565b6000602082019050612aca6000830184612aa6565b92915050565b6000819050919050565b6000612af5612af0612aeb846129c6565b612ad0565b6129c6565b9050919050565b6000612b0782612ada565b9050919050565b6000612b1982612afc565b9050919050565b612b2981612b0e565b82525050565b6000602082019050612b446000830184612b20565b92915050565b612b5381612a24565b82525050565b6000602082019050612b6e6000830184612b4a565b92915050565b600080600060608486031215612b8d57612b8c6129bc565b5b6000612b9b86828701612a0f565b9350506020612bac86828701612a0f565b9250506040612bbd86828701612a45565b9150509250925092565b600060ff82169050919050565b612bdd81612bc7565b82525050565b6000602082019050612bf86000830184612bd4565b92915050565b612c07816129e6565b82525050565b6000602082019050612c226000830184612bfe565b92915050565b612c3181612a9a565b8114612c3c57600080fd5b50565b600081359050612c4e81612c28565b92915050565b600060208284031215612c6a57612c696129bc565b5b6000612c7884828501612c3f565b91505092915050565b600060208284031215612c9757612c966129bc565b5b6000612ca584828501612a0f565b91505092915050565b600060208284031215612cc457612cc36129bc565b5b6000612cd284828501612a45565b91505092915050565b60008060008060808587031215612cf557612cf46129bc565b5b6000612d0387828801612a45565b9450506020612d1487828801612a45565b9350506040612d2587828801612a45565b9250506060612d3687828801612a45565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612d6757612d66612d42565b5b8235905067ffffffffffffffff811115612d8457612d83612d47565b5b602083019150836020820283011115612da057612d9f612d4c565b5b9250929050565b600080600060408486031215612dc057612dbf6129bc565b5b600084013567ffffffffffffffff811115612dde57612ddd6129c1565b5b612dea86828701612d51565b93509350506020612dfd86828701612c3f565b9150509250925092565b60008060408385031215612e1e57612e1d6129bc565b5b6000612e2c85828601612a0f565b9250506020612e3d85828601612a0f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ecd57808604811115612ea957612ea8612e47565b5b6001851615612eb85780820291505b8081029050612ec685612e76565b9450612e8d565b94509492505050565b600082612ee65760019050612fa2565b81612ef45760009050612fa2565b8160018114612f0a5760028114612f1457612f43565b6001915050612fa2565b60ff841115612f2657612f25612e47565b5b8360020a915084821115612f3d57612f3c612e47565b5b50612fa2565b5060208310610133831016604e8410600b8410161715612f785782820a905083811115612f7357612f72612e47565b5b612fa2565b612f858484846001612e83565b92509050818404811115612f9c57612f9b612e47565b5b81810290505b9392505050565b6000612fb482612a24565b9150612fbf83612bc7565b9250612fec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ed6565b905092915050565b6000612fff82612a24565b915061300a83612a24565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561304357613042612e47565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613084602083612915565b915061308f8261304e565b602082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130f482612a24565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361312657613125612e47565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061318d602683612915565b915061319882613131565b604082019050919050565b600060208201905081810360008301526131bc81613180565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061321f602483612915565b915061322a826131c3565b604082019050919050565b6000602082019050818103600083015261324e81613212565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b1602283612915565b91506132bc82613255565b604082019050919050565b600060208201905081810360008301526132e0816132a4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613343602583612915565b915061334e826132e7565b604082019050919050565b6000602082019050818103600083015261337281613336565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133d5602383612915565b91506133e082613379565b604082019050919050565b60006020820190508181036000830152613404816133c8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613467602983612915565b91506134728261340b565b604082019050919050565b600060208201905081810360008301526134968161345a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134f9603f83612915565b91506135048261349d565b604082019050919050565b60006020820190508181036000830152613528816134ec565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613565601c83612915565b91506135708261352f565b602082019050919050565b6000602082019050818103600083015261359481613558565b9050919050565b60006135a682612a24565b91506135b183612a24565b92508282019050808211156135c9576135c8612e47565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061362b602383612915565b9150613636826135cf565b604082019050919050565b6000602082019050818103600083015261365a8161361e565b9050919050565b600061366c82612a24565b915061367783612a24565b925082820390508181111561368f5761368e612e47565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136f1602a83612915565b91506136fc82613695565b604082019050919050565b60006020820190508181036000830152613720816136e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613765816129f8565b92915050565b600060208284031215613781576137806129bc565b5b600061378f84828501613756565b91505092915050565b6000819050919050565b60006137bd6137b86137b384613798565b612ad0565b612a24565b9050919050565b6137cd816137a2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613808816129e6565b82525050565b600061381a83836137ff565b60208301905092915050565b6000602082019050919050565b600061383e826137d3565b61384881856137de565b9350613853836137ef565b8060005b8381101561388457815161386b888261380e565b975061387683613826565b925050600181019050613857565b5085935050505092915050565b600060a0820190506138a66000830188612b4a565b6138b360208301876137c4565b81810360408301526138c58186613833565b90506138d46060830185612bfe565b6138e16080830184612b4a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061392582612a24565b915061393083612a24565b9250826139405761393f6138eb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613981601b83612915565b915061398c8261394b565b602082019050919050565b600060208201905081810360008301526139b081613974565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a13602183612915565b9150613a1e826139b7565b604082019050919050565b60006020820190508181036000830152613a4281613a06565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122050a6e7c4159dd0f6203c77a5329bb9ac9ebfeab9fb7b01a55caf35bc3a5b42b664736f6c63430008100033

Deployed Bytecode Sourcemap

4288:13193:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6718:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7643:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5552:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6995:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7844:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5861:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6904:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5600:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16734:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12556:235;;;;;;;;;;;;;:::i;:::-;;7098:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1775:148;;;;;;;;;;;;;:::i;:::-;;12207:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16874:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5751:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5358:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1561:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5805:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6809:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16543:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7244:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16197:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12312:236;;;;;;;;;;;;;:::i;:::-;;17242:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7451:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17113:121;;;;;;;;;;;;;:::i;:::-;;16990:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1931:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6718:83;6755:13;6788:5;;;;;;;;;;;;;;;;;6781:12;;6718:83;:::o;7643:193::-;7745:4;7767:39;7776:12;:10;:12::i;:::-;7790:7;7799:6;7767:8;:39::i;:::-;7824:4;7817:11;;7643:193;;;;:::o;5552:41::-;;;;;;;;;;;;;:::o;6995:95::-;7048:7;4520:2;4863;:13;;;;:::i;:::-;4847;:29;;;;:::i;:::-;7068:14;;6995:95;:::o;7844:446::-;7976:4;7993:36;8003:6;8011:9;8022:6;7993:9;:36::i;:::-;8040:220;8063:6;8084:12;:10;:12::i;:::-;8111:138;8167:6;8111:138;;;;;;;;;;;;;;;;;:11;:19;8123:6;8111:19;;;;;;;;;;;;;;;:33;8131:12;:10;:12::i;:::-;8111:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8040:8;:220::i;:::-;8278:4;8271:11;;7844:446;;;;;:::o;5861:57::-;;;;:::o;6904:83::-;6945:5;4520:2;6963:16;;6904:83;:::o;5600:28::-;;;;;;;;;;;;;:::o;16734:101::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16815:12:::1;16801:11;;:26;;;;;;;;;;;;;;;;;;16734:101:::0;:::o;12556:235::-;12622:19;;;;;;;;;;;12606:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12661:17;;;;;;;;;;;12645:33;;:12;:10;:12::i;:::-;:33;;;12606:72;12598:81;;;;;;12690:26;12719:21;12690:50;;12751:32;12764:18;12751:12;:32::i;:::-;12587:204;12556:235::o;7098:138::-;7164:7;7191:37;7211:7;:16;7219:7;7211:16;;;;;;;;;;;;;;;;7191:19;:37::i;:::-;7184:44;;7098:138;;;:::o;1775:148::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1882:1:::1;1845:40;;1866:6;::::0;::::1;;;;;;;;1845:40;;;;;;;;;;;;1913:1;1896:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1775:148::o:0;12207:97::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12284:12:::1;12270:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;12207:97:::0;:::o;16874:108::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16963:11:::1;16948:12;:26;;;;16874:108:::0;:::o;5751:47::-;;;;:::o;5358:43::-;;;;;;;;;;;;;;;;;:::o;1561:79::-;1599:7;1626:6;;;;;;;;;;;1619:13;;1561:79;:::o;5805:49::-;;;;:::o;6809:87::-;6848:13;6881:7;;;;;;;;;;;;;;;;;6874:14;;6809:87;:::o;16543:139::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16656:18:::1;16634:19;:40;;;;16543:139:::0;:::o;7244:199::-;7349:4;7371:42;7381:12;:10;:12::i;:::-;7395:9;7406:6;7371:9;:42::i;:::-;7431:4;7424:11;;7244:199;;;;:::o;16197:294::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16351:13:::1;16334:14;:30;;;;16393:14;16375:15;:32;;;;16433:11;16418:12;:26;;;;16471:12;16455:13;:28;;;;16197:294:::0;;;;:::o;12312:236::-;12378:19;;;;;;;;;;;12362:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12417:17;;;;;;;;;;;12401:33;;:12;:10;:12::i;:::-;:33;;;12362:72;12354:81;;;;;;12446:23;12472:24;12490:4;12472:9;:24::i;:::-;12446:50;;12507:33;12524:15;12507:16;:33::i;:::-;12343:205;12312:236::o;17242:234::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17359:9:::1;17355:114;17378:8;;:15;;17374:1;:19;17355:114;;;17449:8;17415:18;:31;17434:8;;17443:1;17434:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17415:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17395:3;;;;;:::i;:::-;;;;17355:114;;;;17242:234:::0;;;:::o;7451:184::-;7568:7;7600:11;:18;7612:5;7600:18;;;;;;;;;;;;;;;:27;7619:7;7600:27;;;;;;;;;;;;;;;;7593:34;;7451:184;;;;:::o;17113:121::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4520:2:::1;4863;:13;;;;:::i;:::-;4847;:29;;;;:::i;:::-;17169:12;:22;;;;4520:2;4863;:13;;;;:::i;:::-;4847;:29;;;;:::i;:::-;17202:14;:24;;;;17113:121::o:0;16990:115::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17084:13:::1;17067:14;:30;;;;16990:115:::0;:::o;1931:244::-;1698:12;:10;:12::i;:::-;1688:22;;:6;;;;;;;;;;:22;;;1680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2040:1:::1;2020:22;;:8;:22;;::::0;2012:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2130:8;2101:38;;2122:6;::::0;::::1;;;;;;;;2101:38;;;;;;;;;;;;2159:8;2150:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1931:244:::0;:::o;320:98::-;373:7;400:10;393:17;;320:98;:::o;8981:369::-;9125:1;9108:19;;:5;:19;;;9100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9206:1;9187:21;;:7;:21;;;9179:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9288:6;9258:11;:18;9270:5;9258:18;;;;;;;;;;;;;;;:27;9277:7;9258:27;;;;;;;;;;;;;;;:36;;;;9326:7;9310:32;;9319:5;9310:32;;;9335:6;9310:32;;;;;;:::i;:::-;;;;;;;;8981:369;;;:::o;9358:2243::-;9496:1;9480:18;;:4;:18;;;9472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9573:1;9559:16;;:2;:16;;;9551:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9643:1;9634:6;:10;9626:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9715:7;:5;:7::i;:::-;9707:15;;:4;:15;;;;:32;;;;;9732:7;:5;:7::i;:::-;9726:13;;:2;:13;;;;9707:32;9703:1172;;;9796:11;;;;;;;;;;9791:144;;9844:7;:5;:7::i;:::-;9836:15;;:4;:15;;;9828:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9791:144;9969:12;;9959:6;:22;;9951:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10040:13;;;;;;;;;;;10034:19;;:2;:19;;;10031:146;;10107:14;;10098:6;10082:13;10092:2;10082:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10074:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10031:146;10193:28;10224:24;10242:4;10224:9;:24::i;:::-;10193:55;;10263:12;10302:19;;10278:20;:43;;10263:58;;10365:12;;10341:20;:36;10338:124;;10434:12;;10411:35;;10338:124;10482:7;:18;;;;;10494:6;;;;;;;;;;;10493:7;10482:18;:43;;;;;10512:13;;;;;;;;;;;10504:21;;:4;:21;;;;10482:43;:58;;;;;10529:11;;;;;;;;;;;10482:58;:87;;;;;10545:18;:24;10564:4;10545:24;;;;;;;;;;;;;;;;;;;;;;;;;10544:25;10482:87;:114;;;;;10574:18;:22;10593:2;10574:22;;;;;;;;;;;;;;;;;;;;;;;;;10573:23;10482:114;10478:386;;;10617:38;10634:20;10617:16;:38::i;:::-;10674:26;10703:21;10674:50;;10768:1;10747:18;:22;10743:106;;;10794:35;10807:21;10794:12;:35::i;:::-;10743:106;10598:266;10478:386;9741:1134;;9703:1172;10887:12;10902:4;10887:19;;10951:18;:24;10970:4;10951:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10979:18;:22;10998:2;10979:22;;;;;;;;;;;;;;;;;;;;;;;;;10951:50;10950:102;;;;11015:13;;;;;;;;;;;11007:21;;:4;:21;;;;:44;;;;;11038:13;;;;;;;;;;;11032:19;;:2;:19;;;;11007:44;10950:102;10946:594;;;11079:5;11069:15;;10946:594;;;11162:13;;;;;;;;;;;11154:21;;:4;:21;;;:55;;;;;11193:15;;;;;;;;;;;11179:30;;:2;:30;;;;11154:55;11151:162;;;11242:14;;11230:9;:26;;;;11285:12;;11275:7;:22;;;;11151:162;11372:13;;;;;;;;;;;11366:19;;:2;:19;;;:55;;;;;11405:15;;;;;;;;;;;11389:32;;:4;:32;;;;11366:55;11362:165;;;11454:15;;11442:9;:27;;;;11498:13;;11488:7;:23;;;;11362:165;10946:594;11552:41;11567:4;11573:2;11577:6;11585:7;11552:14;:41::i;:::-;9461:2140;9358:2243;;;:::o;2539:224::-;2659:7;2692:1;2687;:6;;2695:12;2679:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2719:9;2735:1;2731;:5;;;;:::i;:::-;2719:17;;2754:1;2747:8;;;2539:224;;;;;:::o;12100:99::-;12157:17;;;;;;;;;;;:26;;:34;12184:6;12157:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12100:99;:::o;8298:323::-;8393:7;8451;;8440;:18;;8418:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8539:19;8561:10;:8;:10::i;:::-;8539:32;;8589:24;8601:11;8589:7;:11;;:24;;;;:::i;:::-;8582:31;;;8298:323;;;:::o;11609:483::-;6021:4;6012:6;;:13;;;;;;;;;;;;;;;;;;11687:21:::1;11725:1;11711:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11687:40;;11756:4;11738;11743:1;11738:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11782:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11772:4;11777:1;11772:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11815:62;11832:4;11847:15;;;;;;;;;;;11865:11;11815:8;:62::i;:::-;11888:15;;;;;;;;;;;:66;;;11969:11;11995:1;12011:4;12038;12058:15;11888:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11676:416;6057:5:::0;6048:6;;:14;;;;;;;;;;;;;;;;;;11609:483;:::o;12799:282::-;12955:7;12950:28;;12964:14;:12;:14::i;:::-;12950:28;12989:44;13007:6;13015:9;13026:6;12989:17;:44::i;:::-;13049:7;13044:29;;13058:15;:13;:15::i;:::-;13044:29;12799:282;;;;:::o;15760:164::-;15802:7;15823:15;15840;15859:19;:17;:19::i;:::-;15822:56;;;;15896:20;15908:7;15896;:11;;:20;;;;:::i;:::-;15889:27;;;;15760:164;:::o;3025:132::-;3083:7;3110:39;3114:1;3117;3110:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3103:46;;3025:132;;;;:::o;8629:219::-;8689:1;8676:9;;:14;:30;;;;;8705:1;8694:7;;:12;8676:30;8708:7;8672:43;8747:9;;8727:17;:29;;;;8785:7;;8767:15;:25;;;;8817:1;8805:9;:13;;;;8839:1;8829:7;:11;;;;8629:219;:::o;13089:610::-;13236:15;13266:23;13304:12;13331:23;13369:12;13396:13;13423:19;13434:7;13423:10;:19::i;:::-;13221:221;;;;;;;;;;;;13471:28;13491:7;13471;:15;13479:6;13471:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13453:7;:15;13461:6;13453:15;;;;;;;;;;;;;;;:46;;;;13531:39;13554:15;13531:7;:18;13539:9;13531:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13510:7;:18;13518:9;13510:18;;;;;;;;;;;;;;;:60;;;;13581:16;13591:5;13581:9;:16::i;:::-;13608:23;13620:4;13626;13608:11;:23::i;:::-;13664:9;13647:44;;13656:6;13647:44;;;13675:15;13647:44;;;;;;:::i;:::-;;;;;;;;13210:489;;;;;;13089:610;;;:::o;8856:117::-;8912:17;;8900:9;:29;;;;8950:15;;8940:7;:25;;;;8856:117::o;15932:257::-;15983:7;15992;16012:15;16030:7;;16012:25;;16048:15;4520:2;4863;:13;;;;:::i;:::-;4847;:29;;;;:::i;:::-;16048:25;;16098:20;4520:2;4863;:13;;;;:::i;:::-;4847;:29;;;;:::i;:::-;16098:7;;:11;;:20;;;;:::i;:::-;16088:7;:30;16084:61;;;16128:7;;4520:2;4863;:13;;;;:::i;:::-;4847;:29;;;;:::i;:::-;16120:25;;;;;;;;16084:61;16164:7;16173;16156:25;;;;;;15932:257;;;:::o;3165:223::-;3285:7;3317:1;3313;:5;3320:12;3305:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3344:9;3360:1;3356;:5;;;;:::i;:::-;3344:17;;3379:1;3372:8;;;3165:223;;;;;:::o;14118:615::-;14218:7;14240;14262;14284;14306;14328;14364:23;14389:12;14403:13;14433:40;14445:7;14454:9;;14465:7;;14433:11;:40::i;:::-;14363:110;;;;;;14484:19;14506:10;:8;:10::i;:::-;14484:32;;14528:15;14545:23;14570:12;14599:46;14611:7;14620:4;14626:5;14633:11;14599;:46::i;:::-;14527:118;;;;;;14664:7;14673:15;14690:4;14696:15;14713:4;14719:5;14656:69;;;;;;;;;;;;;;;;;;;14118:615;;;;;;;:::o;2395:136::-;2453:7;2480:43;2484:1;2487;2480:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2473:50;;2395:136;;;;:::o;2208:179::-;2266:7;2286:9;2302:1;2298;:5;;;;:::i;:::-;2286:17;;2327:1;2322;:6;;2314:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2378:1;2371:8;;;2208:179;;;;:::o;13707:211::-;13760:19;13782:10;:8;:10::i;:::-;13760:32;;13803:13;13819:22;13829:11;13819:5;:9;;:22;;;;:::i;:::-;13803:38;;13877:33;13904:5;13877:7;:22;13893:4;13877:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13852:7;:22;13868:4;13852:22;;;;;;;;;;;;;;;:58;;;;13749:169;;13707:211;:::o;13926:147::-;14004:17;14016:4;14004:7;;:11;;:17;;;;:::i;:::-;13994:7;:27;;;;14045:20;14060:4;14045:10;;:14;;:20;;;;:::i;:::-;14032:10;:33;;;;13926:147;;:::o;14741:469::-;14910:7;14932;14954;14989:12;15004:30;15030:3;15004:21;15016:8;15004:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14989:45;;15045:13;15061:28;15085:3;15061:19;15073:6;15061:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15045:44;;15100:23;15126:28;15148:5;15126:17;15138:4;15126:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15100:54;;15173:15;15190:4;15196:5;15165:37;;;;;;;;;14741:469;;;;;;;:::o;15218:534::-;15412:7;15434;15456;15491:15;15509:24;15521:11;15509:7;:11;;:24;;;;:::i;:::-;15491:42;;15544:12;15559:21;15568:11;15559:4;:8;;:21;;;;:::i;:::-;15544:36;;15591:13;15607:22;15617:11;15607:5;:9;;:22;;;;:::i;:::-;15591:38;;15640:23;15666:28;15688:5;15666:17;15678:4;15666:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15640:54;;15713:7;15722:15;15739:4;15705:39;;;;;;;;;;15218:534;;;;;;;;:::o;2771:246::-;2829:7;2858:1;2853;:6;2849:47;;2883:1;2876:8;;;;2849:47;2906:9;2922:1;2918;:5;;;;:::i;:::-;2906:17;;2951:1;2946;2942;:5;;;;:::i;:::-;:10;2934:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3008:1;3001:8;;;2771:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:117::-;8318:1;8315;8308:12;8332:117;8441:1;8438;8431:12;8455:117;8564:1;8561;8554:12;8595:568;8668:8;8678:6;8728:3;8721:4;8713:6;8709:17;8705:27;8695:122;;8736:79;;:::i;:::-;8695:122;8849:6;8836:20;8826:30;;8879:18;8871:6;8868:30;8865:117;;;8901:79;;:::i;:::-;8865:117;9015:4;9007:6;9003:17;8991:29;;9069:3;9061:4;9053:6;9049:17;9039:8;9035:32;9032:41;9029:128;;;9076:79;;:::i;:::-;9029:128;8595:568;;;;;:::o;9169:698::-;9261:6;9269;9277;9326:2;9314:9;9305:7;9301:23;9297:32;9294:119;;;9332:79;;:::i;:::-;9294:119;9480:1;9469:9;9465:17;9452:31;9510:18;9502:6;9499:30;9496:117;;;9532:79;;:::i;:::-;9496:117;9645:80;9717:7;9708:6;9697:9;9693:22;9645:80;:::i;:::-;9627:98;;;;9423:312;9774:2;9800:50;9842:7;9833:6;9822:9;9818:22;9800:50;:::i;:::-;9790:60;;9745:115;9169:698;;;;;:::o;9873:474::-;9941:6;9949;9998:2;9986:9;9977:7;9973:23;9969:32;9966:119;;;10004:79;;:::i;:::-;9966:119;10124:1;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10095:117;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9873:474;;;;;:::o;10353:180::-;10401:77;10398:1;10391:88;10498:4;10495:1;10488:15;10522:4;10519:1;10512:15;10539:102;10581:8;10628:5;10625:1;10621:13;10600:34;;10539:102;;;:::o;10647:848::-;10708:5;10715:4;10739:6;10730:15;;10763:5;10754:14;;10777:712;10798:1;10788:8;10785:15;10777:712;;;10893:4;10888:3;10884:14;10878:4;10875:24;10872:50;;;10902:18;;:::i;:::-;10872:50;10952:1;10942:8;10938:16;10935:451;;;11367:4;11360:5;11356:16;11347:25;;10935:451;11417:4;11411;11407:15;11399:23;;11447:32;11470:8;11447:32;:::i;:::-;11435:44;;10777:712;;;10647:848;;;;;;;:::o;11501:1073::-;11555:5;11746:8;11736:40;;11767:1;11758:10;;11769:5;;11736:40;11795:4;11785:36;;11812:1;11803:10;;11814:5;;11785:36;11881:4;11929:1;11924:27;;;;11965:1;11960:191;;;;11874:277;;11924:27;11942:1;11933:10;;11944:5;;;11960:191;12005:3;11995:8;11992:17;11989:43;;;12012:18;;:::i;:::-;11989:43;12061:8;12058:1;12054:16;12045:25;;12096:3;12089:5;12086:14;12083:40;;;12103:18;;:::i;:::-;12083:40;12136:5;;;11874:277;;12260:2;12250:8;12247:16;12241:3;12235:4;12232:13;12228:36;12210:2;12200:8;12197:16;12192:2;12186:4;12183:12;12179:35;12163:111;12160:246;;;12316:8;12310:4;12306:19;12297:28;;12351:3;12344:5;12341:14;12338:40;;;12358:18;;:::i;:::-;12338:40;12391:5;;12160:246;12431:42;12469:3;12459:8;12453:4;12450:1;12431:42;:::i;:::-;12416:57;;;;12505:4;12500:3;12496:14;12489:5;12486:25;12483:51;;;12514:18;;:::i;:::-;12483:51;12563:4;12556:5;12552:16;12543:25;;11501:1073;;;;;;:::o;12580:281::-;12638:5;12662:23;12680:4;12662:23;:::i;:::-;12654:31;;12706:25;12722:8;12706:25;:::i;:::-;12694:37;;12750:104;12787:66;12777:8;12771:4;12750:104;:::i;:::-;12741:113;;12580:281;;;;:::o;12867:348::-;12907:7;12930:20;12948:1;12930:20;:::i;:::-;12925:25;;12964:20;12982:1;12964:20;:::i;:::-;12959:25;;13152:1;13084:66;13080:74;13077:1;13074:81;13069:1;13062:9;13055:17;13051:105;13048:131;;;13159:18;;:::i;:::-;13048:131;13207:1;13204;13200:9;13189:20;;12867:348;;;;:::o;13221:182::-;13361:34;13357:1;13349:6;13345:14;13338:58;13221:182;:::o;13409:366::-;13551:3;13572:67;13636:2;13631:3;13572:67;:::i;:::-;13565:74;;13648:93;13737:3;13648:93;:::i;:::-;13766:2;13761:3;13757:12;13750:19;;13409:366;;;:::o;13781:419::-;13947:4;13985:2;13974:9;13970:18;13962:26;;14034:9;14028:4;14024:20;14020:1;14009:9;14005:17;13998:47;14062:131;14188:4;14062:131;:::i;:::-;14054:139;;13781:419;;;:::o;14206:180::-;14254:77;14251:1;14244:88;14351:4;14348:1;14341:15;14375:4;14372:1;14365:15;14392:233;14431:3;14454:24;14472:5;14454:24;:::i;:::-;14445:33;;14500:66;14493:5;14490:77;14487:103;;14570:18;;:::i;:::-;14487:103;14617:1;14610:5;14606:13;14599:20;;14392:233;;;:::o;14631:225::-;14771:34;14767:1;14759:6;14755:14;14748:58;14840:8;14835:2;14827:6;14823:15;14816:33;14631:225;:::o;14862:366::-;15004:3;15025:67;15089:2;15084:3;15025:67;:::i;:::-;15018:74;;15101:93;15190:3;15101:93;:::i;:::-;15219:2;15214:3;15210:12;15203:19;;14862:366;;;:::o;15234:419::-;15400:4;15438:2;15427:9;15423:18;15415:26;;15487:9;15481:4;15477:20;15473:1;15462:9;15458:17;15451:47;15515:131;15641:4;15515:131;:::i;:::-;15507:139;;15234:419;;;:::o;15659:223::-;15799:34;15795:1;15787:6;15783:14;15776:58;15868:6;15863:2;15855:6;15851:15;15844:31;15659:223;:::o;15888:366::-;16030:3;16051:67;16115:2;16110:3;16051:67;:::i;:::-;16044:74;;16127:93;16216:3;16127:93;:::i;:::-;16245:2;16240:3;16236:12;16229:19;;15888:366;;;:::o;16260:419::-;16426:4;16464:2;16453:9;16449:18;16441:26;;16513:9;16507:4;16503:20;16499:1;16488:9;16484:17;16477:47;16541:131;16667:4;16541:131;:::i;:::-;16533:139;;16260:419;;;:::o;16685:221::-;16825:34;16821:1;16813:6;16809:14;16802:58;16894:4;16889:2;16881:6;16877:15;16870:29;16685:221;:::o;16912:366::-;17054:3;17075:67;17139:2;17134:3;17075:67;:::i;:::-;17068:74;;17151:93;17240:3;17151:93;:::i;:::-;17269:2;17264:3;17260:12;17253:19;;16912:366;;;:::o;17284:419::-;17450:4;17488:2;17477:9;17473:18;17465:26;;17537:9;17531:4;17527:20;17523:1;17512:9;17508:17;17501:47;17565:131;17691:4;17565:131;:::i;:::-;17557:139;;17284:419;;;:::o;17709:224::-;17849:34;17845:1;17837:6;17833:14;17826:58;17918:7;17913:2;17905:6;17901:15;17894:32;17709:224;:::o;17939:366::-;18081:3;18102:67;18166:2;18161:3;18102:67;:::i;:::-;18095:74;;18178:93;18267:3;18178:93;:::i;:::-;18296:2;18291:3;18287:12;18280:19;;17939:366;;;:::o;18311:419::-;18477:4;18515:2;18504:9;18500:18;18492:26;;18564:9;18558:4;18554:20;18550:1;18539:9;18535:17;18528:47;18592:131;18718:4;18592:131;:::i;:::-;18584:139;;18311:419;;;:::o;18736:222::-;18876:34;18872:1;18864:6;18860:14;18853:58;18945:5;18940:2;18932:6;18928:15;18921:30;18736:222;:::o;18964:366::-;19106:3;19127:67;19191:2;19186:3;19127:67;:::i;:::-;19120:74;;19203:93;19292:3;19203:93;:::i;:::-;19321:2;19316:3;19312:12;19305:19;;18964:366;;;:::o;19336:419::-;19502:4;19540:2;19529:9;19525:18;19517:26;;19589:9;19583:4;19579:20;19575:1;19564:9;19560:17;19553:47;19617:131;19743:4;19617:131;:::i;:::-;19609:139;;19336:419;;;:::o;19761:228::-;19901:34;19897:1;19889:6;19885:14;19878:58;19970:11;19965:2;19957:6;19953:15;19946:36;19761:228;:::o;19995:366::-;20137:3;20158:67;20222:2;20217:3;20158:67;:::i;:::-;20151:74;;20234:93;20323:3;20234:93;:::i;:::-;20352:2;20347:3;20343:12;20336:19;;19995:366;;;:::o;20367:419::-;20533:4;20571:2;20560:9;20556:18;20548:26;;20620:9;20614:4;20610:20;20606:1;20595:9;20591:17;20584:47;20648:131;20774:4;20648:131;:::i;:::-;20640:139;;20367:419;;;:::o;20792:250::-;20932:34;20928:1;20920:6;20916:14;20909:58;21001:33;20996:2;20988:6;20984:15;20977:58;20792:250;:::o;21048:366::-;21190:3;21211:67;21275:2;21270:3;21211:67;:::i;:::-;21204:74;;21287:93;21376:3;21287:93;:::i;:::-;21405:2;21400:3;21396:12;21389:19;;21048:366;;;:::o;21420:419::-;21586:4;21624:2;21613:9;21609:18;21601:26;;21673:9;21667:4;21663:20;21659:1;21648:9;21644:17;21637:47;21701:131;21827:4;21701:131;:::i;:::-;21693:139;;21420:419;;;:::o;21845:178::-;21985:30;21981:1;21973:6;21969:14;21962:54;21845:178;:::o;22029:366::-;22171:3;22192:67;22256:2;22251:3;22192:67;:::i;:::-;22185:74;;22268:93;22357:3;22268:93;:::i;:::-;22386:2;22381:3;22377:12;22370:19;;22029:366;;;:::o;22401:419::-;22567:4;22605:2;22594:9;22590:18;22582:26;;22654:9;22648:4;22644:20;22640:1;22629:9;22625:17;22618:47;22682:131;22808:4;22682:131;:::i;:::-;22674:139;;22401:419;;;:::o;22826:191::-;22866:3;22885:20;22903:1;22885:20;:::i;:::-;22880:25;;22919:20;22937:1;22919:20;:::i;:::-;22914:25;;22962:1;22959;22955:9;22948:16;;22983:3;22980:1;22977:10;22974:36;;;22990:18;;:::i;:::-;22974:36;22826:191;;;;:::o;23023:222::-;23163:34;23159:1;23151:6;23147:14;23140:58;23232:5;23227:2;23219:6;23215:15;23208:30;23023:222;:::o;23251:366::-;23393:3;23414:67;23478:2;23473:3;23414:67;:::i;:::-;23407:74;;23490:93;23579:3;23490:93;:::i;:::-;23608:2;23603:3;23599:12;23592:19;;23251:366;;;:::o;23623:419::-;23789:4;23827:2;23816:9;23812:18;23804:26;;23876:9;23870:4;23866:20;23862:1;23851:9;23847:17;23840:47;23904:131;24030:4;23904:131;:::i;:::-;23896:139;;23623:419;;;:::o;24048:194::-;24088:4;24108:20;24126:1;24108:20;:::i;:::-;24103:25;;24142:20;24160:1;24142:20;:::i;:::-;24137:25;;24186:1;24183;24179:9;24171:17;;24210:1;24204:4;24201:11;24198:37;;;24215:18;;:::i;:::-;24198:37;24048:194;;;;:::o;24248:229::-;24388:34;24384:1;24376:6;24372:14;24365:58;24457:12;24452:2;24444:6;24440:15;24433:37;24248:229;:::o;24483:366::-;24625:3;24646:67;24710:2;24705:3;24646:67;:::i;:::-;24639:74;;24722:93;24811:3;24722:93;:::i;:::-;24840:2;24835:3;24831:12;24824:19;;24483:366;;;:::o;24855:419::-;25021:4;25059:2;25048:9;25044:18;25036:26;;25108:9;25102:4;25098:20;25094:1;25083:9;25079:17;25072:47;25136:131;25262:4;25136:131;:::i;:::-;25128:139;;24855:419;;;:::o;25280:180::-;25328:77;25325:1;25318:88;25425:4;25422:1;25415:15;25449:4;25446:1;25439:15;25466:143;25523:5;25554:6;25548:13;25539:22;;25570:33;25597:5;25570:33;:::i;:::-;25466:143;;;;:::o;25615:351::-;25685:6;25734:2;25722:9;25713:7;25709:23;25705:32;25702:119;;;25740:79;;:::i;:::-;25702:119;25860:1;25885:64;25941:7;25932:6;25921:9;25917:22;25885:64;:::i;:::-;25875:74;;25831:128;25615:351;;;;:::o;25972:85::-;26017:7;26046:5;26035:16;;25972:85;;;:::o;26063:158::-;26121:9;26154:61;26172:42;26181:32;26207:5;26181:32;:::i;:::-;26172:42;:::i;:::-;26154:61;:::i;:::-;26141:74;;26063:158;;;:::o;26227:147::-;26322:45;26361:5;26322:45;:::i;:::-;26317:3;26310:58;26227:147;;:::o;26380:114::-;26447:6;26481:5;26475:12;26465:22;;26380:114;;;:::o;26500:184::-;26599:11;26633:6;26628:3;26621:19;26673:4;26668:3;26664:14;26649:29;;26500:184;;;;:::o;26690:132::-;26757:4;26780:3;26772:11;;26810:4;26805:3;26801:14;26793:22;;26690:132;;;:::o;26828:108::-;26905:24;26923:5;26905:24;:::i;:::-;26900:3;26893:37;26828:108;;:::o;26942:179::-;27011:10;27032:46;27074:3;27066:6;27032:46;:::i;:::-;27110:4;27105:3;27101:14;27087:28;;26942:179;;;;:::o;27127:113::-;27197:4;27229;27224:3;27220:14;27212:22;;27127:113;;;:::o;27276:732::-;27395:3;27424:54;27472:5;27424:54;:::i;:::-;27494:86;27573:6;27568:3;27494:86;:::i;:::-;27487:93;;27604:56;27654:5;27604:56;:::i;:::-;27683:7;27714:1;27699:284;27724:6;27721:1;27718:13;27699:284;;;27800:6;27794:13;27827:63;27886:3;27871:13;27827:63;:::i;:::-;27820:70;;27913:60;27966:6;27913:60;:::i;:::-;27903:70;;27759:224;27746:1;27743;27739:9;27734:14;;27699:284;;;27703:14;27999:3;27992:10;;27400:608;;;27276:732;;;;:::o;28014:831::-;28277:4;28315:3;28304:9;28300:19;28292:27;;28329:71;28397:1;28386:9;28382:17;28373:6;28329:71;:::i;:::-;28410:80;28486:2;28475:9;28471:18;28462:6;28410:80;:::i;:::-;28537:9;28531:4;28527:20;28522:2;28511:9;28507:18;28500:48;28565:108;28668:4;28659:6;28565:108;:::i;:::-;28557:116;;28683:72;28751:2;28740:9;28736:18;28727:6;28683:72;:::i;:::-;28765:73;28833:3;28822:9;28818:19;28809:6;28765:73;:::i;:::-;28014:831;;;;;;;;:::o;28851:180::-;28899:77;28896:1;28889:88;28996:4;28993:1;28986:15;29020:4;29017:1;29010:15;29037:185;29077:1;29094:20;29112:1;29094:20;:::i;:::-;29089:25;;29128:20;29146:1;29128:20;:::i;:::-;29123:25;;29167:1;29157:35;;29172:18;;:::i;:::-;29157:35;29214:1;29211;29207:9;29202:14;;29037:185;;;;:::o;29228:177::-;29368:29;29364:1;29356:6;29352:14;29345:53;29228:177;:::o;29411:366::-;29553:3;29574:67;29638:2;29633:3;29574:67;:::i;:::-;29567:74;;29650:93;29739:3;29650:93;:::i;:::-;29768:2;29763:3;29759:12;29752:19;;29411:366;;;:::o;29783:419::-;29949:4;29987:2;29976:9;29972:18;29964:26;;30036:9;30030:4;30026:20;30022:1;30011:9;30007:17;30000:47;30064:131;30190:4;30064:131;:::i;:::-;30056:139;;29783:419;;;:::o;30208:220::-;30348:34;30344:1;30336:6;30332:14;30325:58;30417:3;30412:2;30404:6;30400:15;30393:28;30208:220;:::o;30434:366::-;30576:3;30597:67;30661:2;30656:3;30597:67;:::i;:::-;30590:74;;30673:93;30762:3;30673:93;:::i;:::-;30791:2;30786:3;30782:12;30775:19;;30434:366;;;:::o;30806:419::-;30972:4;31010:2;30999:9;30995:18;30987:26;;31059:9;31053:4;31049:20;31045:1;31034:9;31030:17;31023:47;31087:131;31213:4;31087:131;:::i;:::-;31079:139;;30806:419;;;:::o

Swarm Source

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