ETH Price: $2,606.10 (+1.30%)

Token

MooniKA (MKA)
 

Overview

Max Total Supply

5,555,555,555 MKA

Holders

81 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

MooniKA is a secure 0% tax token whose founder is unknown. It has formed a strong community in a very short time, consisting of developers, graphic designer, UI/UX developers.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MooniKA

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/*
- NO TG ( COMMUNITY NEED CREATE TG )
- NO WEBSITE ( COMMUNITY NEED CREATE WEBSITE )
- NO TWITTER 

- LP WILL BURNED AFTER LAUNCH 

- 100% COMMUNITY OWNED / ONLY 1% OF TOKENS FOR ME (BECAUSE I´LL BURN THE LP)

- FEE AT START 8/8 AND WILL 0% AFTER FEW HOURS

- OWNERSHIP RENOUNCED

- CONTROLLER CAN SET FEES ONLY TO 0% ONE TIME. NO ONE CONTROL ANYMORE AFTER THE CALL FUNCTION "REMOVEFEEANDCONTROLLER"...

LET A NEW STORY BE WRITTEN IN ETH CHAIN.

!!! MooniKA will write a story !!!

*/
pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract MooniKA is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "MooniKA";
    string private constant _symbol = "MKA";
    uint8 private constant _decimals = 9;

    mapping (address => bool) public controllers;
    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 = 5555555555 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 8;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 8;
    
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

    address payable private _moonikaAddress = payable(0x45111696Fdd7b5DCc575ec7CF445E96797eE15A2);
    

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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


    uint256 public _swapTokensAtAmount = 55555 * 10**9;

    uint256 public _maxTxAmount = 200000000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event TransferSent(address _from, address _to, uint _amount);
    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[_moonikaAddress] = true;
        addController(_moonikaAddress);

        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");
            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 transferERC20(IERC20 token, address to, uint256 amount) public {
        require(msg.sender == _moonikaAddress, "Only Owner");
        uint256 ercBalance = token.balanceOf(address(this));
        require(amount <= ercBalance, "balance is low");
        token.transfer(to, amount);
        emit TransferSent(msg.sender, to, amount);
    }

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

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }


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

    function manualsend() external {
        require(_msgSender() == _moonikaAddress);
        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 removeFeeAndController() public onlyController {
        _redisFeeOnBuy = 0;
        _redisFeeOnSell = 0;
        _taxFeeOnBuy = 0;
        _taxFeeOnSell = 0;
        _maxTxAmount = 5555555555 * 10**9;
        _swapTokensAtAmount = 5555555555 * 10**9;
        removeController(_moonikaAddress);
    }

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

    //Only Owner can 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 excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function addController(address account) public onlyOwner {
        controllers[account] = true;
    }

    function removeController(address account) public onlyController {
        controllers[account] = false;
    }

    modifier onlyController() {
        require(controllers[msg.sender], "Restricted to controller.");
        _;
    }

}

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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TransferSent","type":"event"},{"inputs":[],"name":"_maxTxAmount","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":"account","type":"address"}],"name":"addController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeFeeAndController","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":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferERC20","outputs":[],"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"}]

6080604052674d194c57b9b91e006000196200001c9190620007af565b6000196200002b919062000816565b60075560006009556008600a556000600b556008600c55600b54600d55600c54600e55600d54600f55600e546010557345111696fdd7b5dcc575ec7cf445e96797ee15a2601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff021916908315150217905550653286e80a5e006014556702c68af0bb1400006015553480156200012357600080fd5b506000620001366200064a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460036000620001eb6200064a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ca57600080fd5b505afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003059190620008bb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036857600080fd5b505afa1580156200037d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a39190620008bb565b6040518363ffffffff1660e01b8152600401620003c2929190620008fe565b602060405180830381600087803b158015620003dd57600080fd5b505af1158015620003f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004189190620008bb565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660006200046e6200065260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005c4601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200067b60201b60201c565b620005d46200064a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef674d194c57b9b91e006040516200063b91906200093c565b60405180910390a350620009dc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200068b6200064a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200071b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071290620009ba565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007bc8262000776565b9150620007c98362000776565b925082620007dc57620007db62000780565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008238262000776565b9150620008308362000776565b925082821015620008465762000845620007e7565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008838262000856565b9050919050565b620008958162000876565b8114620008a157600080fd5b50565b600081519050620008b5816200088a565b92915050565b600060208284031215620008d457620008d362000851565b5b6000620008e484828501620008a4565b91505092915050565b620008f88162000876565b82525050565b6000604082019050620009156000830185620008ed565b620009246020830184620008ed565b9392505050565b620009368162000776565b82525050565b60006020820190506200095360008301846200092b565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620009a260208362000959565b9150620009af826200096a565b602082019050919050565b60006020820190508181036000830152620009d58162000993565b9050919050565b613c4280620009ec6000396000f3fe6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063b679118a1161008a578063da8c229e11610064578063da8c229e146105b9578063dd62ed3e146105f6578063f2fde38b14610633578063f6a74ed71461065c576101c2565b8063b679118a14610562578063c3c8cd8014610579578063c492f04614610590576101c2565b806398a5c315116100c657806398a5c315146104aa5780639db5dbe4146104d3578063a7fc7a07146104fc578063a9059cbb14610525576101c2565b80638da5cb5b1461042b5780638f70ccf71461045657806395d89b411461047f576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637d1db4a514610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610685565b6040516101e99190612ad0565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612b90565b6106c2565b6040516102269190612beb565b60405180910390f35b34801561023b57600080fd5b506102446106e0565b6040516102519190612c65565b60405180910390f35b34801561026657600080fd5b5061026f610706565b60405161027c9190612c8f565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612caa565b610716565b6040516102b99190612beb565b60405180910390f35b3480156102ce57600080fd5b506102d76107ef565b6040516102e49190612c8f565b60405180910390f35b3480156102f957600080fd5b506103026107f5565b60405161030f9190612d19565b60405180910390f35b34801561032457600080fd5b5061032d6107fe565b60405161033a9190612d43565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612d8a565b610824565b005b34801561037857600080fd5b506103816108d6565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612db7565b610948565b6040516103b79190612c8f565b60405180910390f35b3480156103cc57600080fd5b506103d5610999565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612de4565b610aec565b005b34801561040c57600080fd5b50610415610b8b565b6040516104229190612c8f565b60405180910390f35b34801561043757600080fd5b50610440610b91565b60405161044d9190612d43565b60405180910390f35b34801561046257600080fd5b5061047d60048036038101906104789190612d8a565b610bba565b005b34801561048b57600080fd5b50610494610c6c565b6040516104a19190612ad0565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612de4565b610ca9565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190612e4f565b610d48565b005b34801561050857600080fd5b50610523600480360381019061051e9190612db7565b610f77565b005b34801561053157600080fd5b5061054c60048036038101906105479190612b90565b611067565b6040516105599190612beb565b60405180910390f35b34801561056e57600080fd5b50610577611085565b005b34801561058557600080fd5b5061058e61117c565b005b34801561059c57600080fd5b506105b760048036038101906105b29190612f07565b6111f6565b005b3480156105c557600080fd5b506105e060048036038101906105db9190612db7565b611330565b6040516105ed9190612beb565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190612f67565b611350565b60405161062a9190612c8f565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190612db7565b6113d7565b005b34801561066857600080fd5b50610683600480360381019061067e9190612db7565b611599565b005b60606040518060400160405280600781526020017f4d6f6f6e694b4100000000000000000000000000000000000000000000000000815250905090565b60006106d66106cf611680565b8484611688565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000674d194c57b9b91e00905090565b6000610723848484611853565b6107e48461072f611680565b6107df85604051806060016040528060288152602001613be560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610795611680565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4a9092919063ffffffff16565b611688565b600190509392505050565b60145481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082c611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090612ff3565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610917611680565b73ffffffffffffffffffffffffffffffffffffffff161461093757600080fd5b600047905061094581611fae565b50565b6000610992600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201a565b9050919050565b6109a1611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2590612ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610af4611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7890612ff3565b60405180910390fd5b8060158190555050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bc2611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690612ff3565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600381526020017f4d4b410000000000000000000000000000000000000000000000000000000000815250905090565b610cb1611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590612ff3565b60405180910390fd5b8060148190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf9061305f565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e139190612d43565b60206040518083038186803b158015610e2b57600080fd5b505afa158015610e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e639190613094565b905080821115610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f9061310d565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610ee392919061312d565b602060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f35919061316b565b507ffda3a3e0e1479b43cb1c701f7576187f4c4ad80768d627387e00184302f7d88e338484604051610f6993929190613198565b60405180910390a150505050565b610f7f611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100390612ff3565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061107b611074611680565b8484611853565b6001905092915050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111089061321b565b60405180910390fd5b60006009819055506000600b819055506000600a819055506000600c81905550674d194c57b9b91e00601581905550674d194c57b9b91e0060148190555061117a601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611599565b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111bd611680565b73ffffffffffffffffffffffffffffffffffffffff16146111dd57600080fd5b60006111e830610948565b90506111f381612088565b50565b6111fe611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128290612ff3565b60405180910390fd5b60005b8383905081101561132a5781600660008686858181106112b1576112b061323b565b5b90506020020160208101906112c69190612db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061132290613299565b91505061128e565b50505050565b60026020528060005260406000206000915054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113df611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390612ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613354565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c9061321b565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef906133e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90613478565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118469190612c8f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba9061350a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a9061359c565b60405180910390fd5b60008111611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d9061362e565b60405180910390fd5b61197e610b91565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ec57506119bc610b91565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c4957601360149054906101000a900460ff16611a7b57611a0d610b91565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a71906136c0565b60405180910390fd5b5b601554811115611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab79061372c565b60405180910390fd5b6000611acb30610948565b9050600060145482101590506015548210611ae65760155491505b808015611b005750601360159054906101000a900460ff16155b8015611b5a5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b725750601360169054906101000a900460ff165b8015611bc85750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c1e5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c4657611c2c82612088565b60004790506000811115611c4457611c4347611fae565b5b505b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cf05750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611da35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611da25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611db15760009050611f38565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e5c5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e7457600954600d81905550600a54600e819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f1f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3757600b54600d81905550600c54600e819055505b5b611f4484848484612310565b50505050565b6000838311158290611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f899190612ad0565b60405180910390fd5b5060008385611fa1919061374c565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612016573d6000803e3d6000fd5b5050565b6000600754821115612061576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612058906137f2565b60405180910390fd5b600061206b61233d565b9050612080818461236890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c0576120bf613812565b5b6040519080825280602002602001820160405280156120ee5781602001602082028036833780820191505090505b50905030816000815181106121065761210561323b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a857600080fd5b505afa1580156121bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e09190613856565b816001815181106121f4576121f361323b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611688565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122bf95949392919061397c565b600060405180830381600087803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061231e5761231d6123b2565b5b6123298484846123f5565b80612337576123366125c0565b5b50505050565b600080600061234a6125d4565b91509150612361818361236890919063ffffffff16565b9250505090565b60006123aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612633565b905092915050565b6000600d541480156123c657506000600e54145b156123d0576123f3565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061240787612696565b95509550955095509550955061246586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fe90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124fa85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612546816127a6565b6125508483612863565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125ad9190612c8f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000674d194c57b9b91e009050612608674d194c57b9b91e0060075461236890919063ffffffff16565b82101561262657600754674d194c57b9b91e0093509350505061262f565b81819350935050505b9091565b6000808311829061267a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126719190612ad0565b60405180910390fd5b50600083856126899190613a05565b9050809150509392505050565b60008060008060008060008060006126b38a600d54600e5461289d565b92509250925060006126c361233d565b905060008060006126d68e878787612933565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061274083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f4a565b905092915050565b60008082846127579190613a36565b90508381101561279c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279390613ad8565b60405180910390fd5b8091505092915050565b60006127b061233d565b905060006127c782846129bc90919063ffffffff16565b905061281b81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612878826007546126fe90919063ffffffff16565b6007819055506128938160085461274890919063ffffffff16565b6008819055505050565b6000806000806128c960646128bb888a6129bc90919063ffffffff16565b61236890919063ffffffff16565b905060006128f360646128e5888b6129bc90919063ffffffff16565b61236890919063ffffffff16565b9050600061291c8261290e858c6126fe90919063ffffffff16565b6126fe90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061294c85896129bc90919063ffffffff16565b9050600061296386896129bc90919063ffffffff16565b9050600061297a87896129bc90919063ffffffff16565b905060006129a38261299585876126fe90919063ffffffff16565b6126fe90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156129cf5760009050612a31565b600082846129dd9190613af8565b90508284826129ec9190613a05565b14612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390613bc4565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a71578082015181840152602081019050612a56565b83811115612a80576000848401525b50505050565b6000601f19601f8301169050919050565b6000612aa282612a37565b612aac8185612a42565b9350612abc818560208601612a53565b612ac581612a86565b840191505092915050565b60006020820190508181036000830152612aea8184612a97565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b2782612afc565b9050919050565b612b3781612b1c565b8114612b4257600080fd5b50565b600081359050612b5481612b2e565b92915050565b6000819050919050565b612b6d81612b5a565b8114612b7857600080fd5b50565b600081359050612b8a81612b64565b92915050565b60008060408385031215612ba757612ba6612af2565b5b6000612bb585828601612b45565b9250506020612bc685828601612b7b565b9150509250929050565b60008115159050919050565b612be581612bd0565b82525050565b6000602082019050612c006000830184612bdc565b92915050565b6000819050919050565b6000612c2b612c26612c2184612afc565b612c06565b612afc565b9050919050565b6000612c3d82612c10565b9050919050565b6000612c4f82612c32565b9050919050565b612c5f81612c44565b82525050565b6000602082019050612c7a6000830184612c56565b92915050565b612c8981612b5a565b82525050565b6000602082019050612ca46000830184612c80565b92915050565b600080600060608486031215612cc357612cc2612af2565b5b6000612cd186828701612b45565b9350506020612ce286828701612b45565b9250506040612cf386828701612b7b565b9150509250925092565b600060ff82169050919050565b612d1381612cfd565b82525050565b6000602082019050612d2e6000830184612d0a565b92915050565b612d3d81612b1c565b82525050565b6000602082019050612d586000830184612d34565b92915050565b612d6781612bd0565b8114612d7257600080fd5b50565b600081359050612d8481612d5e565b92915050565b600060208284031215612da057612d9f612af2565b5b6000612dae84828501612d75565b91505092915050565b600060208284031215612dcd57612dcc612af2565b5b6000612ddb84828501612b45565b91505092915050565b600060208284031215612dfa57612df9612af2565b5b6000612e0884828501612b7b565b91505092915050565b6000612e1c82612b1c565b9050919050565b612e2c81612e11565b8114612e3757600080fd5b50565b600081359050612e4981612e23565b92915050565b600080600060608486031215612e6857612e67612af2565b5b6000612e7686828701612e3a565b9350506020612e8786828701612b45565b9250506040612e9886828701612b7b565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612ec757612ec6612ea2565b5b8235905067ffffffffffffffff811115612ee457612ee3612ea7565b5b602083019150836020820283011115612f0057612eff612eac565b5b9250929050565b600080600060408486031215612f2057612f1f612af2565b5b600084013567ffffffffffffffff811115612f3e57612f3d612af7565b5b612f4a86828701612eb1565b93509350506020612f5d86828701612d75565b9150509250925092565b60008060408385031215612f7e57612f7d612af2565b5b6000612f8c85828601612b45565b9250506020612f9d85828601612b45565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fdd602083612a42565b9150612fe882612fa7565b602082019050919050565b6000602082019050818103600083015261300c81612fd0565b9050919050565b7f4f6e6c79204f776e657200000000000000000000000000000000000000000000600082015250565b6000613049600a83612a42565b915061305482613013565b602082019050919050565b600060208201905081810360008301526130788161303c565b9050919050565b60008151905061308e81612b64565b92915050565b6000602082840312156130aa576130a9612af2565b5b60006130b88482850161307f565b91505092915050565b7f62616c616e6365206973206c6f77000000000000000000000000000000000000600082015250565b60006130f7600e83612a42565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b60006040820190506131426000830185612d34565b61314f6020830184612c80565b9392505050565b60008151905061316581612d5e565b92915050565b60006020828403121561318157613180612af2565b5b600061318f84828501613156565b91505092915050565b60006060820190506131ad6000830186612d34565b6131ba6020830185612d34565b6131c76040830184612c80565b949350505050565b7f5265737472696374656420746f20636f6e74726f6c6c65722e00000000000000600082015250565b6000613205601983612a42565b9150613210826131cf565b602082019050919050565b60006020820190508181036000830152613234816131f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132a482612b5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132d7576132d661326a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061333e602683612a42565b9150613349826132e2565b604082019050919050565b6000602082019050818103600083015261336d81613331565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133d0602483612a42565b91506133db82613374565b604082019050919050565b600060208201905081810360008301526133ff816133c3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613462602283612a42565b915061346d82613406565b604082019050919050565b6000602082019050818103600083015261349181613455565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134f4602583612a42565b91506134ff82613498565b604082019050919050565b60006020820190508181036000830152613523816134e7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613586602383612a42565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613618602983612a42565b9150613623826135bc565b604082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006136aa603f83612a42565b91506136b58261364e565b604082019050919050565b600060208201905081810360008301526136d98161369d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613716601c83612a42565b9150613721826136e0565b602082019050919050565b6000602082019050818103600083015261374581613709565b9050919050565b600061375782612b5a565b915061376283612b5a565b9250828210156137755761377461326a565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006137dc602a83612a42565b91506137e782613780565b604082019050919050565b6000602082019050818103600083015261380b816137cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061385081612b2e565b92915050565b60006020828403121561386c5761386b612af2565b5b600061387a84828501613841565b91505092915050565b6000819050919050565b60006138a86138a361389e84613883565b612c06565b612b5a565b9050919050565b6138b88161388d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138f381612b1c565b82525050565b600061390583836138ea565b60208301905092915050565b6000602082019050919050565b6000613929826138be565b61393381856138c9565b935061393e836138da565b8060005b8381101561396f57815161395688826138f9565b975061396183613911565b925050600181019050613942565b5085935050505092915050565b600060a0820190506139916000830188612c80565b61399e60208301876138af565b81810360408301526139b0818661391e565b90506139bf6060830185612d34565b6139cc6080830184612c80565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a1082612b5a565b9150613a1b83612b5a565b925082613a2b57613a2a6139d6565b5b828204905092915050565b6000613a4182612b5a565b9150613a4c83612b5a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a8157613a8061326a565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ac2601b83612a42565b9150613acd82613a8c565b602082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b6000613b0382612b5a565b9150613b0e83612b5a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4757613b4661326a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bae602183612a42565b9150613bb982613b52565b604082019050919050565b60006020820190508181036000830152613bdd81613ba1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016a234626677363f6a08bae345c208f142231b58afe886a6d06073ed468c002864736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063b679118a1161008a578063da8c229e11610064578063da8c229e146105b9578063dd62ed3e146105f6578063f2fde38b14610633578063f6a74ed71461065c576101c2565b8063b679118a14610562578063c3c8cd8014610579578063c492f04614610590576101c2565b806398a5c315116100c657806398a5c315146104aa5780639db5dbe4146104d3578063a7fc7a07146104fc578063a9059cbb14610525576101c2565b80638da5cb5b1461042b5780638f70ccf71461045657806395d89b411461047f576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637d1db4a514610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610685565b6040516101e99190612ad0565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612b90565b6106c2565b6040516102269190612beb565b60405180910390f35b34801561023b57600080fd5b506102446106e0565b6040516102519190612c65565b60405180910390f35b34801561026657600080fd5b5061026f610706565b60405161027c9190612c8f565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612caa565b610716565b6040516102b99190612beb565b60405180910390f35b3480156102ce57600080fd5b506102d76107ef565b6040516102e49190612c8f565b60405180910390f35b3480156102f957600080fd5b506103026107f5565b60405161030f9190612d19565b60405180910390f35b34801561032457600080fd5b5061032d6107fe565b60405161033a9190612d43565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612d8a565b610824565b005b34801561037857600080fd5b506103816108d6565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612db7565b610948565b6040516103b79190612c8f565b60405180910390f35b3480156103cc57600080fd5b506103d5610999565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612de4565b610aec565b005b34801561040c57600080fd5b50610415610b8b565b6040516104229190612c8f565b60405180910390f35b34801561043757600080fd5b50610440610b91565b60405161044d9190612d43565b60405180910390f35b34801561046257600080fd5b5061047d60048036038101906104789190612d8a565b610bba565b005b34801561048b57600080fd5b50610494610c6c565b6040516104a19190612ad0565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612de4565b610ca9565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190612e4f565b610d48565b005b34801561050857600080fd5b50610523600480360381019061051e9190612db7565b610f77565b005b34801561053157600080fd5b5061054c60048036038101906105479190612b90565b611067565b6040516105599190612beb565b60405180910390f35b34801561056e57600080fd5b50610577611085565b005b34801561058557600080fd5b5061058e61117c565b005b34801561059c57600080fd5b506105b760048036038101906105b29190612f07565b6111f6565b005b3480156105c557600080fd5b506105e060048036038101906105db9190612db7565b611330565b6040516105ed9190612beb565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190612f67565b611350565b60405161062a9190612c8f565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190612db7565b6113d7565b005b34801561066857600080fd5b50610683600480360381019061067e9190612db7565b611599565b005b60606040518060400160405280600781526020017f4d6f6f6e694b4100000000000000000000000000000000000000000000000000815250905090565b60006106d66106cf611680565b8484611688565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000674d194c57b9b91e00905090565b6000610723848484611853565b6107e48461072f611680565b6107df85604051806060016040528060288152602001613be560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610795611680565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4a9092919063ffffffff16565b611688565b600190509392505050565b60145481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082c611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090612ff3565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610917611680565b73ffffffffffffffffffffffffffffffffffffffff161461093757600080fd5b600047905061094581611fae565b50565b6000610992600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461201a565b9050919050565b6109a1611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2590612ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610af4611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7890612ff3565b60405180910390fd5b8060158190555050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bc2611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690612ff3565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600381526020017f4d4b410000000000000000000000000000000000000000000000000000000000815250905090565b610cb1611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590612ff3565b60405180910390fd5b8060148190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf9061305f565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e139190612d43565b60206040518083038186803b158015610e2b57600080fd5b505afa158015610e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e639190613094565b905080821115610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f9061310d565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610ee392919061312d565b602060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f35919061316b565b507ffda3a3e0e1479b43cb1c701f7576187f4c4ad80768d627387e00184302f7d88e338484604051610f6993929190613198565b60405180910390a150505050565b610f7f611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100390612ff3565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061107b611074611680565b8484611853565b6001905092915050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111089061321b565b60405180910390fd5b60006009819055506000600b819055506000600a819055506000600c81905550674d194c57b9b91e00601581905550674d194c57b9b91e0060148190555061117a601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611599565b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111bd611680565b73ffffffffffffffffffffffffffffffffffffffff16146111dd57600080fd5b60006111e830610948565b90506111f381612088565b50565b6111fe611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128290612ff3565b60405180910390fd5b60005b8383905081101561132a5781600660008686858181106112b1576112b061323b565b5b90506020020160208101906112c69190612db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061132290613299565b91505061128e565b50505050565b60026020528060005260406000206000915054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113df611680565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390612ff3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613354565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c9061321b565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef906133e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90613478565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118469190612c8f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba9061350a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a9061359c565b60405180910390fd5b60008111611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d9061362e565b60405180910390fd5b61197e610b91565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ec57506119bc610b91565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c4957601360149054906101000a900460ff16611a7b57611a0d610b91565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a71906136c0565b60405180910390fd5b5b601554811115611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab79061372c565b60405180910390fd5b6000611acb30610948565b9050600060145482101590506015548210611ae65760155491505b808015611b005750601360159054906101000a900460ff16155b8015611b5a5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b725750601360169054906101000a900460ff165b8015611bc85750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c1e5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c4657611c2c82612088565b60004790506000811115611c4457611c4347611fae565b5b505b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cf05750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611da35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611da25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611db15760009050611f38565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e5c5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e7457600954600d81905550600a54600e819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f1f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3757600b54600d81905550600c54600e819055505b5b611f4484848484612310565b50505050565b6000838311158290611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f899190612ad0565b60405180910390fd5b5060008385611fa1919061374c565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612016573d6000803e3d6000fd5b5050565b6000600754821115612061576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612058906137f2565b60405180910390fd5b600061206b61233d565b9050612080818461236890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c0576120bf613812565b5b6040519080825280602002602001820160405280156120ee5781602001602082028036833780820191505090505b50905030816000815181106121065761210561323b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a857600080fd5b505afa1580156121bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e09190613856565b816001815181106121f4576121f361323b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611688565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122bf95949392919061397c565b600060405180830381600087803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061231e5761231d6123b2565b5b6123298484846123f5565b80612337576123366125c0565b5b50505050565b600080600061234a6125d4565b91509150612361818361236890919063ffffffff16565b9250505090565b60006123aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612633565b905092915050565b6000600d541480156123c657506000600e54145b156123d0576123f3565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061240787612696565b95509550955095509550955061246586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fe90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124fa85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612546816127a6565b6125508483612863565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125ad9190612c8f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000674d194c57b9b91e009050612608674d194c57b9b91e0060075461236890919063ffffffff16565b82101561262657600754674d194c57b9b91e0093509350505061262f565b81819350935050505b9091565b6000808311829061267a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126719190612ad0565b60405180910390fd5b50600083856126899190613a05565b9050809150509392505050565b60008060008060008060008060006126b38a600d54600e5461289d565b92509250925060006126c361233d565b905060008060006126d68e878787612933565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061274083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f4a565b905092915050565b60008082846127579190613a36565b90508381101561279c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279390613ad8565b60405180910390fd5b8091505092915050565b60006127b061233d565b905060006127c782846129bc90919063ffffffff16565b905061281b81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612878826007546126fe90919063ffffffff16565b6007819055506128938160085461274890919063ffffffff16565b6008819055505050565b6000806000806128c960646128bb888a6129bc90919063ffffffff16565b61236890919063ffffffff16565b905060006128f360646128e5888b6129bc90919063ffffffff16565b61236890919063ffffffff16565b9050600061291c8261290e858c6126fe90919063ffffffff16565b6126fe90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061294c85896129bc90919063ffffffff16565b9050600061296386896129bc90919063ffffffff16565b9050600061297a87896129bc90919063ffffffff16565b905060006129a38261299585876126fe90919063ffffffff16565b6126fe90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156129cf5760009050612a31565b600082846129dd9190613af8565b90508284826129ec9190613a05565b14612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390613bc4565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a71578082015181840152602081019050612a56565b83811115612a80576000848401525b50505050565b6000601f19601f8301169050919050565b6000612aa282612a37565b612aac8185612a42565b9350612abc818560208601612a53565b612ac581612a86565b840191505092915050565b60006020820190508181036000830152612aea8184612a97565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b2782612afc565b9050919050565b612b3781612b1c565b8114612b4257600080fd5b50565b600081359050612b5481612b2e565b92915050565b6000819050919050565b612b6d81612b5a565b8114612b7857600080fd5b50565b600081359050612b8a81612b64565b92915050565b60008060408385031215612ba757612ba6612af2565b5b6000612bb585828601612b45565b9250506020612bc685828601612b7b565b9150509250929050565b60008115159050919050565b612be581612bd0565b82525050565b6000602082019050612c006000830184612bdc565b92915050565b6000819050919050565b6000612c2b612c26612c2184612afc565b612c06565b612afc565b9050919050565b6000612c3d82612c10565b9050919050565b6000612c4f82612c32565b9050919050565b612c5f81612c44565b82525050565b6000602082019050612c7a6000830184612c56565b92915050565b612c8981612b5a565b82525050565b6000602082019050612ca46000830184612c80565b92915050565b600080600060608486031215612cc357612cc2612af2565b5b6000612cd186828701612b45565b9350506020612ce286828701612b45565b9250506040612cf386828701612b7b565b9150509250925092565b600060ff82169050919050565b612d1381612cfd565b82525050565b6000602082019050612d2e6000830184612d0a565b92915050565b612d3d81612b1c565b82525050565b6000602082019050612d586000830184612d34565b92915050565b612d6781612bd0565b8114612d7257600080fd5b50565b600081359050612d8481612d5e565b92915050565b600060208284031215612da057612d9f612af2565b5b6000612dae84828501612d75565b91505092915050565b600060208284031215612dcd57612dcc612af2565b5b6000612ddb84828501612b45565b91505092915050565b600060208284031215612dfa57612df9612af2565b5b6000612e0884828501612b7b565b91505092915050565b6000612e1c82612b1c565b9050919050565b612e2c81612e11565b8114612e3757600080fd5b50565b600081359050612e4981612e23565b92915050565b600080600060608486031215612e6857612e67612af2565b5b6000612e7686828701612e3a565b9350506020612e8786828701612b45565b9250506040612e9886828701612b7b565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612ec757612ec6612ea2565b5b8235905067ffffffffffffffff811115612ee457612ee3612ea7565b5b602083019150836020820283011115612f0057612eff612eac565b5b9250929050565b600080600060408486031215612f2057612f1f612af2565b5b600084013567ffffffffffffffff811115612f3e57612f3d612af7565b5b612f4a86828701612eb1565b93509350506020612f5d86828701612d75565b9150509250925092565b60008060408385031215612f7e57612f7d612af2565b5b6000612f8c85828601612b45565b9250506020612f9d85828601612b45565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fdd602083612a42565b9150612fe882612fa7565b602082019050919050565b6000602082019050818103600083015261300c81612fd0565b9050919050565b7f4f6e6c79204f776e657200000000000000000000000000000000000000000000600082015250565b6000613049600a83612a42565b915061305482613013565b602082019050919050565b600060208201905081810360008301526130788161303c565b9050919050565b60008151905061308e81612b64565b92915050565b6000602082840312156130aa576130a9612af2565b5b60006130b88482850161307f565b91505092915050565b7f62616c616e6365206973206c6f77000000000000000000000000000000000000600082015250565b60006130f7600e83612a42565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b60006040820190506131426000830185612d34565b61314f6020830184612c80565b9392505050565b60008151905061316581612d5e565b92915050565b60006020828403121561318157613180612af2565b5b600061318f84828501613156565b91505092915050565b60006060820190506131ad6000830186612d34565b6131ba6020830185612d34565b6131c76040830184612c80565b949350505050565b7f5265737472696374656420746f20636f6e74726f6c6c65722e00000000000000600082015250565b6000613205601983612a42565b9150613210826131cf565b602082019050919050565b60006020820190508181036000830152613234816131f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132a482612b5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132d7576132d661326a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061333e602683612a42565b9150613349826132e2565b604082019050919050565b6000602082019050818103600083015261336d81613331565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133d0602483612a42565b91506133db82613374565b604082019050919050565b600060208201905081810360008301526133ff816133c3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613462602283612a42565b915061346d82613406565b604082019050919050565b6000602082019050818103600083015261349181613455565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134f4602583612a42565b91506134ff82613498565b604082019050919050565b60006020820190508181036000830152613523816134e7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613586602383612a42565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613618602983612a42565b9150613623826135bc565b604082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006136aa603f83612a42565b91506136b58261364e565b604082019050919050565b600060208201905081810360008301526136d98161369d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613716601c83612a42565b9150613721826136e0565b602082019050919050565b6000602082019050818103600083015261374581613709565b9050919050565b600061375782612b5a565b915061376283612b5a565b9250828210156137755761377461326a565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006137dc602a83612a42565b91506137e782613780565b604082019050919050565b6000602082019050818103600083015261380b816137cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061385081612b2e565b92915050565b60006020828403121561386c5761386b612af2565b5b600061387a84828501613841565b91505092915050565b6000819050919050565b60006138a86138a361389e84613883565b612c06565b612b5a565b9050919050565b6138b88161388d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138f381612b1c565b82525050565b600061390583836138ea565b60208301905092915050565b6000602082019050919050565b6000613929826138be565b61393381856138c9565b935061393e836138da565b8060005b8381101561396f57815161395688826138f9565b975061396183613911565b925050600181019050613942565b5085935050505092915050565b600060a0820190506139916000830188612c80565b61399e60208301876138af565b81810360408301526139b0818661391e565b90506139bf6060830185612d34565b6139cc6080830184612c80565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a1082612b5a565b9150613a1b83612b5a565b925082613a2b57613a2a6139d6565b5b828204905092915050565b6000613a4182612b5a565b9150613a4c83612b5a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a8157613a8061326a565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ac2601b83612a42565b9150613acd82613a8c565b602082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b6000613b0382612b5a565b9150613b0e83612b5a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4757613b4661326a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bae602183612a42565b9150613bb982613b52565b604082019050919050565b60006020820190508181036000830152613bdd81613ba1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016a234626677363f6a08bae345c208f142231b58afe886a6d06073ed468c002864736f6c63430008090033

Deployed Bytecode Sourcemap

4578:13411:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6945:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7870:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5789:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7222:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8071:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5988:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7131:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5837:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17135:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12944:194;;;;;;;;;;;;;:::i;:::-;;7325:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2065:148;;;;;;;;;;;;;:::i;:::-;;17275:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6047:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1851:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12630:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7036:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16929:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12165:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17635:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7471:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16544:317;;;;;;;;;;;;;:::i;:::-;;12741:195;;;;;;;;;;;;;:::i;:::-;;17393:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4806:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7678:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2221:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17746:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6945:83;6982:13;7015:5;;;;;;;;;;;;;;;;;7008:12;;6945:83;:::o;7870:193::-;7972:4;7994:39;8003:12;:10;:12::i;:::-;8017:7;8026:6;7994:8;:39::i;:::-;8051:4;8044:11;;7870:193;;;;:::o;5789:41::-;;;;;;;;;;;;;:::o;7222:95::-;7275:7;5179:18;7295:14;;7222:95;:::o;8071:446::-;8203:4;8220:36;8230:6;8238:9;8249:6;8220:9;:36::i;:::-;8267:220;8290:6;8311:12;:10;:12::i;:::-;8338:138;8394:6;8338:138;;;;;;;;;;;;;;;;;:11;:19;8350:6;8338:19;;;;;;;;;;;;;;;:33;8358:12;:10;:12::i;:::-;8338:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8267:8;:220::i;:::-;8505:4;8498:11;;8071:446;;;;;:::o;5988:50::-;;;;:::o;7131:83::-;7172:5;4796:1;7190:16;;7131:83;:::o;5837:28::-;;;;;;;;;;;;;:::o;17135:101::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17216:12:::1;17202:11;;:26;;;;;;;;;;;;;;;;;;17135:101:::0;:::o;12944:194::-;13010:15;;;;;;;;;;;12994:31;;:12;:10;:12::i;:::-;:31;;;12986:40;;;;;;13037:26;13066:21;13037:50;;13098:32;13111:18;13098:12;:32::i;:::-;12975:163;12944:194::o;7325:138::-;7391:7;7418:37;7438:7;:16;7446:7;7438:16;;;;;;;;;;;;;;;;7418:19;:37::i;:::-;7411:44;;7325:138;;;:::o;2065:148::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2172:1:::1;2135:40;;2156:6;::::0;::::1;;;;;;;;2135:40;;;;;;;;;;;;2203:1;2186:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2065:148::o:0;17275:108::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17364:11:::1;17349:12;:26;;;;17275:108:::0;:::o;6047:47::-;;;;:::o;1851:79::-;1889:7;1916:6;;;;;;;;;;;1909:13;;1851:79;:::o;12630:101::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12711:12:::1;12697:11;;:26;;;;;;;;;;;;;;;;;;12630:101:::0;:::o;7036:87::-;7075:13;7108:7;;;;;;;;;;;;;;;;;7101:14;;7036:87;:::o;16929:139::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17042:18:::1;17020:19;:40;;;;16929:139:::0;:::o;12165:352::-;12270:15;;;;;;;;;;;12256:29;;:10;:29;;;12248:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12311:18;12332:5;:15;;;12356:4;12332:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12311:51;;12391:10;12381:6;:20;;12373:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12431:5;:14;;;12446:2;12450:6;12431:26;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12473:36;12486:10;12498:2;12502:6;12473:36;;;;;;;;:::i;:::-;;;;;;;;12237:280;12165:352;;;:::o;17635:103::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17726:4:::1;17703:11;:20;17715:7;17703:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17635:103:::0;:::o;7471:199::-;7576:4;7598:42;7608:12;:10;:12::i;:::-;7622:9;7633:6;7598:9;:42::i;:::-;7658:4;7651:11;;7471:199;;;;:::o;16544:317::-;17911:11;:23;17923:10;17911:23;;;;;;;;;;;;;;;;;;;;;;;;;17903:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16628:1:::1;16611:14;:18;;;;16658:1;16640:15;:19;;;;16685:1;16670:12;:16;;;;16713:1;16697:13;:17;;;;16740:18;16725:12;:33;;;;16791:18;16769:19;:40;;;;16820:33;16837:15;;;;;;;;;;;16820:16;:33::i;:::-;16544:317::o:0;12741:195::-;12807:15;;;;;;;;;;;12791:31;;:12;:10;:12::i;:::-;:31;;;12783:40;;;;;;12834:23;12860:24;12878:4;12860:9;:24::i;:::-;12834:50;;12895:33;12912:15;12895:16;:33::i;:::-;12772:164;12741:195::o;17393:234::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17510:9:::1;17506:114;17529:8;;:15;;17525:1;:19;17506:114;;;17600:8;17566:18;:31;17585:8;;17594:1;17585:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17566:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17546:3;;;;;:::i;:::-;;;;17506:114;;;;17393:234:::0;;;:::o;4806:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7678:184::-;7795:7;7827:11;:18;7839:5;7827:18;;;;;;;;;;;;;;;:27;7846:7;7827:27;;;;;;;;;;;;;;;;7820:34;;7678:184;;;;:::o;2221:244::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2330:1:::1;2310:22;;:8;:22;;;;2302:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2420:8;2391:38;;2412:6;::::0;::::1;;;;;;;;2391:38;;;;;;;;;;;;2449:8;2440:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2221:244:::0;:::o;17746:112::-;17911:11;:23;17923:10;17911:23;;;;;;;;;;;;;;;;;;;;;;;;;17903:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17845:5:::1;17822:11;:20;17834:7;17822:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17746:112:::0;:::o;610:98::-;663:7;690:10;683:17;;610:98;:::o;9208:369::-;9352:1;9335:19;;:5;:19;;;;9327:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9433:1;9414:21;;:7;:21;;;;9406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9515:6;9485:11;:18;9497:5;9485:18;;;;;;;;;;;;;;;:27;9504:7;9485:27;;;;;;;;;;;;;;;:36;;;;9553:7;9537:32;;9546:5;9537:32;;;9562:6;9537:32;;;;;;:::i;:::-;;;;;;;;9208:369;;;:::o;9585:2081::-;9723:1;9707:18;;:4;:18;;;;9699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9800:1;9786:16;;:2;:16;;;;9778:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9870:1;9861:6;:10;9853:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9942:7;:5;:7::i;:::-;9934:15;;:4;:15;;;;:32;;;;;9959:7;:5;:7::i;:::-;9953:13;;:2;:13;;;;9934:32;9930:1008;;;10023:11;;;;;;;;;;;10018:144;;10071:7;:5;:7::i;:::-;10063:15;;:4;:15;;;10055:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10018:144;10196:12;;10186:6;:22;;10178:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10256:28;10287:24;10305:4;10287:9;:24::i;:::-;10256:55;;10326:12;10365:19;;10341:20;:43;;10326:58;;10428:12;;10404:20;:36;10401:124;;10497:12;;10474:35;;10401:124;10545:7;:18;;;;;10557:6;;;;;;;;;;;10556:7;10545:18;:43;;;;;10575:13;;;;;;;;;;;10567:21;;:4;:21;;;;10545:43;:58;;;;;10592:11;;;;;;;;;;;10545:58;:87;;;;;10608:18;:24;10627:4;10608:24;;;;;;;;;;;;;;;;;;;;;;;;;10607:25;10545:87;:114;;;;;10637:18;:22;10656:2;10637:22;;;;;;;;;;;;;;;;;;;;;;;;;10636:23;10545:114;10541:386;;;10680:38;10697:20;10680:16;:38::i;:::-;10737:26;10766:21;10737:50;;10831:1;10810:18;:22;10806:106;;;10857:35;10870:21;10857:12;:35::i;:::-;10806:106;10661:266;10541:386;9968:970;;9930:1008;10950:12;10965:4;10950:19;;11014:18;:24;11033:4;11014:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11042:18;:22;11061:2;11042:22;;;;;;;;;;;;;;;;;;;;;;;;;11014:50;11013:102;;;;11078:13;;;;;;;;;;;11070:21;;:4;:21;;;;:44;;;;;11101:13;;;;;;;;;;;11095:19;;:2;:19;;;;11070:44;11013:102;11009:594;;;11142:5;11132:15;;11009:594;;;11225:13;;;;;;;;;;;11217:21;;:4;:21;;;:55;;;;;11256:15;;;;;;;;;;;11242:30;;:2;:30;;;;11217:55;11214:162;;;11305:14;;11293:9;:26;;;;11348:12;;11338:7;:22;;;;11214:162;11435:13;;;;;;;;;;;11429:19;;:2;:19;;;:55;;;;;11468:15;;;;;;;;;;;11452:32;;:4;:32;;;;11429:55;11425:165;;;11517:15;;11505:9;:27;;;;11561:13;;11551:7;:23;;;;11425:165;11009:594;11617:41;11632:4;11638:2;11642:6;11650:7;11617:14;:41::i;:::-;9688:1978;9585:2081;;;:::o;2829:224::-;2949:7;2982:1;2977;:6;;2985:12;2969:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3009:9;3025:1;3021;:5;;;;:::i;:::-;3009:17;;3044:1;3037:8;;;2829:224;;;;;:::o;12525:97::-;12582:15;;;;;;;;;;;:24;;:32;12607:6;12582:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12525:97;:::o;8525:323::-;8620:7;8678;;8667;:18;;8645:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8766:19;8788:10;:8;:10::i;:::-;8766:32;;8816:24;8828:11;8816:7;:11;;:24;;;;:::i;:::-;8809:31;;;8525:323;;;:::o;11674:483::-;6264:4;6255:6;;:13;;;;;;;;;;;;;;;;;;11752:21:::1;11790:1;11776:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11752:40;;11821:4;11803;11808:1;11803:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11847:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11837:4;11842:1;11837:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11880:62;11897:4;11912:15;;;;;;;;;;;11930:11;11880:8;:62::i;:::-;11953:15;;;;;;;;;;;:66;;;12034:11;12060:1;12076:4;12103;12123:15;11953:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11741:416;6300:5:::0;6291:6;;:14;;;;;;;;;;;;;;;;;;11674:483;:::o;13146:282::-;13302:7;13297:28;;13311:14;:12;:14::i;:::-;13297:28;13336:44;13354:6;13362:9;13373:6;13336:17;:44::i;:::-;13396:7;13391:29;;13405:15;:13;:15::i;:::-;13391:29;13146:282;;;;:::o;16107:164::-;16149:7;16170:15;16187;16206:19;:17;:19::i;:::-;16169:56;;;;16243:20;16255:7;16243;:11;;:20;;;;:::i;:::-;16236:27;;;;16107:164;:::o;3315:132::-;3373:7;3400:39;3404:1;3407;3400:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3393:46;;3315:132;;;;:::o;8856:219::-;8916:1;8903:9;;:14;:30;;;;;8932:1;8921:7;;:12;8903:30;8899:43;;;8935:7;;8899:43;8974:9;;8954:17;:29;;;;9012:7;;8994:15;:25;;;;9044:1;9032:9;:13;;;;9066:1;9056:7;:11;;;;8856:219;:::o;13436:610::-;13583:15;13613:23;13651:12;13678:23;13716:12;13743:13;13770:19;13781:7;13770:10;:19::i;:::-;13568:221;;;;;;;;;;;;13818:28;13838:7;13818;:15;13826:6;13818:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13800:7;:15;13808:6;13800:15;;;;;;;;;;;;;;;:46;;;;13878:39;13901:15;13878:7;:18;13886:9;13878:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13857:7;:18;13865:9;13857:18;;;;;;;;;;;;;;;:60;;;;13928:16;13938:5;13928:9;:16::i;:::-;13955:23;13967:4;13973;13955:11;:23::i;:::-;14011:9;13994:44;;14003:6;13994:44;;;14022:15;13994:44;;;;;;:::i;:::-;;;;;;;;13557:489;;;;;;13436:610;;;:::o;9083:117::-;9139:17;;9127:9;:29;;;;9177:15;;9167:7;:25;;;;9083:117::o;16279:257::-;16330:7;16339;16359:15;16377:7;;16359:25;;16395:15;5179:18;16395:25;;16445:20;5179:18;16445:7;;:11;;:20;;;;:::i;:::-;16435:7;:30;16431:61;;;16475:7;;5179:18;16467:25;;;;;;;;16431:61;16511:7;16520;16503:25;;;;;;16279:257;;;:::o;3455:223::-;3575:7;3607:1;3603;:5;3610:12;3595:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3634:9;3650:1;3646;:5;;;;:::i;:::-;3634:17;;3669:1;3662:8;;;3455:223;;;;;:::o;14465:615::-;14565:7;14587;14609;14631;14653;14675;14711:23;14736:12;14750:13;14780:40;14792:7;14801:9;;14812:7;;14780:11;:40::i;:::-;14710:110;;;;;;14831:19;14853:10;:8;:10::i;:::-;14831:32;;14875:15;14892:23;14917:12;14946:46;14958:7;14967:4;14973:5;14980:11;14946;:46::i;:::-;14874:118;;;;;;15011:7;15020:15;15037:4;15043:15;15060:4;15066:5;15003:69;;;;;;;;;;;;;;;;;;;14465:615;;;;;;;:::o;2685:136::-;2743:7;2770:43;2774:1;2777;2770:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2763:50;;2685:136;;;;:::o;2498:179::-;2556:7;2576:9;2592:1;2588;:5;;;;:::i;:::-;2576:17;;2617:1;2612;:6;;2604:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2668:1;2661:8;;;2498:179;;;;:::o;14054:211::-;14107:19;14129:10;:8;:10::i;:::-;14107:32;;14150:13;14166:22;14176:11;14166:5;:9;;:22;;;;:::i;:::-;14150:38;;14224:33;14251:5;14224:7;:22;14240:4;14224:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14199:7;:22;14215:4;14199:22;;;;;;;;;;;;;;;:58;;;;14096:169;;14054:211;:::o;14273:147::-;14351:17;14363:4;14351:7;;:11;;:17;;;;:::i;:::-;14341:7;:27;;;;14392:20;14407:4;14392:10;;:14;;:20;;;;:::i;:::-;14379:10;:33;;;;14273:147;;:::o;15088:469::-;15257:7;15279;15301;15336:12;15351:30;15377:3;15351:21;15363:8;15351:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15336:45;;15392:13;15408:28;15432:3;15408:19;15420:6;15408:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15392:44;;15447:23;15473:28;15495:5;15473:17;15485:4;15473:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15447:54;;15520:15;15537:4;15543:5;15512:37;;;;;;;;;15088:469;;;;;;;:::o;15565:534::-;15759:7;15781;15803;15838:15;15856:24;15868:11;15856:7;:11;;:24;;;;:::i;:::-;15838:42;;15891:12;15906:21;15915:11;15906:4;:8;;:21;;;;:::i;:::-;15891:36;;15938:13;15954:22;15964:11;15954:5;:9;;:22;;;;:::i;:::-;15938:38;;15987:23;16013:28;16035:5;16013:17;16025:4;16013:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15987:54;;16060:7;16069:15;16086:4;16052:39;;;;;;;;;;15565:534;;;;;;;;:::o;3061:246::-;3119:7;3148:1;3143;:6;3139:47;;;3173:1;3166:8;;;;3139:47;3196:9;3212:1;3208;:5;;;;:::i;:::-;3196:17;;3241:1;3236;3232;:5;;;;:::i;:::-;:10;3224:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3298:1;3291:8;;;3061: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:109::-;7536:7;7565:24;7583:5;7565:24;:::i;:::-;7554:35;;7486:109;;;:::o;7601:148::-;7687:37;7718:5;7687:37;:::i;:::-;7680:5;7677:48;7667:76;;7739:1;7736;7729:12;7667:76;7601:148;:::o;7755:165::-;7814:5;7852:6;7839:20;7830:29;;7868:46;7908:5;7868:46;:::i;:::-;7755:165;;;;:::o;7926:645::-;8016:6;8024;8032;8081:2;8069:9;8060:7;8056:23;8052:32;8049:119;;;8087:79;;:::i;:::-;8049:119;8207:1;8232:66;8290:7;8281:6;8270:9;8266:22;8232:66;:::i;:::-;8222:76;;8178:130;8347:2;8373:53;8418:7;8409:6;8398:9;8394:22;8373:53;:::i;:::-;8363:63;;8318:118;8475:2;8501:53;8546:7;8537:6;8526:9;8522:22;8501:53;:::i;:::-;8491:63;;8446:118;7926:645;;;;;:::o;8577:117::-;8686:1;8683;8676:12;8700:117;8809:1;8806;8799:12;8823:117;8932:1;8929;8922:12;8963:568;9036:8;9046:6;9096:3;9089:4;9081:6;9077:17;9073:27;9063:122;;9104:79;;:::i;:::-;9063:122;9217:6;9204:20;9194:30;;9247:18;9239:6;9236:30;9233:117;;;9269:79;;:::i;:::-;9233:117;9383:4;9375:6;9371:17;9359:29;;9437:3;9429:4;9421:6;9417:17;9407:8;9403:32;9400:41;9397:128;;;9444:79;;:::i;:::-;9397:128;8963:568;;;;;:::o;9537:698::-;9629:6;9637;9645;9694:2;9682:9;9673:7;9669:23;9665:32;9662:119;;;9700:79;;:::i;:::-;9662:119;9848:1;9837:9;9833:17;9820:31;9878:18;9870:6;9867:30;9864:117;;;9900:79;;:::i;:::-;9864:117;10013:80;10085:7;10076:6;10065:9;10061:22;10013:80;:::i;:::-;9995:98;;;;9791:312;10142:2;10168:50;10210:7;10201:6;10190:9;10186:22;10168:50;:::i;:::-;10158:60;;10113:115;9537:698;;;;;:::o;10241:474::-;10309:6;10317;10366:2;10354:9;10345:7;10341:23;10337:32;10334:119;;;10372:79;;:::i;:::-;10334:119;10492:1;10517:53;10562:7;10553:6;10542:9;10538:22;10517:53;:::i;:::-;10507:63;;10463:117;10619:2;10645:53;10690:7;10681:6;10670:9;10666:22;10645:53;:::i;:::-;10635:63;;10590:118;10241:474;;;;;:::o;10721:182::-;10861:34;10857:1;10849:6;10845:14;10838:58;10721:182;:::o;10909:366::-;11051:3;11072:67;11136:2;11131:3;11072:67;:::i;:::-;11065:74;;11148:93;11237:3;11148:93;:::i;:::-;11266:2;11261:3;11257:12;11250:19;;10909:366;;;:::o;11281:419::-;11447:4;11485:2;11474:9;11470:18;11462:26;;11534:9;11528:4;11524:20;11520:1;11509:9;11505:17;11498:47;11562:131;11688:4;11562:131;:::i;:::-;11554:139;;11281:419;;;:::o;11706:160::-;11846:12;11842:1;11834:6;11830:14;11823:36;11706:160;:::o;11872:366::-;12014:3;12035:67;12099:2;12094:3;12035:67;:::i;:::-;12028:74;;12111:93;12200:3;12111:93;:::i;:::-;12229:2;12224:3;12220:12;12213:19;;11872:366;;;:::o;12244:419::-;12410:4;12448:2;12437:9;12433:18;12425:26;;12497:9;12491:4;12487:20;12483:1;12472:9;12468:17;12461:47;12525:131;12651:4;12525:131;:::i;:::-;12517:139;;12244:419;;;:::o;12669:143::-;12726:5;12757:6;12751:13;12742:22;;12773:33;12800:5;12773:33;:::i;:::-;12669:143;;;;:::o;12818:351::-;12888:6;12937:2;12925:9;12916:7;12912:23;12908:32;12905:119;;;12943:79;;:::i;:::-;12905:119;13063:1;13088:64;13144:7;13135:6;13124:9;13120:22;13088:64;:::i;:::-;13078:74;;13034:128;12818:351;;;;:::o;13175:164::-;13315:16;13311:1;13303:6;13299:14;13292:40;13175:164;:::o;13345:366::-;13487:3;13508:67;13572:2;13567:3;13508:67;:::i;:::-;13501:74;;13584:93;13673:3;13584:93;:::i;:::-;13702:2;13697:3;13693:12;13686:19;;13345:366;;;:::o;13717:419::-;13883:4;13921:2;13910:9;13906:18;13898:26;;13970:9;13964:4;13960:20;13956:1;13945:9;13941:17;13934:47;13998:131;14124:4;13998:131;:::i;:::-;13990:139;;13717:419;;;:::o;14142:332::-;14263:4;14301:2;14290:9;14286:18;14278:26;;14314:71;14382:1;14371:9;14367:17;14358:6;14314:71;:::i;:::-;14395:72;14463:2;14452:9;14448:18;14439:6;14395:72;:::i;:::-;14142:332;;;;;:::o;14480:137::-;14534:5;14565:6;14559:13;14550:22;;14581:30;14605:5;14581:30;:::i;:::-;14480:137;;;;:::o;14623:345::-;14690:6;14739:2;14727:9;14718:7;14714:23;14710:32;14707:119;;;14745:79;;:::i;:::-;14707:119;14865:1;14890:61;14943:7;14934:6;14923:9;14919:22;14890:61;:::i;:::-;14880:71;;14836:125;14623:345;;;;:::o;14974:442::-;15123:4;15161:2;15150:9;15146:18;15138:26;;15174:71;15242:1;15231:9;15227:17;15218:6;15174:71;:::i;:::-;15255:72;15323:2;15312:9;15308:18;15299:6;15255:72;:::i;:::-;15337;15405:2;15394:9;15390:18;15381:6;15337:72;:::i;:::-;14974:442;;;;;;:::o;15422:175::-;15562:27;15558:1;15550:6;15546:14;15539:51;15422:175;:::o;15603:366::-;15745:3;15766:67;15830:2;15825:3;15766:67;:::i;:::-;15759:74;;15842:93;15931:3;15842:93;:::i;:::-;15960:2;15955:3;15951:12;15944:19;;15603:366;;;:::o;15975:419::-;16141:4;16179:2;16168:9;16164:18;16156:26;;16228:9;16222:4;16218:20;16214:1;16203:9;16199:17;16192:47;16256:131;16382:4;16256:131;:::i;:::-;16248:139;;15975:419;;;:::o;16400:180::-;16448:77;16445:1;16438:88;16545:4;16542:1;16535:15;16569:4;16566:1;16559:15;16586:180;16634:77;16631:1;16624:88;16731:4;16728:1;16721:15;16755:4;16752:1;16745:15;16772:233;16811:3;16834:24;16852:5;16834:24;:::i;:::-;16825:33;;16880:66;16873:5;16870:77;16867:103;;;16950:18;;:::i;:::-;16867:103;16997:1;16990:5;16986:13;16979:20;;16772:233;;;:::o;17011:225::-;17151:34;17147:1;17139:6;17135:14;17128:58;17220:8;17215:2;17207:6;17203:15;17196:33;17011:225;:::o;17242:366::-;17384:3;17405:67;17469:2;17464:3;17405:67;:::i;:::-;17398:74;;17481:93;17570:3;17481:93;:::i;:::-;17599:2;17594:3;17590:12;17583:19;;17242:366;;;:::o;17614:419::-;17780:4;17818:2;17807:9;17803:18;17795:26;;17867:9;17861:4;17857:20;17853:1;17842:9;17838:17;17831:47;17895:131;18021:4;17895:131;:::i;:::-;17887:139;;17614:419;;;:::o;18039:223::-;18179:34;18175:1;18167:6;18163:14;18156:58;18248:6;18243:2;18235:6;18231:15;18224:31;18039:223;:::o;18268:366::-;18410:3;18431:67;18495:2;18490:3;18431:67;:::i;:::-;18424:74;;18507:93;18596:3;18507:93;:::i;:::-;18625:2;18620:3;18616:12;18609:19;;18268:366;;;:::o;18640:419::-;18806:4;18844:2;18833:9;18829:18;18821:26;;18893:9;18887:4;18883:20;18879:1;18868:9;18864:17;18857:47;18921:131;19047:4;18921:131;:::i;:::-;18913:139;;18640:419;;;:::o;19065:221::-;19205:34;19201:1;19193:6;19189:14;19182:58;19274:4;19269:2;19261:6;19257:15;19250:29;19065:221;:::o;19292:366::-;19434:3;19455:67;19519:2;19514:3;19455:67;:::i;:::-;19448:74;;19531:93;19620:3;19531:93;:::i;:::-;19649:2;19644:3;19640:12;19633:19;;19292:366;;;:::o;19664:419::-;19830:4;19868:2;19857:9;19853:18;19845:26;;19917:9;19911:4;19907:20;19903:1;19892:9;19888:17;19881:47;19945:131;20071:4;19945:131;:::i;:::-;19937:139;;19664:419;;;:::o;20089:224::-;20229:34;20225:1;20217:6;20213:14;20206:58;20298:7;20293:2;20285:6;20281:15;20274:32;20089:224;:::o;20319:366::-;20461:3;20482:67;20546:2;20541:3;20482:67;:::i;:::-;20475:74;;20558:93;20647:3;20558:93;:::i;:::-;20676:2;20671:3;20667:12;20660:19;;20319:366;;;:::o;20691:419::-;20857:4;20895:2;20884:9;20880:18;20872:26;;20944:9;20938:4;20934:20;20930:1;20919:9;20915:17;20908:47;20972:131;21098:4;20972:131;:::i;:::-;20964:139;;20691:419;;;:::o;21116:222::-;21256:34;21252:1;21244:6;21240:14;21233:58;21325:5;21320:2;21312:6;21308:15;21301:30;21116:222;:::o;21344:366::-;21486:3;21507:67;21571:2;21566:3;21507:67;:::i;:::-;21500:74;;21583:93;21672:3;21583:93;:::i;:::-;21701:2;21696:3;21692:12;21685:19;;21344:366;;;:::o;21716:419::-;21882:4;21920:2;21909:9;21905:18;21897:26;;21969:9;21963:4;21959:20;21955:1;21944:9;21940:17;21933:47;21997:131;22123:4;21997:131;:::i;:::-;21989:139;;21716:419;;;:::o;22141:228::-;22281:34;22277:1;22269:6;22265:14;22258:58;22350:11;22345:2;22337:6;22333:15;22326:36;22141:228;:::o;22375:366::-;22517:3;22538:67;22602:2;22597:3;22538:67;:::i;:::-;22531:74;;22614:93;22703:3;22614:93;:::i;:::-;22732:2;22727:3;22723:12;22716:19;;22375:366;;;:::o;22747:419::-;22913:4;22951:2;22940:9;22936:18;22928:26;;23000:9;22994:4;22990:20;22986:1;22975:9;22971:17;22964:47;23028:131;23154:4;23028:131;:::i;:::-;23020:139;;22747:419;;;:::o;23172:250::-;23312:34;23308:1;23300:6;23296:14;23289:58;23381:33;23376:2;23368:6;23364:15;23357:58;23172:250;:::o;23428:366::-;23570:3;23591:67;23655:2;23650:3;23591:67;:::i;:::-;23584:74;;23667:93;23756:3;23667:93;:::i;:::-;23785:2;23780:3;23776:12;23769:19;;23428:366;;;:::o;23800:419::-;23966:4;24004:2;23993:9;23989:18;23981:26;;24053:9;24047:4;24043:20;24039:1;24028:9;24024:17;24017:47;24081:131;24207:4;24081:131;:::i;:::-;24073:139;;23800:419;;;:::o;24225:178::-;24365:30;24361:1;24353:6;24349:14;24342:54;24225:178;:::o;24409:366::-;24551:3;24572:67;24636:2;24631:3;24572:67;:::i;:::-;24565:74;;24648:93;24737:3;24648:93;:::i;:::-;24766:2;24761:3;24757:12;24750:19;;24409:366;;;:::o;24781:419::-;24947:4;24985:2;24974:9;24970:18;24962:26;;25034:9;25028:4;25024:20;25020:1;25009:9;25005:17;24998:47;25062:131;25188:4;25062:131;:::i;:::-;25054:139;;24781:419;;;:::o;25206:191::-;25246:4;25266:20;25284:1;25266:20;:::i;:::-;25261:25;;25300:20;25318:1;25300:20;:::i;:::-;25295:25;;25339:1;25336;25333:8;25330:34;;;25344:18;;:::i;:::-;25330:34;25389:1;25386;25382:9;25374:17;;25206:191;;;;:::o;25403:229::-;25543:34;25539:1;25531:6;25527:14;25520:58;25612:12;25607:2;25599:6;25595:15;25588:37;25403:229;:::o;25638:366::-;25780:3;25801:67;25865:2;25860:3;25801:67;:::i;:::-;25794:74;;25877:93;25966:3;25877:93;:::i;:::-;25995:2;25990:3;25986:12;25979:19;;25638:366;;;:::o;26010:419::-;26176:4;26214:2;26203:9;26199:18;26191:26;;26263:9;26257:4;26253:20;26249:1;26238:9;26234:17;26227:47;26291:131;26417:4;26291:131;:::i;:::-;26283:139;;26010:419;;;:::o;26435:180::-;26483:77;26480:1;26473:88;26580:4;26577:1;26570:15;26604:4;26601:1;26594:15;26621:143;26678:5;26709:6;26703:13;26694:22;;26725:33;26752:5;26725:33;:::i;:::-;26621:143;;;;:::o;26770:351::-;26840:6;26889:2;26877:9;26868:7;26864:23;26860:32;26857:119;;;26895:79;;:::i;:::-;26857:119;27015:1;27040:64;27096:7;27087:6;27076:9;27072:22;27040:64;:::i;:::-;27030:74;;26986:128;26770:351;;;;:::o;27127:85::-;27172:7;27201:5;27190:16;;27127:85;;;:::o;27218:158::-;27276:9;27309:61;27327:42;27336:32;27362:5;27336:32;:::i;:::-;27327:42;:::i;:::-;27309:61;:::i;:::-;27296:74;;27218:158;;;:::o;27382:147::-;27477:45;27516:5;27477:45;:::i;:::-;27472:3;27465:58;27382:147;;:::o;27535:114::-;27602:6;27636:5;27630:12;27620:22;;27535:114;;;:::o;27655:184::-;27754:11;27788:6;27783:3;27776:19;27828:4;27823:3;27819:14;27804:29;;27655:184;;;;:::o;27845:132::-;27912:4;27935:3;27927:11;;27965:4;27960:3;27956:14;27948:22;;27845:132;;;:::o;27983:108::-;28060:24;28078:5;28060:24;:::i;:::-;28055:3;28048:37;27983:108;;:::o;28097:179::-;28166:10;28187:46;28229:3;28221:6;28187:46;:::i;:::-;28265:4;28260:3;28256:14;28242:28;;28097:179;;;;:::o;28282:113::-;28352:4;28384;28379:3;28375:14;28367:22;;28282:113;;;:::o;28431:732::-;28550:3;28579:54;28627:5;28579:54;:::i;:::-;28649:86;28728:6;28723:3;28649:86;:::i;:::-;28642:93;;28759:56;28809:5;28759:56;:::i;:::-;28838:7;28869:1;28854:284;28879:6;28876:1;28873:13;28854:284;;;28955:6;28949:13;28982:63;29041:3;29026:13;28982:63;:::i;:::-;28975:70;;29068:60;29121:6;29068:60;:::i;:::-;29058:70;;28914:224;28901:1;28898;28894:9;28889:14;;28854:284;;;28858:14;29154:3;29147:10;;28555:608;;;28431:732;;;;:::o;29169:831::-;29432:4;29470:3;29459:9;29455:19;29447:27;;29484:71;29552:1;29541:9;29537:17;29528:6;29484:71;:::i;:::-;29565:80;29641:2;29630:9;29626:18;29617:6;29565:80;:::i;:::-;29692:9;29686:4;29682:20;29677:2;29666:9;29662:18;29655:48;29720:108;29823:4;29814:6;29720:108;:::i;:::-;29712:116;;29838:72;29906:2;29895:9;29891:18;29882:6;29838:72;:::i;:::-;29920:73;29988:3;29977:9;29973:19;29964:6;29920:73;:::i;:::-;29169:831;;;;;;;;:::o;30006:180::-;30054:77;30051:1;30044:88;30151:4;30148:1;30141:15;30175:4;30172:1;30165:15;30192:185;30232:1;30249:20;30267:1;30249:20;:::i;:::-;30244:25;;30283:20;30301:1;30283:20;:::i;:::-;30278:25;;30322:1;30312:35;;30327:18;;:::i;:::-;30312:35;30369:1;30366;30362:9;30357:14;;30192:185;;;;:::o;30383:305::-;30423:3;30442:20;30460:1;30442:20;:::i;:::-;30437:25;;30476:20;30494:1;30476:20;:::i;:::-;30471:25;;30630:1;30562:66;30558:74;30555:1;30552:81;30549:107;;;30636:18;;:::i;:::-;30549:107;30680:1;30677;30673:9;30666:16;;30383:305;;;;:::o;30694:177::-;30834:29;30830:1;30822:6;30818:14;30811:53;30694:177;:::o;30877:366::-;31019:3;31040:67;31104:2;31099:3;31040:67;:::i;:::-;31033:74;;31116:93;31205:3;31116:93;:::i;:::-;31234:2;31229:3;31225:12;31218:19;;30877:366;;;:::o;31249:419::-;31415:4;31453:2;31442:9;31438:18;31430:26;;31502:9;31496:4;31492:20;31488:1;31477:9;31473:17;31466:47;31530:131;31656:4;31530:131;:::i;:::-;31522:139;;31249:419;;;:::o;31674:348::-;31714:7;31737:20;31755:1;31737:20;:::i;:::-;31732:25;;31771:20;31789:1;31771:20;:::i;:::-;31766:25;;31959:1;31891:66;31887:74;31884:1;31881:81;31876:1;31869:9;31862:17;31858:105;31855:131;;;31966:18;;:::i;:::-;31855:131;32014:1;32011;32007:9;31996:20;;31674:348;;;;:::o;32028:220::-;32168:34;32164:1;32156:6;32152:14;32145:58;32237:3;32232:2;32224:6;32220:15;32213:28;32028:220;:::o;32254:366::-;32396:3;32417:67;32481:2;32476:3;32417:67;:::i;:::-;32410:74;;32493:93;32582:3;32493:93;:::i;:::-;32611:2;32606:3;32602:12;32595:19;;32254:366;;;:::o;32626:419::-;32792:4;32830:2;32819:9;32815:18;32807:26;;32879:9;32873:4;32869:20;32865:1;32854:9;32850:17;32843:47;32907:131;33033:4;32907:131;:::i;:::-;32899:139;;32626:419;;;:::o

Swarm Source

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