ETH Price: $3,418.25 (+0.39%)
Gas: 8 Gwei

Token

DJOKOVIC INU (DJOKOVICINU)
 

Overview

Max Total Supply

1,000,000 DJOKOVICINU

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
maneko.eth
Balance
23,093.190215537 DJOKOVICINU

Value
$0.00
0xe619d091233580cc171e4afdad94d98c16fd5a0c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DJOKOVICINU

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-10
*/

/**

🎾DJOKOVIC INU🎾

Token dedicated to the Wimbledon Winner🇷🇸

First Djokvic trend token🔥

0% tax buy/sell🚀

Experienced dev with big MC projects

Fuck Kyrgios

https://t.me/djokovicInu

*/



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract DJOKOVICINU is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "DJOKOVIC INU";
    string private constant _symbol = "DJOKOVICINU";
    uint8 private constant _decimals = 9;

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 1000000 * 10**9;
    uint256 public _maxWalletSize = 25000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

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

        if (from != owner() && to != owner()) {

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

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

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

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

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

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

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

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

        }

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

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

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

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

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

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

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

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

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

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

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

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

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _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);
    }

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b91906200073b565b6000196200002a9190620007a2565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f55730bd8f3edfaa749628f55aecf6951222b9240577d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730bd8f3edfaa749628f55aecf6951222b9240577d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066038d7ea4c680006016556516bcc41e90006017556509184e72a0006018553480156200016457600080fd5b50600062000177620006d160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022c620006d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030b57600080fd5b505afa15801562000320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000346919062000847565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a957600080fd5b505afa158015620003be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e4919062000847565b6040518363ffffffff1660e01b8152600401620004039291906200088a565b602060405180830381600087803b1580156200041e57600080fd5b505af115801562000433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000459919062000847565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004af620006d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065c620006d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620006c29190620008c8565b60405180910390a350620008e5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007488262000702565b9150620007558362000702565b9250826200076857620007676200070c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007af8262000702565b9150620007bc8362000702565b925082821015620007d257620007d162000773565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080f82620007e2565b9050919050565b620008218162000802565b81146200082d57600080fd5b50565b600081519050620008418162000816565b92915050565b60006020828403121562000860576200085f620007dd565b5b6000620008708482850162000830565b91505092915050565b620008848162000802565b82525050565b6000604082019050620008a1600083018562000879565b620008b0602083018462000879565b9392505050565b620008c28162000702565b82525050565b6000602082019050620008df6000830184620008b7565b92915050565b613bb780620008f56000396000f3fe6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105f4578063dd62ed3e1461061d578063ea1644d51461065a578063f2fde38b14610683576101c1565b8063a9059cbb14610563578063bfd79284146105a0578063c3c8cd80146105dd576101c1565b80638f70ccf7116100c65780638f70ccf7146104bb5780638f9a55c0146104e457806395d89b411461050f57806398a5c3151461053a576101c1565b80637d1db4a5146104285780637f2feddc146104535780638da5cb5b14610490576101c1565b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f8146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612baa565b6106ac565b005b3480156101fb57600080fd5b506102046107d6565b6040516102119190612c7b565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612cd3565b610813565b60405161024e9190612d2e565b60405180910390f35b34801561026357600080fd5b5061026c610831565b6040516102799190612da8565b60405180910390f35b34801561028e57600080fd5b50610297610857565b6040516102a49190612dd2565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612ded565b610866565b6040516102e19190612d2e565b60405180910390f35b3480156102f657600080fd5b506102ff61093f565b60405161030c9190612dd2565b60405180910390f35b34801561032157600080fd5b5061032a610945565b6040516103379190612e5c565b60405180910390f35b34801561034c57600080fd5b5061035561094e565b6040516103629190612e86565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612ea1565b610974565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612efa565b610a64565b005b3480156103c957600080fd5b506103d2610b16565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612ea1565b610be7565b6040516104089190612dd2565b60405180910390f35b34801561041d57600080fd5b50610426610c38565b005b34801561043457600080fd5b5061043d610d8b565b60405161044a9190612dd2565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612ea1565b610d91565b6040516104879190612dd2565b60405180910390f35b34801561049c57600080fd5b506104a5610da9565b6040516104b29190612e86565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190612efa565b610dd2565b005b3480156104f057600080fd5b506104f9610e84565b6040516105069190612dd2565b60405180910390f35b34801561051b57600080fd5b50610524610e8a565b6040516105319190612c7b565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190612f27565b610ec7565b005b34801561056f57600080fd5b5061058a60048036038101906105859190612cd3565b610f66565b6040516105979190612d2e565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190612ea1565b610f84565b6040516105d49190612d2e565b60405180910390f35b3480156105e957600080fd5b506105f2610fa4565b005b34801561060057600080fd5b5061061b60048036038101906106169190612faf565b61107d565b005b34801561062957600080fd5b50610644600480360381019061063f919061300f565b6111b7565b6040516106519190612dd2565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190612f27565b61123e565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190612ea1565b6112dd565b005b6106b461149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107389061309b565b60405180910390fd5b60005b81518110156107d257600160106000848481518110610766576107656130bb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ca90613119565b915050610744565b5050565b60606040518060400160405280600c81526020017f444a4f4b4f56494320494e550000000000000000000000000000000000000000815250905090565b600061082761082061149f565b84846114a7565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6000610873848484611672565b6109348461087f61149f565b61092f85604051806060016040528060288152602001613b5a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108e561149f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef79092919063ffffffff16565b6114a7565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61097c61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a009061309b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a6c61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af09061309b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b5761149f565b73ffffffffffffffffffffffffffffffffffffffff161480610bcd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb561149f565b73ffffffffffffffffffffffffffffffffffffffff16145b610bd657600080fd5b6000479050610be481611f5b565b50565b6000610c31600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fc7565b9050919050565b610c4061149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc49061309b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dda61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061309b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600b81526020017f444a4f4b4f564943494e55000000000000000000000000000000000000000000815250905090565b610ecf61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f539061309b565b60405180910390fd5b8060188190555050565b6000610f7a610f7361149f565b8484611672565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe561149f565b73ffffffffffffffffffffffffffffffffffffffff16148061105b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104361149f565b73ffffffffffffffffffffffffffffffffffffffff16145b61106457600080fd5b600061106f30610be7565b905061107a81612035565b50565b61108561149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111099061309b565b60405180910390fd5b60005b838390508110156111b1578160056000868685818110611138576111376130bb565b5b905060200201602081019061114d9190612ea1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111a990613119565b915050611115565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61124661149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca9061309b565b60405180910390fd5b8060178190555050565b6112e561149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061309b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d9906131d4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90613266565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e906132f8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116659190612dd2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d99061338a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117499061341c565b60405180910390fd5b60008111611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c906134ae565b60405180910390fd5b61179d610da9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561180b57506117db610da9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf657601560149054906101000a900460ff1661189a5761182c610da9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613540565b60405180910390fd5b5b6016548111156118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d6906135ac565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119835750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b99061363e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a6f5760175481611a2484610be7565b611a2e919061365e565b10611a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6590613726565b60405180910390fd5b5b6000611a7a30610be7565b9050600060185482101590506016548210611a955760165491505b808015611aad575060158054906101000a900460ff16155b8015611b075750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b1f5750601560169054906101000a900460ff165b8015611b755750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bcb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bf357611bd982612035565b60004790506000811115611bf157611bf047611f5b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c9d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d505750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d4f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d5e5760009050611ee5565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e095750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2157600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ecc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee457600a54600c81905550600b54600d819055505b5b611ef1848484846122bb565b50505050565b6000838311158290611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369190612c7b565b60405180910390fd5b5060008385611f4e9190613746565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fc3573d6000803e3d6000fd5b5050565b600060065482111561200e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612005906137ec565b60405180910390fd5b60006120186122e8565b905061202d818461231390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561206c5761206b612a09565b5b60405190808252806020026020018201604052801561209a5781602001602082028036833780820191505090505b50905030816000815181106120b2576120b16130bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215457600080fd5b505afa158015612168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218c9190613821565b816001815181106121a05761219f6130bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114a7565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161226b959493929190613947565b600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806122c9576122c861235d565b5b6122d48484846123a0565b806122e2576122e161256b565b5b50505050565b60008060006122f561257f565b9150915061230c818361231390919063ffffffff16565b9250505090565b600061235583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125db565b905092915050565b6000600c5414801561237157506000600d54145b1561237b5761239e565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806123b28761263e565b95509550955095509550955061241086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126a690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f18161274e565b6124fb848361280b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125589190612dd2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506125b166038d7ea4c6800060065461231390919063ffffffff16565b8210156125ce5760065466038d7ea4c680009350935050506125d7565b81819350935050505b9091565b60008083118290612622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126199190612c7b565b60405180910390fd5b506000838561263191906139d0565b9050809150509392505050565b600080600080600080600080600061265b8a600c54600d54612845565b925092509250600061266b6122e8565b9050600080600061267e8e8787876128db565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef7565b905092915050565b60008082846126ff919061365e565b905083811015612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b90613a4d565b60405180910390fd5b8091505092915050565b60006127586122e8565b9050600061276f828461296490919063ffffffff16565b90506127c381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612820826006546126a690919063ffffffff16565b60068190555061283b816007546126f090919063ffffffff16565b6007819055505050565b6000806000806128716064612863888a61296490919063ffffffff16565b61231390919063ffffffff16565b9050600061289b606461288d888b61296490919063ffffffff16565b61231390919063ffffffff16565b905060006128c4826128b6858c6126a690919063ffffffff16565b6126a690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128f4858961296490919063ffffffff16565b9050600061290b868961296490919063ffffffff16565b90506000612922878961296490919063ffffffff16565b9050600061294b8261293d85876126a690919063ffffffff16565b6126a690919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561297757600090506129d9565b600082846129859190613a6d565b905082848261299491906139d0565b146129d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cb90613b39565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a41826129f8565b810181811067ffffffffffffffff82111715612a6057612a5f612a09565b5b80604052505050565b6000612a736129df565b9050612a7f8282612a38565b919050565b600067ffffffffffffffff821115612a9f57612a9e612a09565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ae082612ab5565b9050919050565b612af081612ad5565b8114612afb57600080fd5b50565b600081359050612b0d81612ae7565b92915050565b6000612b26612b2184612a84565b612a69565b90508083825260208201905060208402830185811115612b4957612b48612ab0565b5b835b81811015612b725780612b5e8882612afe565b845260208401935050602081019050612b4b565b5050509392505050565b600082601f830112612b9157612b906129f3565b5b8135612ba1848260208601612b13565b91505092915050565b600060208284031215612bc057612bbf6129e9565b5b600082013567ffffffffffffffff811115612bde57612bdd6129ee565b5b612bea84828501612b7c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c2d578082015181840152602081019050612c12565b83811115612c3c576000848401525b50505050565b6000612c4d82612bf3565b612c578185612bfe565b9350612c67818560208601612c0f565b612c70816129f8565b840191505092915050565b60006020820190508181036000830152612c958184612c42565b905092915050565b6000819050919050565b612cb081612c9d565b8114612cbb57600080fd5b50565b600081359050612ccd81612ca7565b92915050565b60008060408385031215612cea57612ce96129e9565b5b6000612cf885828601612afe565b9250506020612d0985828601612cbe565b9150509250929050565b60008115159050919050565b612d2881612d13565b82525050565b6000602082019050612d436000830184612d1f565b92915050565b6000819050919050565b6000612d6e612d69612d6484612ab5565b612d49565b612ab5565b9050919050565b6000612d8082612d53565b9050919050565b6000612d9282612d75565b9050919050565b612da281612d87565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b612dcc81612c9d565b82525050565b6000602082019050612de76000830184612dc3565b92915050565b600080600060608486031215612e0657612e056129e9565b5b6000612e1486828701612afe565b9350506020612e2586828701612afe565b9250506040612e3686828701612cbe565b9150509250925092565b600060ff82169050919050565b612e5681612e40565b82525050565b6000602082019050612e716000830184612e4d565b92915050565b612e8081612ad5565b82525050565b6000602082019050612e9b6000830184612e77565b92915050565b600060208284031215612eb757612eb66129e9565b5b6000612ec584828501612afe565b91505092915050565b612ed781612d13565b8114612ee257600080fd5b50565b600081359050612ef481612ece565b92915050565b600060208284031215612f1057612f0f6129e9565b5b6000612f1e84828501612ee5565b91505092915050565b600060208284031215612f3d57612f3c6129e9565b5b6000612f4b84828501612cbe565b91505092915050565b600080fd5b60008083601f840112612f6f57612f6e6129f3565b5b8235905067ffffffffffffffff811115612f8c57612f8b612f54565b5b602083019150836020820283011115612fa857612fa7612ab0565b5b9250929050565b600080600060408486031215612fc857612fc76129e9565b5b600084013567ffffffffffffffff811115612fe657612fe56129ee565b5b612ff286828701612f59565b9350935050602061300586828701612ee5565b9150509250925092565b60008060408385031215613026576130256129e9565b5b600061303485828601612afe565b925050602061304585828601612afe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613085602083612bfe565b91506130908261304f565b602082019050919050565b600060208201905081810360008301526130b481613078565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312482612c9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613157576131566130ea565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131be602683612bfe565b91506131c982613162565b604082019050919050565b600060208201905081810360008301526131ed816131b1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613250602483612bfe565b915061325b826131f4565b604082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132e2602283612bfe565b91506132ed82613286565b604082019050919050565b60006020820190508181036000830152613311816132d5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613374602583612bfe565b915061337f82613318565b604082019050919050565b600060208201905081810360008301526133a381613367565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613406602383612bfe565b9150613411826133aa565b604082019050919050565b60006020820190508181036000830152613435816133f9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613498602983612bfe565b91506134a38261343c565b604082019050919050565b600060208201905081810360008301526134c78161348b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061352a603f83612bfe565b9150613535826134ce565b604082019050919050565b600060208201905081810360008301526135598161351d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613596601c83612bfe565b91506135a182613560565b602082019050919050565b600060208201905081810360008301526135c581613589565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613628602383612bfe565b9150613633826135cc565b604082019050919050565b600060208201905081810360008301526136578161361b565b9050919050565b600061366982612c9d565b915061367483612c9d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136a9576136a86130ea565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613710602383612bfe565b915061371b826136b4565b604082019050919050565b6000602082019050818103600083015261373f81613703565b9050919050565b600061375182612c9d565b915061375c83612c9d565b92508282101561376f5761376e6130ea565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006137d6602a83612bfe565b91506137e18261377a565b604082019050919050565b60006020820190508181036000830152613805816137c9565b9050919050565b60008151905061381b81612ae7565b92915050565b600060208284031215613837576138366129e9565b5b60006138458482850161380c565b91505092915050565b6000819050919050565b600061387361386e6138698461384e565b612d49565b612c9d565b9050919050565b61388381613858565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138be81612ad5565b82525050565b60006138d083836138b5565b60208301905092915050565b6000602082019050919050565b60006138f482613889565b6138fe8185613894565b9350613909836138a5565b8060005b8381101561393a57815161392188826138c4565b975061392c836138dc565b92505060018101905061390d565b5085935050505092915050565b600060a08201905061395c6000830188612dc3565b613969602083018761387a565b818103604083015261397b81866138e9565b905061398a6060830185612e77565b6139976080830184612dc3565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139db82612c9d565b91506139e683612c9d565b9250826139f6576139f56139a1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a37601b83612bfe565b9150613a4282613a01565b602082019050919050565b60006020820190508181036000830152613a6681613a2a565b9050919050565b6000613a7882612c9d565b9150613a8383612c9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613abc57613abb6130ea565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b23602183612bfe565b9150613b2e82613ac7565b604082019050919050565b60006020820190508181036000830152613b5281613b16565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220322d768a8858bd3a2e6c7e214bc4d20806fe958f1f3a2eee5f451e3c9d95b4fc64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105f4578063dd62ed3e1461061d578063ea1644d51461065a578063f2fde38b14610683576101c1565b8063a9059cbb14610563578063bfd79284146105a0578063c3c8cd80146105dd576101c1565b80638f70ccf7116100c65780638f70ccf7146104bb5780638f9a55c0146104e457806395d89b411461050f57806398a5c3151461053a576101c1565b80637d1db4a5146104285780637f2feddc146104535780638da5cb5b14610490576101c1565b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f8146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612baa565b6106ac565b005b3480156101fb57600080fd5b506102046107d6565b6040516102119190612c7b565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612cd3565b610813565b60405161024e9190612d2e565b60405180910390f35b34801561026357600080fd5b5061026c610831565b6040516102799190612da8565b60405180910390f35b34801561028e57600080fd5b50610297610857565b6040516102a49190612dd2565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612ded565b610866565b6040516102e19190612d2e565b60405180910390f35b3480156102f657600080fd5b506102ff61093f565b60405161030c9190612dd2565b60405180910390f35b34801561032157600080fd5b5061032a610945565b6040516103379190612e5c565b60405180910390f35b34801561034c57600080fd5b5061035561094e565b6040516103629190612e86565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612ea1565b610974565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612efa565b610a64565b005b3480156103c957600080fd5b506103d2610b16565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612ea1565b610be7565b6040516104089190612dd2565b60405180910390f35b34801561041d57600080fd5b50610426610c38565b005b34801561043457600080fd5b5061043d610d8b565b60405161044a9190612dd2565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612ea1565b610d91565b6040516104879190612dd2565b60405180910390f35b34801561049c57600080fd5b506104a5610da9565b6040516104b29190612e86565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190612efa565b610dd2565b005b3480156104f057600080fd5b506104f9610e84565b6040516105069190612dd2565b60405180910390f35b34801561051b57600080fd5b50610524610e8a565b6040516105319190612c7b565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190612f27565b610ec7565b005b34801561056f57600080fd5b5061058a60048036038101906105859190612cd3565b610f66565b6040516105979190612d2e565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190612ea1565b610f84565b6040516105d49190612d2e565b60405180910390f35b3480156105e957600080fd5b506105f2610fa4565b005b34801561060057600080fd5b5061061b60048036038101906106169190612faf565b61107d565b005b34801561062957600080fd5b50610644600480360381019061063f919061300f565b6111b7565b6040516106519190612dd2565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190612f27565b61123e565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190612ea1565b6112dd565b005b6106b461149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107389061309b565b60405180910390fd5b60005b81518110156107d257600160106000848481518110610766576107656130bb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ca90613119565b915050610744565b5050565b60606040518060400160405280600c81526020017f444a4f4b4f56494320494e550000000000000000000000000000000000000000815250905090565b600061082761082061149f565b84846114a7565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6000610873848484611672565b6109348461087f61149f565b61092f85604051806060016040528060288152602001613b5a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108e561149f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef79092919063ffffffff16565b6114a7565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61097c61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a009061309b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a6c61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af09061309b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b5761149f565b73ffffffffffffffffffffffffffffffffffffffff161480610bcd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb561149f565b73ffffffffffffffffffffffffffffffffffffffff16145b610bd657600080fd5b6000479050610be481611f5b565b50565b6000610c31600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fc7565b9050919050565b610c4061149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc49061309b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dda61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e9061309b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600b81526020017f444a4f4b4f564943494e55000000000000000000000000000000000000000000815250905090565b610ecf61149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f539061309b565b60405180910390fd5b8060188190555050565b6000610f7a610f7361149f565b8484611672565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe561149f565b73ffffffffffffffffffffffffffffffffffffffff16148061105b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104361149f565b73ffffffffffffffffffffffffffffffffffffffff16145b61106457600080fd5b600061106f30610be7565b905061107a81612035565b50565b61108561149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111099061309b565b60405180910390fd5b60005b838390508110156111b1578160056000868685818110611138576111376130bb565b5b905060200201602081019061114d9190612ea1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111a990613119565b915050611115565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61124661149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca9061309b565b60405180910390fd5b8060178190555050565b6112e561149f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061309b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d9906131d4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90613266565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e906132f8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116659190612dd2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d99061338a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117499061341c565b60405180910390fd5b60008111611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c906134ae565b60405180910390fd5b61179d610da9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561180b57506117db610da9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf657601560149054906101000a900460ff1661189a5761182c610da9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613540565b60405180910390fd5b5b6016548111156118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d6906135ac565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119835750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b99061363e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a6f5760175481611a2484610be7565b611a2e919061365e565b10611a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6590613726565b60405180910390fd5b5b6000611a7a30610be7565b9050600060185482101590506016548210611a955760165491505b808015611aad575060158054906101000a900460ff16155b8015611b075750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b1f5750601560169054906101000a900460ff165b8015611b755750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bcb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bf357611bd982612035565b60004790506000811115611bf157611bf047611f5b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c9d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d505750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d4f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d5e5760009050611ee5565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e095750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2157600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ecc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee457600a54600c81905550600b54600d819055505b5b611ef1848484846122bb565b50505050565b6000838311158290611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369190612c7b565b60405180910390fd5b5060008385611f4e9190613746565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fc3573d6000803e3d6000fd5b5050565b600060065482111561200e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612005906137ec565b60405180910390fd5b60006120186122e8565b905061202d818461231390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561206c5761206b612a09565b5b60405190808252806020026020018201604052801561209a5781602001602082028036833780820191505090505b50905030816000815181106120b2576120b16130bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215457600080fd5b505afa158015612168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218c9190613821565b816001815181106121a05761219f6130bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114a7565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161226b959493929190613947565b600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806122c9576122c861235d565b5b6122d48484846123a0565b806122e2576122e161256b565b5b50505050565b60008060006122f561257f565b9150915061230c818361231390919063ffffffff16565b9250505090565b600061235583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125db565b905092915050565b6000600c5414801561237157506000600d54145b1561237b5761239e565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806123b28761263e565b95509550955095509550955061241086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126a690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f18161274e565b6124fb848361280b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125589190612dd2565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506125b166038d7ea4c6800060065461231390919063ffffffff16565b8210156125ce5760065466038d7ea4c680009350935050506125d7565b81819350935050505b9091565b60008083118290612622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126199190612c7b565b60405180910390fd5b506000838561263191906139d0565b9050809150509392505050565b600080600080600080600080600061265b8a600c54600d54612845565b925092509250600061266b6122e8565b9050600080600061267e8e8787876128db565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef7565b905092915050565b60008082846126ff919061365e565b905083811015612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b90613a4d565b60405180910390fd5b8091505092915050565b60006127586122e8565b9050600061276f828461296490919063ffffffff16565b90506127c381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612820826006546126a690919063ffffffff16565b60068190555061283b816007546126f090919063ffffffff16565b6007819055505050565b6000806000806128716064612863888a61296490919063ffffffff16565b61231390919063ffffffff16565b9050600061289b606461288d888b61296490919063ffffffff16565b61231390919063ffffffff16565b905060006128c4826128b6858c6126a690919063ffffffff16565b6126a690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128f4858961296490919063ffffffff16565b9050600061290b868961296490919063ffffffff16565b90506000612922878961296490919063ffffffff16565b9050600061294b8261293d85876126a690919063ffffffff16565b6126a690919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561297757600090506129d9565b600082846129859190613a6d565b905082848261299491906139d0565b146129d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cb90613b39565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a41826129f8565b810181811067ffffffffffffffff82111715612a6057612a5f612a09565b5b80604052505050565b6000612a736129df565b9050612a7f8282612a38565b919050565b600067ffffffffffffffff821115612a9f57612a9e612a09565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ae082612ab5565b9050919050565b612af081612ad5565b8114612afb57600080fd5b50565b600081359050612b0d81612ae7565b92915050565b6000612b26612b2184612a84565b612a69565b90508083825260208201905060208402830185811115612b4957612b48612ab0565b5b835b81811015612b725780612b5e8882612afe565b845260208401935050602081019050612b4b565b5050509392505050565b600082601f830112612b9157612b906129f3565b5b8135612ba1848260208601612b13565b91505092915050565b600060208284031215612bc057612bbf6129e9565b5b600082013567ffffffffffffffff811115612bde57612bdd6129ee565b5b612bea84828501612b7c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c2d578082015181840152602081019050612c12565b83811115612c3c576000848401525b50505050565b6000612c4d82612bf3565b612c578185612bfe565b9350612c67818560208601612c0f565b612c70816129f8565b840191505092915050565b60006020820190508181036000830152612c958184612c42565b905092915050565b6000819050919050565b612cb081612c9d565b8114612cbb57600080fd5b50565b600081359050612ccd81612ca7565b92915050565b60008060408385031215612cea57612ce96129e9565b5b6000612cf885828601612afe565b9250506020612d0985828601612cbe565b9150509250929050565b60008115159050919050565b612d2881612d13565b82525050565b6000602082019050612d436000830184612d1f565b92915050565b6000819050919050565b6000612d6e612d69612d6484612ab5565b612d49565b612ab5565b9050919050565b6000612d8082612d53565b9050919050565b6000612d9282612d75565b9050919050565b612da281612d87565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b612dcc81612c9d565b82525050565b6000602082019050612de76000830184612dc3565b92915050565b600080600060608486031215612e0657612e056129e9565b5b6000612e1486828701612afe565b9350506020612e2586828701612afe565b9250506040612e3686828701612cbe565b9150509250925092565b600060ff82169050919050565b612e5681612e40565b82525050565b6000602082019050612e716000830184612e4d565b92915050565b612e8081612ad5565b82525050565b6000602082019050612e9b6000830184612e77565b92915050565b600060208284031215612eb757612eb66129e9565b5b6000612ec584828501612afe565b91505092915050565b612ed781612d13565b8114612ee257600080fd5b50565b600081359050612ef481612ece565b92915050565b600060208284031215612f1057612f0f6129e9565b5b6000612f1e84828501612ee5565b91505092915050565b600060208284031215612f3d57612f3c6129e9565b5b6000612f4b84828501612cbe565b91505092915050565b600080fd5b60008083601f840112612f6f57612f6e6129f3565b5b8235905067ffffffffffffffff811115612f8c57612f8b612f54565b5b602083019150836020820283011115612fa857612fa7612ab0565b5b9250929050565b600080600060408486031215612fc857612fc76129e9565b5b600084013567ffffffffffffffff811115612fe657612fe56129ee565b5b612ff286828701612f59565b9350935050602061300586828701612ee5565b9150509250925092565b60008060408385031215613026576130256129e9565b5b600061303485828601612afe565b925050602061304585828601612afe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613085602083612bfe565b91506130908261304f565b602082019050919050565b600060208201905081810360008301526130b481613078565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312482612c9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613157576131566130ea565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131be602683612bfe565b91506131c982613162565b604082019050919050565b600060208201905081810360008301526131ed816131b1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613250602483612bfe565b915061325b826131f4565b604082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132e2602283612bfe565b91506132ed82613286565b604082019050919050565b60006020820190508181036000830152613311816132d5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613374602583612bfe565b915061337f82613318565b604082019050919050565b600060208201905081810360008301526133a381613367565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613406602383612bfe565b9150613411826133aa565b604082019050919050565b60006020820190508181036000830152613435816133f9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613498602983612bfe565b91506134a38261343c565b604082019050919050565b600060208201905081810360008301526134c78161348b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061352a603f83612bfe565b9150613535826134ce565b604082019050919050565b600060208201905081810360008301526135598161351d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613596601c83612bfe565b91506135a182613560565b602082019050919050565b600060208201905081810360008301526135c581613589565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613628602383612bfe565b9150613633826135cc565b604082019050919050565b600060208201905081810360008301526136578161361b565b9050919050565b600061366982612c9d565b915061367483612c9d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136a9576136a86130ea565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613710602383612bfe565b915061371b826136b4565b604082019050919050565b6000602082019050818103600083015261373f81613703565b9050919050565b600061375182612c9d565b915061375c83612c9d565b92508282101561376f5761376e6130ea565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006137d6602a83612bfe565b91506137e18261377a565b604082019050919050565b60006020820190508181036000830152613805816137c9565b9050919050565b60008151905061381b81612ae7565b92915050565b600060208284031215613837576138366129e9565b5b60006138458482850161380c565b91505092915050565b6000819050919050565b600061387361386e6138698461384e565b612d49565b612c9d565b9050919050565b61388381613858565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138be81612ad5565b82525050565b60006138d083836138b5565b60208301905092915050565b6000602082019050919050565b60006138f482613889565b6138fe8185613894565b9350613909836138a5565b8060005b8381101561393a57815161392188826138c4565b975061392c836138dc565b92505060018101905061390d565b5085935050505092915050565b600060a08201905061395c6000830188612dc3565b613969602083018761387a565b818103604083015261397b81866138e9565b905061398a6060830185612e77565b6139976080830184612dc3565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139db82612c9d565b91506139e683612c9d565b9250826139f6576139f56139a1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a37601b83612bfe565b9150613a4282613a01565b602082019050919050565b60006020820190508181036000830152613a6681613a2a565b9050919050565b6000613a7882612c9d565b9150613a8383612c9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613abc57613abb6130ea565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b23602183612bfe565b9150613b2e82613ac7565b604082019050919050565b60006020820190508181036000830152613b5281613b16565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220322d768a8858bd3a2e6c7e214bc4d20806fe958f1f3a2eee5f451e3c9d95b4fc64736f6c63430008090033

Deployed Bytecode Sourcemap

4300:13051:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12970:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6798:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7723:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5652:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7075:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7924:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5700:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13147:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16880:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12727:235;;;;;;;;;;;;;:::i;:::-;;7178:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1787:148;;;;;;;;;;;;;:::i;:::-;;5842:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5394:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1573:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12374:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5894:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6889:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16689:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7324:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5356:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12483:236;;;;;;;;;;;;;:::i;:::-;;17112:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7531:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16989:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1943:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12970:169;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13046:9:::1;13041:91;13065:5;:12;13061:1;:16;13041:91;;;13116:4;13099;:14;13104:5;13110:1;13104:8;;;;;;;;:::i;:::-;;;;;;;;13099:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13079:3;;;;;:::i;:::-;;;;13041:91;;;;12970:169:::0;:::o;6798:83::-;6835:13;6868:5;;;;;;;;;;;;;;;;;6861:12;;6798:83;:::o;7723:193::-;7825:4;7847:39;7856:12;:10;:12::i;:::-;7870:7;7879:6;7847:8;:39::i;:::-;7904:4;7897:11;;7723:193;;;;:::o;5652:41::-;;;;;;;;;;;;;:::o;7075:95::-;7128:7;4861:15;7148:14;;7075:95;:::o;7924:446::-;8056:4;8073:36;8083:6;8091:9;8102:6;8073:9;:36::i;:::-;8120:220;8143:6;8164:12;:10;:12::i;:::-;8191:138;8247:6;8191:138;;;;;;;;;;;;;;;;;:11;:19;8203:6;8191:19;;;;;;;;;;;;;;;:33;8211:12;:10;:12::i;:::-;8191:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8120:8;:220::i;:::-;8358:4;8351:11;;7924:446;;;;;:::o;5946:50::-;;;;:::o;6984:83::-;7025:5;4535:1;7043:16;;6984:83;:::o;5700:28::-;;;;;;;;;;;;;:::o;13147:92::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13226:5:::1;13211:4;:12;13216:6;13211:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13147:92:::0;:::o;16880:101::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16961:12:::1;16947:11;;:26;;;;;;;;;;;;;;;;;;16880:101:::0;:::o;12727:235::-;12793:19;;;;;;;;;;;12777:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12832:17;;;;;;;;;;;12816:33;;:12;:10;:12::i;:::-;:33;;;12777:72;12769:81;;;;;;12861:26;12890:21;12861:50;;12922:32;12935:18;12922:12;:32::i;:::-;12758:204;12727:235::o;7178:138::-;7244:7;7271:37;7291:7;:16;7299:7;7291:16;;;;;;;;;;;;;;;;7271:19;:37::i;:::-;7264:44;;7178:138;;;:::o;1787:148::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1894:1:::1;1857:40;;1878:6;::::0;::::1;;;;;;;;1857:40;;;;;;;;;;;;1925:1;1908:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1787:148::o:0;5842:45::-;;;;:::o;5394:43::-;;;;;;;;;;;;;;;;;:::o;1573:79::-;1611:7;1638:6;;;;;;;;;;;1631:13;;1573:79;:::o;12374:101::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12455:12:::1;12441:11;;:26;;;;;;;;;;;;;;;;;;12374:101:::0;:::o;5894:45::-;;;;:::o;6889:87::-;6928:13;6961:7;;;;;;;;;;;;;;;;;6954:14;;6889:87;:::o;16689:139::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16802:18:::1;16780:19;:40;;;;16689:139:::0;:::o;7324:199::-;7429:4;7451:42;7461:12;:10;:12::i;:::-;7475:9;7486:6;7451:9;:42::i;:::-;7511:4;7504:11;;7324:199;;;;:::o;5356:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12483:236::-;12549:19;;;;;;;;;;;12533:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12588:17;;;;;;;;;;;12572:33;;:12;:10;:12::i;:::-;:33;;;12533:72;12525:81;;;;;;12617:23;12643:24;12661:4;12643:9;:24::i;:::-;12617:50;;12678:33;12695:15;12678:16;:33::i;:::-;12514:205;12483:236::o;17112:234::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17229:9:::1;17225:114;17248:8;;:15;;17244:1;:19;17225:114;;;17319:8;17285:18;:31;17304:8;;17313:1;17304:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17285:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17265:3;;;;;:::i;:::-;;;;17225:114;;;;17112:234:::0;;;:::o;7531:184::-;7648:7;7680:11;:18;7692:5;7680:18;;;;;;;;;;;;;;;:27;7699:7;7680:27;;;;;;;;;;;;;;;;7673:34;;7531:184;;;;:::o;16989:115::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17083:13:::1;17066:14;:30;;;;16989:115:::0;:::o;1943:244::-;1710:12;:10;:12::i;:::-;1700:22;;:6;;;;;;;;;;:22;;;1692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2052:1:::1;2032:22;;:8;:22;;;;2024:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2142:8;2113:38;;2134:6;::::0;::::1;;;;;;;;2113:38;;;;;;;;;;;;2171:8;2162:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1943:244:::0;:::o;332:98::-;385:7;412:10;405:17;;332:98;:::o;9061:369::-;9205:1;9188:19;;:5;:19;;;;9180:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9286:1;9267:21;;:7;:21;;;;9259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9368:6;9338:11;:18;9350:5;9338:18;;;;;;;;;;;;;;;:27;9357:7;9338:27;;;;;;;;;;;;;;;:36;;;;9406:7;9390:32;;9399:5;9390:32;;;9415:6;9390:32;;;;;;:::i;:::-;;;;;;;;9061:369;;;:::o;9438:2330::-;9576:1;9560:18;;:4;:18;;;;9552:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9653:1;9639:16;;:2;:16;;;;9631:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9723:1;9714:6;:10;9706:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9795:7;:5;:7::i;:::-;9787:15;;:4;:15;;;;:32;;;;;9812:7;:5;:7::i;:::-;9806:13;;:2;:13;;;;9787:32;9783:1259;;;9876:11;;;;;;;;;;;9871:144;;9924:7;:5;:7::i;:::-;9916:15;;:4;:15;;;9908:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9871:144;10049:12;;10039:6;:22;;10031:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10118:4;:10;10123:4;10118:10;;;;;;;;;;;;;;;;;;;;;;;;;10117:11;:24;;;;;10133:4;:8;10138:2;10133:8;;;;;;;;;;;;;;;;;;;;;;;;;10132:9;10117:24;10109:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10207:13;;;;;;;;;;;10201:19;;:2;:19;;;10198:146;;10274:14;;10265:6;10249:13;10259:2;10249:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10241:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10198:146;10360:28;10391:24;10409:4;10391:9;:24::i;:::-;10360:55;;10430:12;10469:19;;10445:20;:43;;10430:58;;10532:12;;10508:20;:36;10505:124;;10601:12;;10578:35;;10505:124;10649:7;:18;;;;;10661:6;;;;;;;;;;10660:7;10649:18;:43;;;;;10679:13;;;;;;;;;;;10671:21;;:4;:21;;;;10649:43;:58;;;;;10696:11;;;;;;;;;;;10649:58;:87;;;;;10712:18;:24;10731:4;10712:24;;;;;;;;;;;;;;;;;;;;;;;;;10711:25;10649:87;:114;;;;;10741:18;:22;10760:2;10741:22;;;;;;;;;;;;;;;;;;;;;;;;;10740:23;10649:114;10645:386;;;10784:38;10801:20;10784:16;:38::i;:::-;10841:26;10870:21;10841:50;;10935:1;10914:18;:22;10910:106;;;10961:35;10974:21;10961:12;:35::i;:::-;10910:106;10765:266;10645:386;9821:1221;;9783:1259;11054:12;11069:4;11054:19;;11118:18;:24;11137:4;11118:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11146:18;:22;11165:2;11146:22;;;;;;;;;;;;;;;;;;;;;;;;;11118:50;11117:102;;;;11182:13;;;;;;;;;;;11174:21;;:4;:21;;;;:44;;;;;11205:13;;;;;;;;;;;11199:19;;:2;:19;;;;11174:44;11117:102;11113:594;;;11246:5;11236:15;;11113:594;;;11329:13;;;;;;;;;;;11321:21;;:4;:21;;;:55;;;;;11360:15;;;;;;;;;;;11346:30;;:2;:30;;;;11321:55;11318:162;;;11409:14;;11397:9;:26;;;;11452:12;;11442:7;:22;;;;11318:162;11539:13;;;;;;;;;;;11533:19;;:2;:19;;;:55;;;;;11572:15;;;;;;;;;;;11556:32;;:4;:32;;;;11533:55;11529:165;;;11621:15;;11609:9;:27;;;;11665:13;;11655:7;:23;;;;11529:165;11113:594;11719:41;11734:4;11740:2;11744:6;11752:7;11719:14;:41::i;:::-;9541:2227;9438:2330;;;:::o;2551:224::-;2671:7;2704:1;2699;:6;;2707:12;2691:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2731:9;2747:1;2743;:5;;;;:::i;:::-;2731:17;;2766:1;2759:8;;;2551:224;;;;;:::o;12267:99::-;12324:17;;;;;;;;;;;:26;;:34;12351:6;12324:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12267:99;:::o;8378:323::-;8473:7;8531;;8520;:18;;8498:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8619:19;8641:10;:8;:10::i;:::-;8619:32;;8669:24;8681:11;8669:7;:11;;:24;;;;:::i;:::-;8662:31;;;8378:323;;;:::o;11776:483::-;6099:4;6090:6;;:13;;;;;;;;;;;;;;;;;;11854:21:::1;11892:1;11878:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11854:40;;11923:4;11905;11910:1;11905:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11949:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11939:4;11944:1;11939:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11982:62;11999:4;12014:15;;;;;;;;;;;12032:11;11982:8;:62::i;:::-;12055:15;;;;;;;;;;;:66;;;12136:11;12162:1;12178:4;12205;12225:15;12055:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11843:416;6135:5:::0;6126:6;;:14;;;;;;;;;;;;;;;;;;11776:483;:::o;13247:282::-;13403:7;13398:28;;13412:14;:12;:14::i;:::-;13398:28;13437:44;13455:6;13463:9;13474:6;13437:17;:44::i;:::-;13497:7;13492:29;;13506:15;:13;:15::i;:::-;13492:29;13247:282;;;;:::o;16208:164::-;16250:7;16271:15;16288;16307:19;:17;:19::i;:::-;16270:56;;;;16344:20;16356:7;16344;:11;;:20;;;;:::i;:::-;16337:27;;;;16208:164;:::o;3037:132::-;3095:7;3122:39;3126:1;3129;3122:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3115:46;;3037:132;;;;:::o;8709:219::-;8769:1;8756:9;;:14;:30;;;;;8785:1;8774:7;;:12;8756:30;8752:43;;;8788:7;;8752:43;8827:9;;8807:17;:29;;;;8865:7;;8847:15;:25;;;;8897:1;8885:9;:13;;;;8919:1;8909:7;:11;;;;8709:219;:::o;13537:610::-;13684:15;13714:23;13752:12;13779:23;13817:12;13844:13;13871:19;13882:7;13871:10;:19::i;:::-;13669:221;;;;;;;;;;;;13919:28;13939:7;13919;:15;13927:6;13919:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13901:7;:15;13909:6;13901:15;;;;;;;;;;;;;;;:46;;;;13979:39;14002:15;13979:7;:18;13987:9;13979:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13958:7;:18;13966:9;13958:18;;;;;;;;;;;;;;;:60;;;;14029:16;14039:5;14029:9;:16::i;:::-;14056:23;14068:4;14074;14056:11;:23::i;:::-;14112:9;14095:44;;14104:6;14095:44;;;14123:15;14095:44;;;;;;:::i;:::-;;;;;;;;13658:489;;;;;;13537:610;;;:::o;8936:117::-;8992:17;;8980:9;:29;;;;9030:15;;9020:7;:25;;;;8936:117::o;16380:257::-;16431:7;16440;16460:15;16478:7;;16460:25;;16496:15;4861;16496:25;;16546:20;4861:15;16546:7;;:11;;:20;;;;:::i;:::-;16536:7;:30;16532:61;;;16576:7;;4861:15;16568:25;;;;;;;;16532:61;16612:7;16621;16604:25;;;;;;16380:257;;;:::o;3177:223::-;3297:7;3329:1;3325;:5;3332:12;3317:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3356:9;3372:1;3368;:5;;;;:::i;:::-;3356:17;;3391:1;3384:8;;;3177:223;;;;;:::o;14566:615::-;14666:7;14688;14710;14732;14754;14776;14812:23;14837:12;14851:13;14881:40;14893:7;14902:9;;14913:7;;14881:11;:40::i;:::-;14811:110;;;;;;14932:19;14954:10;:8;:10::i;:::-;14932:32;;14976:15;14993:23;15018:12;15047:46;15059:7;15068:4;15074:5;15081:11;15047;:46::i;:::-;14975:118;;;;;;15112:7;15121:15;15138:4;15144:15;15161:4;15167:5;15104:69;;;;;;;;;;;;;;;;;;;14566:615;;;;;;;:::o;2407:136::-;2465:7;2492:43;2496:1;2499;2492:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2485:50;;2407:136;;;;:::o;2220:179::-;2278:7;2298:9;2314:1;2310;:5;;;;:::i;:::-;2298:17;;2339:1;2334;:6;;2326:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2390:1;2383:8;;;2220:179;;;;:::o;14155:211::-;14208:19;14230:10;:8;:10::i;:::-;14208:32;;14251:13;14267:22;14277:11;14267:5;:9;;:22;;;;:::i;:::-;14251:38;;14325:33;14352:5;14325:7;:22;14341:4;14325:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14300:7;:22;14316:4;14300:22;;;;;;;;;;;;;;;:58;;;;14197:169;;14155:211;:::o;14374:147::-;14452:17;14464:4;14452:7;;:11;;:17;;;;:::i;:::-;14442:7;:27;;;;14493:20;14508:4;14493:10;;:14;;:20;;;;:::i;:::-;14480:10;:33;;;;14374:147;;:::o;15189:469::-;15358:7;15380;15402;15437:12;15452:30;15478:3;15452:21;15464:8;15452:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15437:45;;15493:13;15509:28;15533:3;15509:19;15521:6;15509:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15493:44;;15548:23;15574:28;15596:5;15574:17;15586:4;15574:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15548:54;;15621:15;15638:4;15644:5;15613:37;;;;;;;;;15189:469;;;;;;;:::o;15666:534::-;15860:7;15882;15904;15939:15;15957:24;15969:11;15957:7;:11;;:24;;;;:::i;:::-;15939:42;;15992:12;16007:21;16016:11;16007:4;:8;;:21;;;;:::i;:::-;15992:36;;16039:13;16055:22;16065:11;16055:5;:9;;:22;;;;:::i;:::-;16039:38;;16088:23;16114:28;16136:5;16114:17;16126:4;16114:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16088:54;;16161:7;16170:15;16187:4;16153:39;;;;;;;;;;15666:534;;;;;;;;:::o;2783:246::-;2841:7;2870:1;2865;:6;2861:47;;;2895:1;2888:8;;;;2861:47;2918:9;2934:1;2930;:5;;;;:::i;:::-;2918:17;;2963:1;2958;2954;:5;;;;:::i;:::-;:10;2946:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3020:1;3013:8;;;2783:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::o;10328:117::-;10437:1;10434;10427:12;10468:568;10541:8;10551:6;10601:3;10594:4;10586:6;10582:17;10578:27;10568:122;;10609:79;;:::i;:::-;10568:122;10722:6;10709:20;10699:30;;10752:18;10744:6;10741:30;10738:117;;;10774:79;;:::i;:::-;10738:117;10888:4;10880:6;10876:17;10864:29;;10942:3;10934:4;10926:6;10922:17;10912:8;10908:32;10905:41;10902:128;;;10949:79;;:::i;:::-;10902:128;10468:568;;;;;:::o;11042:698::-;11134:6;11142;11150;11199:2;11187:9;11178:7;11174:23;11170:32;11167:119;;;11205:79;;:::i;:::-;11167:119;11353:1;11342:9;11338:17;11325:31;11383:18;11375:6;11372:30;11369:117;;;11405:79;;:::i;:::-;11369:117;11518:80;11590:7;11581:6;11570:9;11566:22;11518:80;:::i;:::-;11500:98;;;;11296:312;11647:2;11673:50;11715:7;11706:6;11695:9;11691:22;11673:50;:::i;:::-;11663:60;;11618:115;11042:698;;;;;:::o;11746:474::-;11814:6;11822;11871:2;11859:9;11850:7;11846:23;11842:32;11839:119;;;11877:79;;:::i;:::-;11839:119;11997:1;12022:53;12067:7;12058:6;12047:9;12043:22;12022:53;:::i;:::-;12012:63;;11968:117;12124:2;12150:53;12195:7;12186:6;12175:9;12171:22;12150:53;:::i;:::-;12140:63;;12095:118;11746:474;;;;;:::o;12226:182::-;12366:34;12362:1;12354:6;12350:14;12343:58;12226:182;:::o;12414:366::-;12556:3;12577:67;12641:2;12636:3;12577:67;:::i;:::-;12570:74;;12653:93;12742:3;12653:93;:::i;:::-;12771:2;12766:3;12762:12;12755:19;;12414:366;;;:::o;12786:419::-;12952:4;12990:2;12979:9;12975:18;12967:26;;13039:9;13033:4;13029:20;13025:1;13014:9;13010:17;13003:47;13067:131;13193:4;13067:131;:::i;:::-;13059:139;;12786:419;;;:::o;13211:180::-;13259:77;13256:1;13249:88;13356:4;13353:1;13346:15;13380:4;13377:1;13370:15;13397:180;13445:77;13442:1;13435:88;13542:4;13539:1;13532:15;13566:4;13563:1;13556:15;13583:233;13622:3;13645:24;13663:5;13645:24;:::i;:::-;13636:33;;13691:66;13684:5;13681:77;13678:103;;;13761:18;;:::i;:::-;13678:103;13808:1;13801:5;13797:13;13790:20;;13583:233;;;:::o;13822:225::-;13962:34;13958:1;13950:6;13946:14;13939:58;14031:8;14026:2;14018:6;14014:15;14007:33;13822:225;:::o;14053:366::-;14195:3;14216:67;14280:2;14275:3;14216:67;:::i;:::-;14209:74;;14292:93;14381:3;14292:93;:::i;:::-;14410:2;14405:3;14401:12;14394:19;;14053:366;;;:::o;14425:419::-;14591:4;14629:2;14618:9;14614:18;14606:26;;14678:9;14672:4;14668:20;14664:1;14653:9;14649:17;14642:47;14706:131;14832:4;14706:131;:::i;:::-;14698:139;;14425:419;;;:::o;14850:223::-;14990:34;14986:1;14978:6;14974:14;14967:58;15059:6;15054:2;15046:6;15042:15;15035:31;14850:223;:::o;15079:366::-;15221:3;15242:67;15306:2;15301:3;15242:67;:::i;:::-;15235:74;;15318:93;15407:3;15318:93;:::i;:::-;15436:2;15431:3;15427:12;15420:19;;15079:366;;;:::o;15451:419::-;15617:4;15655:2;15644:9;15640:18;15632:26;;15704:9;15698:4;15694:20;15690:1;15679:9;15675:17;15668:47;15732:131;15858:4;15732:131;:::i;:::-;15724:139;;15451:419;;;:::o;15876:221::-;16016:34;16012:1;16004:6;16000:14;15993:58;16085:4;16080:2;16072:6;16068:15;16061:29;15876:221;:::o;16103:366::-;16245:3;16266:67;16330:2;16325:3;16266:67;:::i;:::-;16259:74;;16342:93;16431:3;16342:93;:::i;:::-;16460:2;16455:3;16451:12;16444:19;;16103:366;;;:::o;16475:419::-;16641:4;16679:2;16668:9;16664:18;16656:26;;16728:9;16722:4;16718:20;16714:1;16703:9;16699:17;16692:47;16756:131;16882:4;16756:131;:::i;:::-;16748:139;;16475:419;;;:::o;16900:224::-;17040:34;17036:1;17028:6;17024:14;17017:58;17109:7;17104:2;17096:6;17092:15;17085:32;16900:224;:::o;17130:366::-;17272:3;17293:67;17357:2;17352:3;17293:67;:::i;:::-;17286:74;;17369:93;17458:3;17369:93;:::i;:::-;17487:2;17482:3;17478:12;17471:19;;17130:366;;;:::o;17502:419::-;17668:4;17706:2;17695:9;17691:18;17683:26;;17755:9;17749:4;17745:20;17741:1;17730:9;17726:17;17719:47;17783:131;17909:4;17783:131;:::i;:::-;17775:139;;17502:419;;;:::o;17927:222::-;18067:34;18063:1;18055:6;18051:14;18044:58;18136:5;18131:2;18123:6;18119:15;18112:30;17927:222;:::o;18155:366::-;18297:3;18318:67;18382:2;18377:3;18318:67;:::i;:::-;18311:74;;18394:93;18483:3;18394:93;:::i;:::-;18512:2;18507:3;18503:12;18496:19;;18155:366;;;:::o;18527:419::-;18693:4;18731:2;18720:9;18716:18;18708:26;;18780:9;18774:4;18770:20;18766:1;18755:9;18751:17;18744:47;18808:131;18934:4;18808:131;:::i;:::-;18800:139;;18527:419;;;:::o;18952:228::-;19092:34;19088:1;19080:6;19076:14;19069:58;19161:11;19156:2;19148:6;19144:15;19137:36;18952:228;:::o;19186:366::-;19328:3;19349:67;19413:2;19408:3;19349:67;:::i;:::-;19342:74;;19425:93;19514:3;19425:93;:::i;:::-;19543:2;19538:3;19534:12;19527:19;;19186:366;;;:::o;19558:419::-;19724:4;19762:2;19751:9;19747:18;19739:26;;19811:9;19805:4;19801:20;19797:1;19786:9;19782:17;19775:47;19839:131;19965:4;19839:131;:::i;:::-;19831:139;;19558:419;;;:::o;19983:250::-;20123:34;20119:1;20111:6;20107:14;20100:58;20192:33;20187:2;20179:6;20175:15;20168:58;19983:250;:::o;20239:366::-;20381:3;20402:67;20466:2;20461:3;20402:67;:::i;:::-;20395:74;;20478:93;20567:3;20478:93;:::i;:::-;20596:2;20591:3;20587:12;20580:19;;20239:366;;;:::o;20611:419::-;20777:4;20815:2;20804:9;20800:18;20792:26;;20864:9;20858:4;20854:20;20850:1;20839:9;20835:17;20828:47;20892:131;21018:4;20892:131;:::i;:::-;20884:139;;20611:419;;;:::o;21036:178::-;21176:30;21172:1;21164:6;21160:14;21153:54;21036:178;:::o;21220:366::-;21362:3;21383:67;21447:2;21442:3;21383:67;:::i;:::-;21376:74;;21459:93;21548:3;21459:93;:::i;:::-;21577:2;21572:3;21568:12;21561:19;;21220:366;;;:::o;21592:419::-;21758:4;21796:2;21785:9;21781:18;21773:26;;21845:9;21839:4;21835:20;21831:1;21820:9;21816:17;21809:47;21873:131;21999:4;21873:131;:::i;:::-;21865:139;;21592:419;;;:::o;22017:222::-;22157:34;22153:1;22145:6;22141:14;22134:58;22226:5;22221:2;22213:6;22209:15;22202:30;22017:222;:::o;22245:366::-;22387:3;22408:67;22472:2;22467:3;22408:67;:::i;:::-;22401:74;;22484:93;22573:3;22484:93;:::i;:::-;22602:2;22597:3;22593:12;22586:19;;22245:366;;;:::o;22617:419::-;22783:4;22821:2;22810:9;22806:18;22798:26;;22870:9;22864:4;22860:20;22856:1;22845:9;22841:17;22834:47;22898:131;23024:4;22898:131;:::i;:::-;22890:139;;22617:419;;;:::o;23042:305::-;23082:3;23101:20;23119:1;23101:20;:::i;:::-;23096:25;;23135:20;23153:1;23135:20;:::i;:::-;23130:25;;23289:1;23221:66;23217:74;23214:1;23211:81;23208:107;;;23295:18;;:::i;:::-;23208:107;23339:1;23336;23332:9;23325:16;;23042:305;;;;:::o;23353:222::-;23493:34;23489:1;23481:6;23477:14;23470:58;23562:5;23557:2;23549:6;23545:15;23538:30;23353:222;:::o;23581:366::-;23723:3;23744:67;23808:2;23803:3;23744:67;:::i;:::-;23737:74;;23820:93;23909:3;23820:93;:::i;:::-;23938:2;23933:3;23929:12;23922:19;;23581:366;;;:::o;23953:419::-;24119:4;24157:2;24146:9;24142:18;24134:26;;24206:9;24200:4;24196:20;24192:1;24181:9;24177:17;24170:47;24234:131;24360:4;24234:131;:::i;:::-;24226:139;;23953:419;;;:::o;24378:191::-;24418:4;24438:20;24456:1;24438:20;:::i;:::-;24433:25;;24472:20;24490:1;24472:20;:::i;:::-;24467:25;;24511:1;24508;24505:8;24502:34;;;24516:18;;:::i;:::-;24502:34;24561:1;24558;24554:9;24546:17;;24378:191;;;;:::o;24575:229::-;24715:34;24711:1;24703:6;24699:14;24692:58;24784:12;24779:2;24771:6;24767:15;24760:37;24575:229;:::o;24810:366::-;24952:3;24973:67;25037:2;25032:3;24973:67;:::i;:::-;24966:74;;25049:93;25138:3;25049:93;:::i;:::-;25167:2;25162:3;25158:12;25151:19;;24810:366;;;:::o;25182:419::-;25348:4;25386:2;25375:9;25371:18;25363:26;;25435:9;25429:4;25425:20;25421:1;25410:9;25406:17;25399:47;25463:131;25589:4;25463:131;:::i;:::-;25455:139;;25182:419;;;:::o;25607:143::-;25664:5;25695:6;25689:13;25680:22;;25711:33;25738:5;25711:33;:::i;:::-;25607:143;;;;:::o;25756:351::-;25826:6;25875:2;25863:9;25854:7;25850:23;25846:32;25843:119;;;25881:79;;:::i;:::-;25843:119;26001:1;26026:64;26082:7;26073:6;26062:9;26058:22;26026:64;:::i;:::-;26016:74;;25972:128;25756:351;;;;:::o;26113:85::-;26158:7;26187:5;26176:16;;26113:85;;;:::o;26204:158::-;26262:9;26295:61;26313:42;26322:32;26348:5;26322:32;:::i;:::-;26313:42;:::i;:::-;26295:61;:::i;:::-;26282:74;;26204:158;;;:::o;26368:147::-;26463:45;26502:5;26463:45;:::i;:::-;26458:3;26451:58;26368:147;;:::o;26521:114::-;26588:6;26622:5;26616:12;26606:22;;26521:114;;;:::o;26641:184::-;26740:11;26774:6;26769:3;26762:19;26814:4;26809:3;26805:14;26790:29;;26641:184;;;;:::o;26831:132::-;26898:4;26921:3;26913:11;;26951:4;26946:3;26942:14;26934:22;;26831:132;;;:::o;26969:108::-;27046:24;27064:5;27046:24;:::i;:::-;27041:3;27034:37;26969:108;;:::o;27083:179::-;27152:10;27173:46;27215:3;27207:6;27173:46;:::i;:::-;27251:4;27246:3;27242:14;27228:28;;27083:179;;;;:::o;27268:113::-;27338:4;27370;27365:3;27361:14;27353:22;;27268:113;;;:::o;27417:732::-;27536:3;27565:54;27613:5;27565:54;:::i;:::-;27635:86;27714:6;27709:3;27635:86;:::i;:::-;27628:93;;27745:56;27795:5;27745:56;:::i;:::-;27824:7;27855:1;27840:284;27865:6;27862:1;27859:13;27840:284;;;27941:6;27935:13;27968:63;28027:3;28012:13;27968:63;:::i;:::-;27961:70;;28054:60;28107:6;28054:60;:::i;:::-;28044:70;;27900:224;27887:1;27884;27880:9;27875:14;;27840:284;;;27844:14;28140:3;28133:10;;27541:608;;;27417:732;;;;:::o;28155:831::-;28418:4;28456:3;28445:9;28441:19;28433:27;;28470:71;28538:1;28527:9;28523:17;28514:6;28470:71;:::i;:::-;28551:80;28627:2;28616:9;28612:18;28603:6;28551:80;:::i;:::-;28678:9;28672:4;28668:20;28663:2;28652:9;28648:18;28641:48;28706:108;28809:4;28800:6;28706:108;:::i;:::-;28698:116;;28824:72;28892:2;28881:9;28877:18;28868:6;28824:72;:::i;:::-;28906:73;28974:3;28963:9;28959:19;28950:6;28906:73;:::i;:::-;28155:831;;;;;;;;:::o;28992:180::-;29040:77;29037:1;29030:88;29137:4;29134:1;29127:15;29161:4;29158:1;29151:15;29178:185;29218:1;29235:20;29253:1;29235:20;:::i;:::-;29230:25;;29269:20;29287:1;29269:20;:::i;:::-;29264:25;;29308:1;29298:35;;29313:18;;:::i;:::-;29298:35;29355:1;29352;29348:9;29343:14;;29178:185;;;;:::o;29369:177::-;29509:29;29505:1;29497:6;29493:14;29486:53;29369:177;:::o;29552:366::-;29694:3;29715:67;29779:2;29774:3;29715:67;:::i;:::-;29708:74;;29791:93;29880:3;29791:93;:::i;:::-;29909:2;29904:3;29900:12;29893:19;;29552:366;;;:::o;29924:419::-;30090:4;30128:2;30117:9;30113:18;30105:26;;30177:9;30171:4;30167:20;30163:1;30152:9;30148:17;30141:47;30205:131;30331:4;30205:131;:::i;:::-;30197:139;;29924:419;;;:::o;30349:348::-;30389:7;30412:20;30430:1;30412:20;:::i;:::-;30407:25;;30446:20;30464:1;30446:20;:::i;:::-;30441:25;;30634:1;30566:66;30562:74;30559:1;30556:81;30551:1;30544:9;30537:17;30533:105;30530:131;;;30641:18;;:::i;:::-;30530:131;30689:1;30686;30682:9;30671:20;;30349:348;;;;:::o;30703:220::-;30843:34;30839:1;30831:6;30827:14;30820:58;30912:3;30907:2;30899:6;30895:15;30888:28;30703:220;:::o;30929:366::-;31071:3;31092:67;31156:2;31151:3;31092:67;:::i;:::-;31085:74;;31168:93;31257:3;31168:93;:::i;:::-;31286:2;31281:3;31277:12;31270:19;;30929:366;;;:::o;31301:419::-;31467:4;31505:2;31494:9;31490:18;31482:26;;31554:9;31548:4;31544:20;31540:1;31529:9;31525:17;31518:47;31582:131;31708:4;31582:131;:::i;:::-;31574:139;;31301:419;;;:::o

Swarm Source

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