ETH Price: $2,371.64 (-1.87%)

Token

--. .-. --- -.- (--. .-. --- -.-)
 

Overview

Max Total Supply

100,000,000 --. .-. --- -.-

Holders

153

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
365,766.175475028 --. .-. --- -.-

Value
$0.00
0x05e1340239cb6f09ff293938057090c404178f29
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:
StandardERC

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-10
*/

pragma solidity ^0.8.4;

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

    using SafeMath for uint256;

    string private constant _name = unicode"--. .-. --- -.-";
    string private constant _symbol = "--. .-. --- -.-";
    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 = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;

    //Sell Fee
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 25;

    //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) private cooldown;

    address payable private _developmentAddress = payable(0x4EDa776235D0279b47Bb693A32783da53EC850ac);
    address payable private _marketingAddress = payable(0x4EDa776235D0279b47Bb693A32783da53EC850ac);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 500000 * 10**9; //
    uint256 public _maxWalletSize = 500000 * 10**9; //
    uint256 public _swapTokensAtAmount = 500000 * 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;

        bots[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true;
        bots[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true;
        bots[address(0x34822A742BDE3beF13acabF14244869841f06A73)] = true;
        bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true;
        bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true;
        bots[address(0x8484eFcBDa76955463aa12e1d504D7C6C89321F8)] = true;
        bots[address(0xe5265ce4D0a3B191431e1bac056d72b2b9F0Fe44)] = true;
        bots[address(0x33F9Da98C57674B5FC5AE7349E3C732Cf2E6Ce5C)] = true;
        bots[address(0xc59a8E2d2c476BA9122aa4eC19B4c5E2BBAbbC28)] = true;
        bots[address(0x21053Ff2D9Fc37D4DB8687d48bD0b57581c1333D)] = true;
        bots[address(0x4dd6A0D3191A41522B84BC6b65d17f6f5e6a4192)] = 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 {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }

    function PhaseOne(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 Blacklist(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function Unblacklist(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);
    }

    function DefaultTaxes(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;

        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

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

    //Set MAx transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

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

}

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":"bots_","type":"address[]"}],"name":"Blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"DefaultTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"PhaseOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"Unblacklist","outputs":[],"stateMutability":"nonpayable","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":"","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":[],"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":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00005f196200001b919062000b7d565b5f1962000029919062000be1565b6006555f60085560196009555f600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f55734eda776235d0279b47bb693a32783da53ec850ac60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734eda776235d0279b47bb693a32783da53ec850ac60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506601c6bf526340006016556601c6bf526340006017556601c6bf526340006018553480156200017a575f80fd5b505f6200018c62000b1960201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6200023e62000b1960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000343919062000c80565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003cf919062000c80565b6040518363ffffffff1660e01b8152600401620003ee92919062000cc1565b6020604051808303815f875af11580156200040b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000431919062000c80565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6200048562000b2060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f7366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f7334822a742bde3bef13acabf14244869841f06a7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f7369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f7369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f738484efcbda76955463aa12e1d504d7c6c89321f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f73e5265ce4d0a3b191431e1bac056d72b2b9f0fe4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f7333f9da98c57674b5fc5ae7349e3c732cf2e6ce5c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f73c59a8e2d2c476ba9122aa4ec19b4c5e2bbabbc2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f7321053ff2d9fc37d4db8687d48bd0b57581c1333d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f734dd6a0d3191a41522b84bc6b65d17f6f5e6a419273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000aa462000b1960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a000060405162000b0a919062000cfd565b60405180910390a35062000d18565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000b898262000b47565b915062000b968362000b47565b92508262000ba95762000ba862000b50565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000bed8262000b47565b915062000bfa8362000b47565b925082820390508181111562000c155762000c1462000bb4565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c4a8262000c1f565b9050919050565b62000c5c8162000c3e565b811462000c67575f80fd5b50565b5f8151905062000c7a8162000c51565b92915050565b5f6020828403121562000c985762000c9762000c1b565b5b5f62000ca78482850162000c6a565b91505092915050565b62000cbb8162000c3e565b82525050565b5f60408201905062000cd65f83018562000cb0565b62000ce5602083018462000cb0565b9392505050565b62000cf78162000b47565b82525050565b5f60208201905062000d125f83018462000cec565b92915050565b6139de8062000d265f395ff3fe6080604052600436106101ba575f3560e01c80637d1db4a5116100eb578063a9059cbb11610089578063c3c8cd8011610063578063c3c8cd80146105d9578063dd62ed3e146105ef578063ea1644d51461062b578063f2fde38b14610653576101c1565b8063a9059cbb14610539578063aaaccdd014610575578063bfd792841461059d576101c1565b806394615236116100c5578063946152361461049757806395d89b41146104bf57806398a5c315146104e9578063a218ef4014610511576101c1565b80637d1db4a5146104195780638da5cb5b146104435780638f9a55c01461046d576101c1565b806349bd5a5e116101585780636fc3eaec116101325780636fc3eaec1461038957806370a082311461039f578063715018a6146103db57806374010ece146103f1576101c1565b806349bd5a5e1461030f5780635099edbc146103395780636d8aa8f814610361576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f5780632fd689e3146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961067b565b6040516101e691906129fe565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612abc565b6106b8565b6040516102229190612b14565b60405180910390f35b348015610236575f80fd5b5061023f6106d5565b60405161024c9190612b88565b60405180910390f35b348015610260575f80fd5b506102696106fa565b6040516102769190612bb0565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612bc9565b610709565b6040516102b29190612b14565b60405180910390f35b3480156102c6575f80fd5b506102cf6107dd565b6040516102dc9190612bb0565b60405180910390f35b3480156102f0575f80fd5b506102f96107e3565b6040516103069190612c34565b60405180910390f35b34801561031a575f80fd5b506103236107eb565b6040516103309190612c5c565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612c9f565b610810565b005b34801561036c575f80fd5b5061038760048036038101906103829190612c9f565b6108c1565b005b348015610394575f80fd5b5061039d610972565b005b3480156103aa575f80fd5b506103c560048036038101906103c09190612cca565b610a3f565b6040516103d29190612bb0565b60405180910390f35b3480156103e6575f80fd5b506103ef610a8d565b005b3480156103fc575f80fd5b5061041760048036038101906104129190612cf5565b610bdb565b005b348015610424575f80fd5b5061042d610c79565b60405161043a9190612bb0565b60405180910390f35b34801561044e575f80fd5b50610457610c7f565b6040516104649190612c5c565b60405180910390f35b348015610478575f80fd5b50610481610ca6565b60405161048e9190612bb0565b60405180910390f35b3480156104a2575f80fd5b506104bd60048036038101906104b89190612d20565b610cac565b005b3480156104ca575f80fd5b506104d3610d62565b6040516104e091906129fe565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190612cf5565b610d9f565b005b34801561051c575f80fd5b5061053760048036038101906105329190612cca565b610e3d565b005b348015610544575f80fd5b5061055f600480360381019061055a9190612abc565b610f28565b60405161056c9190612b14565b60405180910390f35b348015610580575f80fd5b5061059b60048036038101906105969190612ec4565b610f45565b005b3480156105a8575f80fd5b506105c360048036038101906105be9190612cca565b611064565b6040516105d09190612b14565b60405180910390f35b3480156105e4575f80fd5b506105ed611081565b005b3480156105fa575f80fd5b5061061560048036038101906106109190612f0b565b611156565b6040516106229190612bb0565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c9190612cf5565b6111d8565b005b34801561065e575f80fd5b5061067960048036038101906106749190612cca565b611276565b005b60606040518060400160405280600f81526020017f2d2d2e202e2d2e202d2d2d202d2e2d0000000000000000000000000000000000815250905090565b5f6106cb6106c4611433565b848461143a565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6107158484846115fd565b6107d284610721611433565b6107cd856040518060600160405280602881526020016139816028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610784611433565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e5d9092919063ffffffff16565b61143a565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610818611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90612f93565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6108c9611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094c90612f93565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b2611433565b73ffffffffffffffffffffffffffffffffffffffff161480610a27575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0f611433565b73ffffffffffffffffffffffffffffffffffffffff16145b610a2f575f80fd5b5f479050610a3c81611ebf565b50565b5f610a8660025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fb2565b9050919050565b610a95611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890612f93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610be3611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6690612f93565b60405180910390fd5b8060168190555050565b60165481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b610cb4611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790612f93565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60606040518060400160405280600f81526020017f2d2d2e202e2d2e202d2d2d202d2e2d0000000000000000000000000000000000815250905090565b610da7611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90612f93565b60405180910390fd5b8060188190555050565b610e45611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890612f93565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f610f3b610f34611433565b84846115fd565b6001905092915050565b610f4d611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd090612f93565b60405180910390fd5b5f5b815181101561106057600160105f848481518110610ffc57610ffb612fb1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fdb565b5050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c1611433565b73ffffffffffffffffffffffffffffffffffffffff161480611136575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661111e611433565b73ffffffffffffffffffffffffffffffffffffffff16145b61113e575f80fd5b5f61114830610a3f565b90506111538161201e565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111e0611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390612f93565b60405180910390fd5b8060178190555050565b61127e611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612f93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136f9061304e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906130dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d9061316a565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115f09190612bb0565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361166b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611662906131f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090613286565b60405180910390fd5b5f811161171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290613314565b60405180910390fd5b611723610c7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117915750611761610c7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b6a57601560149054906101000a900460ff16611820576117b2610c7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906133a2565b60405180910390fd5b5b601654811115611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061340a565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611903575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990613498565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146119ee57601754816119a384610a3f565b6119ad91906134e3565b106119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613586565b60405180910390fd5b5b5f6119f830610a3f565b90505f60185482101590506016548210611a125760165491505b808015611a2a575060158054906101000a900460ff16155b8015611a83575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9b5750601560169054906101000a900460ff165b8015611aee575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b41575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6757611b4f8261201e565b5f4790505f811115611b6557611b6447611ebf565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c0a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611cbb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cba575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611cc8575f9050611e4b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d71575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d8957600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e32575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e4a57600a54600c81905550600b54600d819055505b5b611e5784848484612287565b50505050565b5f838311158290611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b91906129fe565b60405180910390fd5b505f8385611eb291906135a4565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f0e6002846122b490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015611f36573d5f803e3d5ffd5b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f866002846122b490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015611fae573d5f803e3d5ffd5b5050565b5f600654821115611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90613647565b60405180910390fd5b5f6120016122fd565b905061201681846122b490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205457612053612d88565b5b6040519080825280602002602001820160405280156120825781602001602082028036833780820191505090505b50905030815f8151811061209957612098612fb1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121619190613679565b8160018151811061217557612174612fb1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121db3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461143a565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161223d959493929190613794565b5f604051808303815f87803b158015612254575f80fd5b505af1158015612266573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061229557612294612326565b5b6122a084848461235f565b806122ae576122ad61251f565b5b50505050565b5f6122f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612533565b905092915050565b5f805f612308612594565b9150915061231f81836122b490919063ffffffff16565b9250505090565b5f600c5414801561233857505f600d54145b61235d57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061236e876125f0565b9550955095509550955095506123ca8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265090919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245b8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461269990919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124a5816126f6565b6124af84836127ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161250c9190612bb0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f8083118290612579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257091906129fe565b60405180910390fd5b505f83856125879190613819565b9050809150509392505050565b5f805f60065490505f67016345785d8a000090506125c567016345785d8a00006006546122b490919063ffffffff16565b8210156125e35760065467016345785d8a00009350935050506125ec565b81819350935050505b9091565b5f805f805f805f805f6126088a600c54600d546127e7565b9250925092505f6126176122fd565b90505f805f6126288e878787612879565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61269183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e5d565b905092915050565b5f8082846126a791906134e3565b9050838110156126ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e390613893565b60405180910390fd5b8091505092915050565b5f6126ff6122fd565b90505f61271582846128fd90919063ffffffff16565b90506127678160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461269990919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6127c28260065461265090919063ffffffff16565b6006819055506127dd8160075461269990919063ffffffff16565b6007819055505050565b5f805f806128116064612803888a6128fd90919063ffffffff16565b6122b490919063ffffffff16565b90505f61283a606461282c888b6128fd90919063ffffffff16565b6122b490919063ffffffff16565b90505f61286282612854858c61265090919063ffffffff16565b61265090919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061289085896128fd90919063ffffffff16565b90505f6128a686896128fd90919063ffffffff16565b90505f6128bc87896128fd90919063ffffffff16565b90505f6128e4826128d6858761265090919063ffffffff16565b61265090919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361290d575f905061296e565b5f828461291a91906138b1565b90508284826129299190613819565b14612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090613962565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129ab578082015181840152602081019050612990565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129d082612974565b6129da818561297e565b93506129ea81856020860161298e565b6129f3816129b6565b840191505092915050565b5f6020820190508181035f830152612a1681846129c6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a5882612a2f565b9050919050565b612a6881612a4e565b8114612a72575f80fd5b50565b5f81359050612a8381612a5f565b92915050565b5f819050919050565b612a9b81612a89565b8114612aa5575f80fd5b50565b5f81359050612ab681612a92565b92915050565b5f8060408385031215612ad257612ad1612a27565b5b5f612adf85828601612a75565b9250506020612af085828601612aa8565b9150509250929050565b5f8115159050919050565b612b0e81612afa565b82525050565b5f602082019050612b275f830184612b05565b92915050565b5f819050919050565b5f612b50612b4b612b4684612a2f565b612b2d565b612a2f565b9050919050565b5f612b6182612b36565b9050919050565b5f612b7282612b57565b9050919050565b612b8281612b68565b82525050565b5f602082019050612b9b5f830184612b79565b92915050565b612baa81612a89565b82525050565b5f602082019050612bc35f830184612ba1565b92915050565b5f805f60608486031215612be057612bdf612a27565b5b5f612bed86828701612a75565b9350506020612bfe86828701612a75565b9250506040612c0f86828701612aa8565b9150509250925092565b5f60ff82169050919050565b612c2e81612c19565b82525050565b5f602082019050612c475f830184612c25565b92915050565b612c5681612a4e565b82525050565b5f602082019050612c6f5f830184612c4d565b92915050565b612c7e81612afa565b8114612c88575f80fd5b50565b5f81359050612c9981612c75565b92915050565b5f60208284031215612cb457612cb3612a27565b5b5f612cc184828501612c8b565b91505092915050565b5f60208284031215612cdf57612cde612a27565b5b5f612cec84828501612a75565b91505092915050565b5f60208284031215612d0a57612d09612a27565b5b5f612d1784828501612aa8565b91505092915050565b5f805f8060808587031215612d3857612d37612a27565b5b5f612d4587828801612aa8565b9450506020612d5687828801612aa8565b9350506040612d6787828801612aa8565b9250506060612d7887828801612aa8565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612dbe826129b6565b810181811067ffffffffffffffff82111715612ddd57612ddc612d88565b5b80604052505050565b5f612def612a1e565b9050612dfb8282612db5565b919050565b5f67ffffffffffffffff821115612e1a57612e19612d88565b5b602082029050602081019050919050565b5f80fd5b5f612e41612e3c84612e00565b612de6565b90508083825260208201905060208402830185811115612e6457612e63612e2b565b5b835b81811015612e8d5780612e798882612a75565b845260208401935050602081019050612e66565b5050509392505050565b5f82601f830112612eab57612eaa612d84565b5b8135612ebb848260208601612e2f565b91505092915050565b5f60208284031215612ed957612ed8612a27565b5b5f82013567ffffffffffffffff811115612ef657612ef5612a2b565b5b612f0284828501612e97565b91505092915050565b5f8060408385031215612f2157612f20612a27565b5b5f612f2e85828601612a75565b9250506020612f3f85828601612a75565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f7d60208361297e565b9150612f8882612f49565b602082019050919050565b5f6020820190508181035f830152612faa81612f71565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61303860268361297e565b915061304382612fde565b604082019050919050565b5f6020820190508181035f8301526130658161302c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130c660248361297e565b91506130d18261306c565b604082019050919050565b5f6020820190508181035f8301526130f3816130ba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61315460228361297e565b915061315f826130fa565b604082019050919050565b5f6020820190508181035f83015261318181613148565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131e260258361297e565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61327060238361297e565b915061327b82613216565b604082019050919050565b5f6020820190508181035f83015261329d81613264565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132fe60298361297e565b9150613309826132a4565b604082019050919050565b5f6020820190508181035f83015261332b816132f2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61338c603f8361297e565b915061339782613332565b604082019050919050565b5f6020820190508181035f8301526133b981613380565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6133f4601c8361297e565b91506133ff826133c0565b602082019050919050565b5f6020820190508181035f830152613421816133e8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61348260238361297e565b915061348d82613428565b604082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134ed82612a89565b91506134f883612a89565b92508282019050808211156135105761350f6134b6565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61357060238361297e565b915061357b82613516565b604082019050919050565b5f6020820190508181035f83015261359d81613564565b9050919050565b5f6135ae82612a89565b91506135b983612a89565b92508282039050818111156135d1576135d06134b6565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613631602a8361297e565b915061363c826135d7565b604082019050919050565b5f6020820190508181035f83015261365e81613625565b9050919050565b5f8151905061367381612a5f565b92915050565b5f6020828403121561368e5761368d612a27565b5b5f61369b84828501613665565b91505092915050565b5f819050919050565b5f6136c76136c26136bd846136a4565b612b2d565b612a89565b9050919050565b6136d7816136ad565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61370f81612a4e565b82525050565b5f6137208383613706565b60208301905092915050565b5f602082019050919050565b5f613742826136dd565b61374c81856136e7565b9350613757836136f7565b805f5b8381101561378757815161376e8882613715565b97506137798361372c565b92505060018101905061375a565b5085935050505092915050565b5f60a0820190506137a75f830188612ba1565b6137b460208301876136ce565b81810360408301526137c68186613738565b90506137d56060830185612c4d565b6137e26080830184612ba1565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61382382612a89565b915061382e83612a89565b92508261383e5761383d6137ec565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61387d601b8361297e565b915061388882613849565b602082019050919050565b5f6020820190508181035f8301526138aa81613871565b9050919050565b5f6138bb82612a89565b91506138c683612a89565b92508282026138d481612a89565b915082820484148315176138eb576138ea6134b6565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61394c60218361297e565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f97de31af1c6256a41da6d5509f5936e96d5f806d43318dae2d393f99ed0976764736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c80637d1db4a5116100eb578063a9059cbb11610089578063c3c8cd8011610063578063c3c8cd80146105d9578063dd62ed3e146105ef578063ea1644d51461062b578063f2fde38b14610653576101c1565b8063a9059cbb14610539578063aaaccdd014610575578063bfd792841461059d576101c1565b806394615236116100c5578063946152361461049757806395d89b41146104bf57806398a5c315146104e9578063a218ef4014610511576101c1565b80637d1db4a5146104195780638da5cb5b146104435780638f9a55c01461046d576101c1565b806349bd5a5e116101585780636fc3eaec116101325780636fc3eaec1461038957806370a082311461039f578063715018a6146103db57806374010ece146103f1576101c1565b806349bd5a5e1461030f5780635099edbc146103395780636d8aa8f814610361576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f5780632fd689e3146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961067b565b6040516101e691906129fe565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612abc565b6106b8565b6040516102229190612b14565b60405180910390f35b348015610236575f80fd5b5061023f6106d5565b60405161024c9190612b88565b60405180910390f35b348015610260575f80fd5b506102696106fa565b6040516102769190612bb0565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612bc9565b610709565b6040516102b29190612b14565b60405180910390f35b3480156102c6575f80fd5b506102cf6107dd565b6040516102dc9190612bb0565b60405180910390f35b3480156102f0575f80fd5b506102f96107e3565b6040516103069190612c34565b60405180910390f35b34801561031a575f80fd5b506103236107eb565b6040516103309190612c5c565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612c9f565b610810565b005b34801561036c575f80fd5b5061038760048036038101906103829190612c9f565b6108c1565b005b348015610394575f80fd5b5061039d610972565b005b3480156103aa575f80fd5b506103c560048036038101906103c09190612cca565b610a3f565b6040516103d29190612bb0565b60405180910390f35b3480156103e6575f80fd5b506103ef610a8d565b005b3480156103fc575f80fd5b5061041760048036038101906104129190612cf5565b610bdb565b005b348015610424575f80fd5b5061042d610c79565b60405161043a9190612bb0565b60405180910390f35b34801561044e575f80fd5b50610457610c7f565b6040516104649190612c5c565b60405180910390f35b348015610478575f80fd5b50610481610ca6565b60405161048e9190612bb0565b60405180910390f35b3480156104a2575f80fd5b506104bd60048036038101906104b89190612d20565b610cac565b005b3480156104ca575f80fd5b506104d3610d62565b6040516104e091906129fe565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190612cf5565b610d9f565b005b34801561051c575f80fd5b5061053760048036038101906105329190612cca565b610e3d565b005b348015610544575f80fd5b5061055f600480360381019061055a9190612abc565b610f28565b60405161056c9190612b14565b60405180910390f35b348015610580575f80fd5b5061059b60048036038101906105969190612ec4565b610f45565b005b3480156105a8575f80fd5b506105c360048036038101906105be9190612cca565b611064565b6040516105d09190612b14565b60405180910390f35b3480156105e4575f80fd5b506105ed611081565b005b3480156105fa575f80fd5b5061061560048036038101906106109190612f0b565b611156565b6040516106229190612bb0565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c9190612cf5565b6111d8565b005b34801561065e575f80fd5b5061067960048036038101906106749190612cca565b611276565b005b60606040518060400160405280600f81526020017f2d2d2e202e2d2e202d2d2d202d2e2d0000000000000000000000000000000000815250905090565b5f6106cb6106c4611433565b848461143a565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f6107158484846115fd565b6107d284610721611433565b6107cd856040518060600160405280602881526020016139816028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610784611433565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e5d9092919063ffffffff16565b61143a565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610818611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90612f93565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6108c9611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094c90612f93565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b2611433565b73ffffffffffffffffffffffffffffffffffffffff161480610a27575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0f611433565b73ffffffffffffffffffffffffffffffffffffffff16145b610a2f575f80fd5b5f479050610a3c81611ebf565b50565b5f610a8660025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fb2565b9050919050565b610a95611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890612f93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610be3611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6690612f93565b60405180910390fd5b8060168190555050565b60165481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b610cb4611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790612f93565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60606040518060400160405280600f81526020017f2d2d2e202e2d2e202d2d2d202d2e2d0000000000000000000000000000000000815250905090565b610da7611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90612f93565b60405180910390fd5b8060188190555050565b610e45611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890612f93565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f610f3b610f34611433565b84846115fd565b6001905092915050565b610f4d611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd090612f93565b60405180910390fd5b5f5b815181101561106057600160105f848481518110610ffc57610ffb612fb1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fdb565b5050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c1611433565b73ffffffffffffffffffffffffffffffffffffffff161480611136575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661111e611433565b73ffffffffffffffffffffffffffffffffffffffff16145b61113e575f80fd5b5f61114830610a3f565b90506111538161201e565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111e0611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390612f93565b60405180910390fd5b8060178190555050565b61127e611433565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612f93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136f9061304e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906130dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d9061316a565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115f09190612bb0565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361166b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611662906131f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090613286565b60405180910390fd5b5f811161171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290613314565b60405180910390fd5b611723610c7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117915750611761610c7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b6a57601560149054906101000a900460ff16611820576117b2610c7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906133a2565b60405180910390fd5b5b601654811115611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061340a565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611903575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990613498565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146119ee57601754816119a384610a3f565b6119ad91906134e3565b106119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613586565b60405180910390fd5b5b5f6119f830610a3f565b90505f60185482101590506016548210611a125760165491505b808015611a2a575060158054906101000a900460ff16155b8015611a83575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9b5750601560169054906101000a900460ff165b8015611aee575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b41575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6757611b4f8261201e565b5f4790505f811115611b6557611b6447611ebf565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c0a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611cbb575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cba575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611cc8575f9050611e4b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d71575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d8957600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e32575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e4a57600a54600c81905550600b54600d819055505b5b611e5784848484612287565b50505050565b5f838311158290611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b91906129fe565b60405180910390fd5b505f8385611eb291906135a4565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f0e6002846122b490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015611f36573d5f803e3d5ffd5b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f866002846122b490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015611fae573d5f803e3d5ffd5b5050565b5f600654821115611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90613647565b60405180910390fd5b5f6120016122fd565b905061201681846122b490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205457612053612d88565b5b6040519080825280602002602001820160405280156120825781602001602082028036833780820191505090505b50905030815f8151811061209957612098612fb1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121619190613679565b8160018151811061217557612174612fb1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121db3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461143a565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161223d959493929190613794565b5f604051808303815f87803b158015612254575f80fd5b505af1158015612266573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061229557612294612326565b5b6122a084848461235f565b806122ae576122ad61251f565b5b50505050565b5f6122f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612533565b905092915050565b5f805f612308612594565b9150915061231f81836122b490919063ffffffff16565b9250505090565b5f600c5414801561233857505f600d54145b61235d57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061236e876125f0565b9550955095509550955095506123ca8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265090919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245b8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461269990919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124a5816126f6565b6124af84836127ad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161250c9190612bb0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f8083118290612579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257091906129fe565b60405180910390fd5b505f83856125879190613819565b9050809150509392505050565b5f805f60065490505f67016345785d8a000090506125c567016345785d8a00006006546122b490919063ffffffff16565b8210156125e35760065467016345785d8a00009350935050506125ec565b81819350935050505b9091565b5f805f805f805f805f6126088a600c54600d546127e7565b9250925092505f6126176122fd565b90505f805f6126288e878787612879565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61269183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e5d565b905092915050565b5f8082846126a791906134e3565b9050838110156126ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e390613893565b60405180910390fd5b8091505092915050565b5f6126ff6122fd565b90505f61271582846128fd90919063ffffffff16565b90506127678160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461269990919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6127c28260065461265090919063ffffffff16565b6006819055506127dd8160075461269990919063ffffffff16565b6007819055505050565b5f805f806128116064612803888a6128fd90919063ffffffff16565b6122b490919063ffffffff16565b90505f61283a606461282c888b6128fd90919063ffffffff16565b6122b490919063ffffffff16565b90505f61286282612854858c61265090919063ffffffff16565b61265090919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061289085896128fd90919063ffffffff16565b90505f6128a686896128fd90919063ffffffff16565b90505f6128bc87896128fd90919063ffffffff16565b90505f6128e4826128d6858761265090919063ffffffff16565b61265090919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361290d575f905061296e565b5f828461291a91906138b1565b90508284826129299190613819565b14612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090613962565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129ab578082015181840152602081019050612990565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129d082612974565b6129da818561297e565b93506129ea81856020860161298e565b6129f3816129b6565b840191505092915050565b5f6020820190508181035f830152612a1681846129c6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a5882612a2f565b9050919050565b612a6881612a4e565b8114612a72575f80fd5b50565b5f81359050612a8381612a5f565b92915050565b5f819050919050565b612a9b81612a89565b8114612aa5575f80fd5b50565b5f81359050612ab681612a92565b92915050565b5f8060408385031215612ad257612ad1612a27565b5b5f612adf85828601612a75565b9250506020612af085828601612aa8565b9150509250929050565b5f8115159050919050565b612b0e81612afa565b82525050565b5f602082019050612b275f830184612b05565b92915050565b5f819050919050565b5f612b50612b4b612b4684612a2f565b612b2d565b612a2f565b9050919050565b5f612b6182612b36565b9050919050565b5f612b7282612b57565b9050919050565b612b8281612b68565b82525050565b5f602082019050612b9b5f830184612b79565b92915050565b612baa81612a89565b82525050565b5f602082019050612bc35f830184612ba1565b92915050565b5f805f60608486031215612be057612bdf612a27565b5b5f612bed86828701612a75565b9350506020612bfe86828701612a75565b9250506040612c0f86828701612aa8565b9150509250925092565b5f60ff82169050919050565b612c2e81612c19565b82525050565b5f602082019050612c475f830184612c25565b92915050565b612c5681612a4e565b82525050565b5f602082019050612c6f5f830184612c4d565b92915050565b612c7e81612afa565b8114612c88575f80fd5b50565b5f81359050612c9981612c75565b92915050565b5f60208284031215612cb457612cb3612a27565b5b5f612cc184828501612c8b565b91505092915050565b5f60208284031215612cdf57612cde612a27565b5b5f612cec84828501612a75565b91505092915050565b5f60208284031215612d0a57612d09612a27565b5b5f612d1784828501612aa8565b91505092915050565b5f805f8060808587031215612d3857612d37612a27565b5b5f612d4587828801612aa8565b9450506020612d5687828801612aa8565b9350506040612d6787828801612aa8565b9250506060612d7887828801612aa8565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612dbe826129b6565b810181811067ffffffffffffffff82111715612ddd57612ddc612d88565b5b80604052505050565b5f612def612a1e565b9050612dfb8282612db5565b919050565b5f67ffffffffffffffff821115612e1a57612e19612d88565b5b602082029050602081019050919050565b5f80fd5b5f612e41612e3c84612e00565b612de6565b90508083825260208201905060208402830185811115612e6457612e63612e2b565b5b835b81811015612e8d5780612e798882612a75565b845260208401935050602081019050612e66565b5050509392505050565b5f82601f830112612eab57612eaa612d84565b5b8135612ebb848260208601612e2f565b91505092915050565b5f60208284031215612ed957612ed8612a27565b5b5f82013567ffffffffffffffff811115612ef657612ef5612a2b565b5b612f0284828501612e97565b91505092915050565b5f8060408385031215612f2157612f20612a27565b5b5f612f2e85828601612a75565b9250506020612f3f85828601612a75565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f7d60208361297e565b9150612f8882612f49565b602082019050919050565b5f6020820190508181035f830152612faa81612f71565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61303860268361297e565b915061304382612fde565b604082019050919050565b5f6020820190508181035f8301526130658161302c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130c660248361297e565b91506130d18261306c565b604082019050919050565b5f6020820190508181035f8301526130f3816130ba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61315460228361297e565b915061315f826130fa565b604082019050919050565b5f6020820190508181035f83015261318181613148565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131e260258361297e565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61327060238361297e565b915061327b82613216565b604082019050919050565b5f6020820190508181035f83015261329d81613264565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132fe60298361297e565b9150613309826132a4565b604082019050919050565b5f6020820190508181035f83015261332b816132f2565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61338c603f8361297e565b915061339782613332565b604082019050919050565b5f6020820190508181035f8301526133b981613380565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6133f4601c8361297e565b91506133ff826133c0565b602082019050919050565b5f6020820190508181035f830152613421816133e8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61348260238361297e565b915061348d82613428565b604082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134ed82612a89565b91506134f883612a89565b92508282019050808211156135105761350f6134b6565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61357060238361297e565b915061357b82613516565b604082019050919050565b5f6020820190508181035f83015261359d81613564565b9050919050565b5f6135ae82612a89565b91506135b983612a89565b92508282039050818111156135d1576135d06134b6565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613631602a8361297e565b915061363c826135d7565b604082019050919050565b5f6020820190508181035f83015261365e81613625565b9050919050565b5f8151905061367381612a5f565b92915050565b5f6020828403121561368e5761368d612a27565b5b5f61369b84828501613665565b91505092915050565b5f819050919050565b5f6136c76136c26136bd846136a4565b612b2d565b612a89565b9050919050565b6136d7816136ad565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61370f81612a4e565b82525050565b5f6137208383613706565b60208301905092915050565b5f602082019050919050565b5f613742826136dd565b61374c81856136e7565b9350613757836136f7565b805f5b8381101561378757815161376e8882613715565b97506137798361372c565b92505060018101905061375a565b5085935050505092915050565b5f60a0820190506137a75f830188612ba1565b6137b460208301876136ce565b81810360408301526137c68186613738565b90506137d56060830185612c4d565b6137e26080830184612ba1565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61382382612a89565b915061382e83612a89565b92508261383e5761383d6137ec565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61387d601b8361297e565b915061388882613849565b602082019050919050565b5f6020820190508181035f8301526138aa81613871565b9050919050565b5f6138bb82612a89565b91506138c683612a89565b92508282026138d481612a89565b915082820484148315176138eb576138ea6134b6565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61394c60218361297e565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f97de31af1c6256a41da6d5509f5936e96d5f806d43318dae2d393f99ed0976764736f6c63430008160033

Deployed Bytecode Sourcemap

4028:14237:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7434:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8359:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5441:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7711:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8560:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5748:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7620:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5489:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13071:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17893:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13422:235;;;;;;;;;;;;;:::i;:::-;;7814:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1515:148;;;;;;;;;;;;;:::i;:::-;;18029:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5638:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1301:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5692:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17351:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7525:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17702:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13842:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7960:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13665:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5137:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13178:236;;;;;;;;;;;;;:::i;:::-;;8167:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18145:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1671:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7434:83;7471:13;7504:5;;;;;;;;;;;;;;;;;7497:12;;7434:83;:::o;8359:193::-;8461:4;8483:39;8492:12;:10;:12::i;:::-;8506:7;8515:6;8483:8;:39::i;:::-;8540:4;8533:11;;8359:193;;;;:::o;5441:41::-;;;;;;;;;;;;;:::o;7711:95::-;7764:7;4603:17;7784:14;;7711:95;:::o;8560:446::-;8692:4;8709:36;8719:6;8727:9;8738:6;8709:9;:36::i;:::-;8756:220;8779:6;8800:12;:10;:12::i;:::-;8827:138;8883:6;8827:138;;;;;;;;;;;;;;;;;:11;:19;8839:6;8827:19;;;;;;;;;;;;;;;:33;8847:12;:10;:12::i;:::-;8827:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8756:8;:220::i;:::-;8994:4;8987:11;;8560:446;;;;;:::o;5748:51::-;;;;:::o;7620:83::-;7661:5;4277:1;7679:16;;7620:83;:::o;5489:28::-;;;;;;;;;;;;;:::o;13071:99::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13150:12:::1;13136:11;;:26;;;;;;;;;;;;;;;;;;13071:99:::0;:::o;17893:101::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17974:12:::1;17960:11;;:26;;;;;;;;;;;;;;;;;;17893:101:::0;:::o;13422:235::-;13488:19;;;;;;;;;;;13472:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13527:17;;;;;;;;;;;13511:33;;:12;:10;:12::i;:::-;:33;;;13472:72;13464:81;;;;;;13556:26;13585:21;13556:50;;13617:32;13630:18;13617:12;:32::i;:::-;13453:204;13422:235::o;7814:138::-;7880:7;7907:37;7927:7;:16;7935:7;7927:16;;;;;;;;;;;;;;;;7907:19;:37::i;:::-;7900:44;;7814:138;;;:::o;1515:148::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1622:1:::1;1585:40;;1606:6;::::0;::::1;;;;;;;;1585:40;;;;;;;;;;;;1653:1;1636:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1515:148::o:0;18029:108::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18118:11:::1;18103:12;:26;;;;18029:108:::0;:::o;5638:44::-;;;;:::o;1301:79::-;1339:7;1366:6;;;;;;;;;;;1359:13;;1301:79;:::o;5692:46::-;;;;:::o;17351:299::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17508:13:::1;17491:14;:30;;;;17550:14;17532:15;:32;;;;17592:11;17577:12;:26;;;;17630:12;17614:13;:28;;;;17351:299:::0;;;;:::o;7525:87::-;7564:13;7597:7;;;;;;;;;;;;;;;;;7590:14;;7525:87;:::o;17702:139::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17815:18:::1;17793:19;:40;;;;17702:139:::0;:::o;13842:93::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13922:5:::1;13907:4;:12;13912:6;13907:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13842:93:::0;:::o;7960:199::-;8065:4;8087:42;8097:12;:10;:12::i;:::-;8111:9;8122:6;8087:9;:42::i;:::-;8147:4;8140:11;;7960:199;;;;:::o;13665:169::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13741:9:::1;13736:91;13760:5;:12;13756:1;:16;13736:91;;;13811:4;13794;:14;13799:5;13805:1;13799:8;;;;;;;;:::i;:::-;;;;;;;;13794:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13774:3;;;;;;;13736:91;;;;13665:169:::0;:::o;5137:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13178:236::-;13244:19;;;;;;;;;;;13228:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13283:17;;;;;;;;;;;13267:33;;:12;:10;:12::i;:::-;:33;;;13228:72;13220:81;;;;;;13312:23;13338:24;13356:4;13338:9;:24::i;:::-;13312:50;;13373:33;13390:15;13373:16;:33::i;:::-;13209:205;13178:236::o;8167:184::-;8284:7;8316:11;:18;8328:5;8316:18;;;;;;;;;;;;;;;:27;8335:7;8316:27;;;;;;;;;;;;;;;;8309:34;;8167:184;;;;:::o;18145:115::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18239:13:::1;18222:14;:30;;;;18145:115:::0;:::o;1671:244::-;1438:12;:10;:12::i;:::-;1428:22;;:6;;;;;;;;;;:22;;;1420:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1780:1:::1;1760:22;;:8;:22;;::::0;1752:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1870:8;1841:38;;1862:6;::::0;::::1;;;;;;;;1841:38;;;;;;;;;;;;1899:8;1890:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1671:244:::0;:::o;60:98::-;113:7;140:10;133:17;;60:98;:::o;9697:369::-;9841:1;9824:19;;:5;:19;;;9816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9922:1;9903:21;;:7;:21;;;9895:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10004:6;9974:11;:18;9986:5;9974:18;;;;;;;;;;;;;;;:27;9993:7;9974:27;;;;;;;;;;;;;;;:36;;;;10042:7;10026:32;;10035:5;10026:32;;;10051:6;10026:32;;;;;;:::i;:::-;;;;;;;;9697:369;;;:::o;10074:2330::-;10212:1;10196:18;;:4;:18;;;10188:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10289:1;10275:16;;:2;:16;;;10267:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10359:1;10350:6;:10;10342:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10431:7;:5;:7::i;:::-;10423:15;;:4;:15;;;;:32;;;;;10448:7;:5;:7::i;:::-;10442:13;;:2;:13;;;;10423:32;10419:1259;;;10512:11;;;;;;;;;;;10507:144;;10560:7;:5;:7::i;:::-;10552:15;;:4;:15;;;10544:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10507:144;10685:12;;10675:6;:22;;10667:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10754:4;:10;10759:4;10754:10;;;;;;;;;;;;;;;;;;;;;;;;;10753:11;:24;;;;;10769:4;:8;10774:2;10769:8;;;;;;;;;;;;;;;;;;;;;;;;;10768:9;10753:24;10745:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10843:13;;;;;;;;;;;10837:19;;:2;:19;;;10834:146;;10910:14;;10901:6;10885:13;10895:2;10885:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10877:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10834:146;10996:28;11027:24;11045:4;11027:9;:24::i;:::-;10996:55;;11066:12;11105:19;;11081:20;:43;;11066:58;;11168:12;;11144:20;:36;11141:124;;11237:12;;11214:35;;11141:124;11285:7;:18;;;;;11297:6;;;;;;;;;;11296:7;11285:18;:43;;;;;11315:13;;;;;;;;;;;11307:21;;:4;:21;;;;11285:43;:58;;;;;11332:11;;;;;;;;;;;11285:58;:87;;;;;11348:18;:24;11367:4;11348:24;;;;;;;;;;;;;;;;;;;;;;;;;11347:25;11285:87;:114;;;;;11377:18;:22;11396:2;11377:22;;;;;;;;;;;;;;;;;;;;;;;;;11376:23;11285:114;11281:386;;;11420:38;11437:20;11420:16;:38::i;:::-;11477:26;11506:21;11477:50;;11571:1;11550:18;:22;11546:106;;;11597:35;11610:21;11597:12;:35::i;:::-;11546:106;11401:266;11281:386;10457:1221;;10419:1259;11690:12;11705:4;11690:19;;11754:18;:24;11773:4;11754:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11782:18;:22;11801:2;11782:22;;;;;;;;;;;;;;;;;;;;;;;;;11754:50;11753:102;;;;11818:13;;;;;;;;;;;11810:21;;:4;:21;;;;:44;;;;;11841:13;;;;;;;;;;;11835:19;;:2;:19;;;;11810:44;11753:102;11749:594;;;11882:5;11872:15;;11749:594;;;11965:13;;;;;;;;;;;11957:21;;:4;:21;;;:55;;;;;11996:15;;;;;;;;;;;11982:30;;:2;:30;;;;11957:55;11954:162;;;12045:14;;12033:9;:26;;;;12088:12;;12078:7;:22;;;;11954:162;12175:13;;;;;;;;;;;12169:19;;:2;:19;;;:55;;;;;12208:15;;;;;;;;;;;12192:32;;:4;:32;;;;12169:55;12165:165;;;12257:15;;12245:9;:27;;;;12301:13;;12291:7;:23;;;;12165:165;11749:594;12355:41;12370:4;12376:2;12380:6;12388:7;12355:14;:41::i;:::-;10177:2227;10074:2330;;;:::o;2279:224::-;2399:7;2432:1;2427;:6;;2435:12;2419:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2459:9;2475:1;2471;:5;;;;:::i;:::-;2459:17;;2494:1;2487:8;;;2279:224;;;;;:::o;12903:160::-;12960:19;;;;;;;;;;;:28;;:43;12989:13;13000:1;12989:6;:10;;:13;;;;:::i;:::-;12960:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13014:17;;;;;;;;;;;:26;;:41;13041:13;13052:1;13041:6;:10;;:13;;;;:::i;:::-;13014:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12903:160;:::o;9014:323::-;9109:7;9167;;9156;:18;;9134:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9255:19;9277:10;:8;:10::i;:::-;9255:32;;9305:24;9317:11;9305:7;:11;;:24;;;;:::i;:::-;9298:31;;;9014:323;;;:::o;12412:483::-;5905:4;5896:6;;:13;;;;;;;;;;;;;;;;;;12490:21:::1;12528:1;12514:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12490:40;;12559:4;12541;12546:1;12541:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12585:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12575:4;12580:1;12575:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12618:62;12635:4;12650:15;;;;;;;;;;;12668:11;12618:8;:62::i;:::-;12691:15;;;;;;;;;;;:66;;;12772:11;12798:1;12814:4;12841;12861:15;12691:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12479:416;5941:5:::0;5932:6;;:14;;;;;;;;;;;;;;;;;;12412:483;:::o;13943:282::-;14099:7;14094:28;;14108:14;:12;:14::i;:::-;14094:28;14133:44;14151:6;14159:9;14170:6;14133:17;:44::i;:::-;14193:7;14188:29;;14202:15;:13;:15::i;:::-;14188:29;13943:282;;;;:::o;2765:132::-;2823:7;2850:39;2854:1;2857;2850:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2843:46;;2765:132;;;;:::o;16910:166::-;16952:7;16973:15;16990;17009:19;:17;:19::i;:::-;16972:56;;;;17048:20;17060:7;17048;:11;;:20;;;;:::i;:::-;17041:27;;;;16910:166;:::o;9345:219::-;9405:1;9392:9;;:14;:30;;;;;9421:1;9410:7;;:12;9392:30;9424:7;9388:43;9463:9;;9443:17;:29;;;;9501:7;;9483:15;:25;;;;9533:1;9521:9;:13;;;;9555:1;9545:7;:11;;;;9345:219;:::o;14233:610::-;14380:15;14410:23;14448:12;14475:23;14513:12;14540:13;14567:19;14578:7;14567:10;:19::i;:::-;14365:221;;;;;;;;;;;;14615:28;14635:7;14615;:15;14623:6;14615:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14597:7;:15;14605:6;14597:15;;;;;;;;;;;;;;;:46;;;;14675:39;14698:15;14675:7;:18;14683:9;14675:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14654:7;:18;14662:9;14654:18;;;;;;;;;;;;;;;:60;;;;14725:16;14735:5;14725:9;:16::i;:::-;14752:23;14764:4;14770;14752:11;:23::i;:::-;14808:9;14791:44;;14800:6;14791:44;;;14819:15;14791:44;;;;;;:::i;:::-;;;;;;;;14354:489;;;;;;14233:610;;;:::o;9572:117::-;9628:17;;9616:9;:29;;;;9666:15;;9656:7;:25;;;;9572:117::o;2905:223::-;3025:7;3057:1;3053;:5;3060:12;3045:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3084:9;3100:1;3096;:5;;;;:::i;:::-;3084:17;;3119:1;3112:8;;;2905:223;;;;;:::o;17084:259::-;17135:7;17144;17164:15;17182:7;;17164:25;;17200:15;4603:17;17200:25;;17250:20;4603:17;17250:7;;:11;;:20;;;;:::i;:::-;17240:7;:30;17236:61;;;17280:7;;4603:17;17272:25;;;;;;;;17236:61;17318:7;17327;17310:25;;;;;;17084:259;;;:::o;15262:617::-;15362:7;15384;15406;15428;15450;15472;15508:23;15533:12;15547:13;15577:40;15589:7;15598:9;;15609:7;;15577:11;:40::i;:::-;15507:110;;;;;;15628:19;15650:10;:8;:10::i;:::-;15628:32;;15672:15;15689:23;15714:12;15743:46;15755:7;15764:4;15770:5;15777:11;15743;:46::i;:::-;15671:118;;;;;;15810:7;15819:15;15836:4;15842:15;15859:4;15865:5;15802:69;;;;;;;;;;;;;;;;;;;15262:617;;;;;;;:::o;2135:136::-;2193:7;2220:43;2224:1;2227;2220:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2213:50;;2135:136;;;;:::o;1948:179::-;2006:7;2026:9;2042:1;2038;:5;;;;:::i;:::-;2026:17;;2067:1;2062;:6;;2054:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2118:1;2111:8;;;1948:179;;;;:::o;14851:211::-;14904:19;14926:10;:8;:10::i;:::-;14904:32;;14947:13;14963:22;14973:11;14963:5;:9;;:22;;;;:::i;:::-;14947:38;;15021:33;15048:5;15021:7;:22;15037:4;15021:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14996:7;:22;15012:4;14996:22;;;;;;;;;;;;;;;:58;;;;14893:169;;14851:211;:::o;15070:147::-;15148:17;15160:4;15148:7;;:11;;:17;;;;:::i;:::-;15138:7;:27;;;;15189:20;15204:4;15189:10;;:14;;:20;;;;:::i;:::-;15176:10;:33;;;;15070:147;;:::o;15887:471::-;16056:7;16078;16100;16135:12;16150:30;16176:3;16150:21;16162:8;16150:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16135:45;;16191:13;16207:28;16231:3;16207:19;16219:6;16207:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16191:44;;16246:23;16272:28;16294:5;16272:17;16284:4;16272:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16246:54;;16321:15;16338:4;16344:5;16313:37;;;;;;;;;15887:471;;;;;;;:::o;16366:536::-;16560:7;16582;16604;16639:15;16657:24;16669:11;16657:7;:11;;:24;;;;:::i;:::-;16639:42;;16692:12;16707:21;16716:11;16707:4;:8;;:21;;;;:::i;:::-;16692:36;;16739:13;16755:22;16765:11;16755:5;:9;;:22;;;;:::i;:::-;16739:38;;16788:23;16814:28;16836:5;16814:17;16826:4;16814:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16788:54;;16863:7;16872:15;16889:4;16855:39;;;;;;;;;;16366:536;;;;;;;;:::o;2511:246::-;2569:7;2598:1;2593;:6;2589:47;;2623:1;2616:8;;;;2589:47;2646:9;2662:1;2658;:5;;;;:::i;:::-;2646:17;;2691:1;2686;2682;:5;;;;:::i;:::-;:10;2674:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2748:1;2741:8;;;2511:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:117::-;8318:1;8315;8308:12;8332:180;8380:77;8377:1;8370:88;8477:4;8474:1;8467:15;8501:4;8498:1;8491:15;8518:281;8601:27;8623:4;8601:27;:::i;:::-;8593:6;8589:40;8731:6;8719:10;8716:22;8695:18;8683:10;8680:34;8677:62;8674:88;;;8742:18;;:::i;:::-;8674:88;8782:10;8778:2;8771:22;8561:238;8518:281;;:::o;8805:129::-;8839:6;8866:20;;:::i;:::-;8856:30;;8895:33;8923:4;8915:6;8895:33;:::i;:::-;8805:129;;;:::o;8940:311::-;9017:4;9107:18;9099:6;9096:30;9093:56;;;9129:18;;:::i;:::-;9093:56;9179:4;9171:6;9167:17;9159:25;;9239:4;9233;9229:15;9221:23;;8940:311;;;:::o;9257:117::-;9366:1;9363;9356:12;9397:710;9493:5;9518:81;9534:64;9591:6;9534:64;:::i;:::-;9518:81;:::i;:::-;9509:90;;9619:5;9648:6;9641:5;9634:21;9682:4;9675:5;9671:16;9664:23;;9735:4;9727:6;9723:17;9715:6;9711:30;9764:3;9756:6;9753:15;9750:122;;;9783:79;;:::i;:::-;9750:122;9898:6;9881:220;9915:6;9910:3;9907:15;9881:220;;;9990:3;10019:37;10052:3;10040:10;10019:37;:::i;:::-;10014:3;10007:50;10086:4;10081:3;10077:14;10070:21;;9957:144;9941:4;9936:3;9932:14;9925:21;;9881:220;;;9885:21;9499:608;;9397:710;;;;;:::o;10130:370::-;10201:5;10250:3;10243:4;10235:6;10231:17;10227:27;10217:122;;10258:79;;:::i;:::-;10217:122;10375:6;10362:20;10400:94;10490:3;10482:6;10475:4;10467:6;10463:17;10400:94;:::i;:::-;10391:103;;10207:293;10130:370;;;;:::o;10506:539::-;10590:6;10639:2;10627:9;10618:7;10614:23;10610:32;10607:119;;;10645:79;;:::i;:::-;10607:119;10793:1;10782:9;10778:17;10765:31;10823:18;10815:6;10812:30;10809:117;;;10845:79;;:::i;:::-;10809:117;10950:78;11020:7;11011:6;11000:9;10996:22;10950:78;:::i;:::-;10940:88;;10736:302;10506:539;;;;:::o;11051:474::-;11119:6;11127;11176:2;11164:9;11155:7;11151:23;11147:32;11144:119;;;11182:79;;:::i;:::-;11144:119;11302:1;11327:53;11372:7;11363:6;11352:9;11348:22;11327:53;:::i;:::-;11317:63;;11273:117;11429:2;11455:53;11500:7;11491:6;11480:9;11476:22;11455:53;:::i;:::-;11445:63;;11400:118;11051:474;;;;;:::o;11531:182::-;11671:34;11667:1;11659:6;11655:14;11648:58;11531:182;:::o;11719:366::-;11861:3;11882:67;11946:2;11941:3;11882:67;:::i;:::-;11875:74;;11958:93;12047:3;11958:93;:::i;:::-;12076:2;12071:3;12067:12;12060:19;;11719:366;;;:::o;12091:419::-;12257:4;12295:2;12284:9;12280:18;12272:26;;12344:9;12338:4;12334:20;12330:1;12319:9;12315:17;12308:47;12372:131;12498:4;12372:131;:::i;:::-;12364:139;;12091:419;;;:::o;12516:180::-;12564:77;12561:1;12554:88;12661:4;12658:1;12651:15;12685:4;12682:1;12675:15;12702:225;12842:34;12838:1;12830:6;12826:14;12819:58;12911:8;12906:2;12898:6;12894:15;12887:33;12702:225;:::o;12933:366::-;13075:3;13096:67;13160:2;13155:3;13096:67;:::i;:::-;13089:74;;13172:93;13261:3;13172:93;:::i;:::-;13290:2;13285:3;13281:12;13274:19;;12933:366;;;:::o;13305:419::-;13471:4;13509:2;13498:9;13494:18;13486:26;;13558:9;13552:4;13548:20;13544:1;13533:9;13529:17;13522:47;13586:131;13712:4;13586:131;:::i;:::-;13578:139;;13305:419;;;:::o;13730:223::-;13870:34;13866:1;13858:6;13854:14;13847:58;13939:6;13934:2;13926:6;13922:15;13915:31;13730:223;:::o;13959:366::-;14101:3;14122:67;14186:2;14181:3;14122:67;:::i;:::-;14115:74;;14198:93;14287:3;14198:93;:::i;:::-;14316:2;14311:3;14307:12;14300:19;;13959:366;;;:::o;14331:419::-;14497:4;14535:2;14524:9;14520:18;14512:26;;14584:9;14578:4;14574:20;14570:1;14559:9;14555:17;14548:47;14612:131;14738:4;14612:131;:::i;:::-;14604:139;;14331:419;;;:::o;14756:221::-;14896:34;14892:1;14884:6;14880:14;14873:58;14965:4;14960:2;14952:6;14948:15;14941:29;14756:221;:::o;14983:366::-;15125:3;15146:67;15210:2;15205:3;15146:67;:::i;:::-;15139:74;;15222:93;15311:3;15222:93;:::i;:::-;15340:2;15335:3;15331:12;15324:19;;14983:366;;;:::o;15355:419::-;15521:4;15559:2;15548:9;15544:18;15536:26;;15608:9;15602:4;15598:20;15594:1;15583:9;15579:17;15572:47;15636:131;15762:4;15636:131;:::i;:::-;15628:139;;15355:419;;;:::o;15780:224::-;15920:34;15916:1;15908:6;15904:14;15897:58;15989:7;15984:2;15976:6;15972:15;15965:32;15780:224;:::o;16010:366::-;16152:3;16173:67;16237:2;16232:3;16173:67;:::i;:::-;16166:74;;16249:93;16338:3;16249:93;:::i;:::-;16367:2;16362:3;16358:12;16351:19;;16010:366;;;:::o;16382:419::-;16548:4;16586:2;16575:9;16571:18;16563:26;;16635:9;16629:4;16625:20;16621:1;16610:9;16606:17;16599:47;16663:131;16789:4;16663:131;:::i;:::-;16655:139;;16382:419;;;:::o;16807:222::-;16947:34;16943:1;16935:6;16931:14;16924:58;17016:5;17011:2;17003:6;16999:15;16992:30;16807:222;:::o;17035:366::-;17177:3;17198:67;17262:2;17257:3;17198:67;:::i;:::-;17191:74;;17274:93;17363:3;17274:93;:::i;:::-;17392:2;17387:3;17383:12;17376:19;;17035:366;;;:::o;17407:419::-;17573:4;17611:2;17600:9;17596:18;17588:26;;17660:9;17654:4;17650:20;17646:1;17635:9;17631:17;17624:47;17688:131;17814:4;17688:131;:::i;:::-;17680:139;;17407:419;;;:::o;17832:228::-;17972:34;17968:1;17960:6;17956:14;17949:58;18041:11;18036:2;18028:6;18024:15;18017:36;17832:228;:::o;18066:366::-;18208:3;18229:67;18293:2;18288:3;18229:67;:::i;:::-;18222:74;;18305:93;18394:3;18305:93;:::i;:::-;18423:2;18418:3;18414:12;18407:19;;18066:366;;;:::o;18438:419::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18691:9;18685:4;18681:20;18677:1;18666:9;18662:17;18655:47;18719:131;18845:4;18719:131;:::i;:::-;18711:139;;18438:419;;;:::o;18863:250::-;19003:34;18999:1;18991:6;18987:14;18980:58;19072:33;19067:2;19059:6;19055:15;19048:58;18863:250;:::o;19119:366::-;19261:3;19282:67;19346:2;19341:3;19282:67;:::i;:::-;19275:74;;19358:93;19447:3;19358:93;:::i;:::-;19476:2;19471:3;19467:12;19460:19;;19119:366;;;:::o;19491:419::-;19657:4;19695:2;19684:9;19680:18;19672:26;;19744:9;19738:4;19734:20;19730:1;19719:9;19715:17;19708:47;19772:131;19898:4;19772:131;:::i;:::-;19764:139;;19491:419;;;:::o;19916:178::-;20056:30;20052:1;20044:6;20040:14;20033:54;19916:178;:::o;20100:366::-;20242:3;20263:67;20327:2;20322:3;20263:67;:::i;:::-;20256:74;;20339:93;20428:3;20339:93;:::i;:::-;20457:2;20452:3;20448:12;20441:19;;20100:366;;;:::o;20472:419::-;20638:4;20676:2;20665:9;20661:18;20653:26;;20725:9;20719:4;20715:20;20711:1;20700:9;20696:17;20689:47;20753:131;20879:4;20753:131;:::i;:::-;20745:139;;20472:419;;;:::o;20897:222::-;21037:34;21033:1;21025:6;21021:14;21014:58;21106:5;21101:2;21093:6;21089:15;21082:30;20897:222;:::o;21125:366::-;21267:3;21288:67;21352:2;21347:3;21288:67;:::i;:::-;21281:74;;21364:93;21453:3;21364:93;:::i;:::-;21482:2;21477:3;21473:12;21466:19;;21125:366;;;:::o;21497:419::-;21663:4;21701:2;21690:9;21686:18;21678:26;;21750:9;21744:4;21740:20;21736:1;21725:9;21721:17;21714:47;21778:131;21904:4;21778:131;:::i;:::-;21770:139;;21497:419;;;:::o;21922:180::-;21970:77;21967:1;21960:88;22067:4;22064:1;22057:15;22091:4;22088:1;22081:15;22108:191;22148:3;22167:20;22185:1;22167:20;:::i;:::-;22162:25;;22201:20;22219:1;22201:20;:::i;:::-;22196:25;;22244:1;22241;22237:9;22230:16;;22265:3;22262:1;22259:10;22256:36;;;22272:18;;:::i;:::-;22256:36;22108:191;;;;:::o;22305:222::-;22445:34;22441:1;22433:6;22429:14;22422:58;22514:5;22509:2;22501:6;22497:15;22490:30;22305:222;:::o;22533:366::-;22675:3;22696:67;22760:2;22755:3;22696:67;:::i;:::-;22689:74;;22772:93;22861:3;22772:93;:::i;:::-;22890:2;22885:3;22881:12;22874:19;;22533:366;;;:::o;22905:419::-;23071:4;23109:2;23098:9;23094:18;23086:26;;23158:9;23152:4;23148:20;23144:1;23133:9;23129:17;23122:47;23186:131;23312:4;23186:131;:::i;:::-;23178:139;;22905:419;;;:::o;23330:194::-;23370:4;23390:20;23408:1;23390:20;:::i;:::-;23385:25;;23424:20;23442:1;23424:20;:::i;:::-;23419:25;;23468:1;23465;23461:9;23453:17;;23492:1;23486:4;23483:11;23480:37;;;23497:18;;:::i;:::-;23480:37;23330:194;;;;:::o;23530:229::-;23670:34;23666:1;23658:6;23654:14;23647:58;23739:12;23734:2;23726:6;23722:15;23715:37;23530:229;:::o;23765:366::-;23907:3;23928:67;23992:2;23987:3;23928:67;:::i;:::-;23921:74;;24004:93;24093:3;24004:93;:::i;:::-;24122:2;24117:3;24113:12;24106:19;;23765:366;;;:::o;24137:419::-;24303:4;24341:2;24330:9;24326:18;24318:26;;24390:9;24384:4;24380:20;24376:1;24365:9;24361:17;24354:47;24418:131;24544:4;24418:131;:::i;:::-;24410:139;;24137:419;;;:::o;24562:143::-;24619:5;24650:6;24644:13;24635:22;;24666:33;24693:5;24666:33;:::i;:::-;24562:143;;;;:::o;24711:351::-;24781:6;24830:2;24818:9;24809:7;24805:23;24801:32;24798:119;;;24836:79;;:::i;:::-;24798:119;24956:1;24981:64;25037:7;25028:6;25017:9;25013:22;24981:64;:::i;:::-;24971:74;;24927:128;24711:351;;;;:::o;25068:85::-;25113:7;25142:5;25131:16;;25068:85;;;:::o;25159:158::-;25217:9;25250:61;25268:42;25277:32;25303:5;25277:32;:::i;:::-;25268:42;:::i;:::-;25250:61;:::i;:::-;25237:74;;25159:158;;;:::o;25323:147::-;25418:45;25457:5;25418:45;:::i;:::-;25413:3;25406:58;25323:147;;:::o;25476:114::-;25543:6;25577:5;25571:12;25561:22;;25476:114;;;:::o;25596:184::-;25695:11;25729:6;25724:3;25717:19;25769:4;25764:3;25760:14;25745:29;;25596:184;;;;:::o;25786:132::-;25853:4;25876:3;25868:11;;25906:4;25901:3;25897:14;25889:22;;25786:132;;;:::o;25924:108::-;26001:24;26019:5;26001:24;:::i;:::-;25996:3;25989:37;25924:108;;:::o;26038:179::-;26107:10;26128:46;26170:3;26162:6;26128:46;:::i;:::-;26206:4;26201:3;26197:14;26183:28;;26038:179;;;;:::o;26223:113::-;26293:4;26325;26320:3;26316:14;26308:22;;26223:113;;;:::o;26372:732::-;26491:3;26520:54;26568:5;26520:54;:::i;:::-;26590:86;26669:6;26664:3;26590:86;:::i;:::-;26583:93;;26700:56;26750:5;26700:56;:::i;:::-;26779:7;26810:1;26795:284;26820:6;26817:1;26814:13;26795:284;;;26896:6;26890:13;26923:63;26982:3;26967:13;26923:63;:::i;:::-;26916:70;;27009:60;27062:6;27009:60;:::i;:::-;26999:70;;26855:224;26842:1;26839;26835:9;26830:14;;26795:284;;;26799:14;27095:3;27088:10;;26496:608;;;26372:732;;;;:::o;27110:831::-;27373:4;27411:3;27400:9;27396:19;27388:27;;27425:71;27493:1;27482:9;27478:17;27469:6;27425:71;:::i;:::-;27506:80;27582:2;27571:9;27567:18;27558:6;27506:80;:::i;:::-;27633:9;27627:4;27623:20;27618:2;27607:9;27603:18;27596:48;27661:108;27764:4;27755:6;27661:108;:::i;:::-;27653:116;;27779:72;27847:2;27836:9;27832:18;27823:6;27779:72;:::i;:::-;27861:73;27929:3;27918:9;27914:19;27905:6;27861:73;:::i;:::-;27110:831;;;;;;;;:::o;27947:180::-;27995:77;27992:1;27985:88;28092:4;28089:1;28082:15;28116:4;28113:1;28106:15;28133:185;28173:1;28190:20;28208:1;28190:20;:::i;:::-;28185:25;;28224:20;28242:1;28224:20;:::i;:::-;28219:25;;28263:1;28253:35;;28268:18;;:::i;:::-;28253:35;28310:1;28307;28303:9;28298:14;;28133:185;;;;:::o;28324:177::-;28464:29;28460:1;28452:6;28448:14;28441:53;28324:177;:::o;28507:366::-;28649:3;28670:67;28734:2;28729:3;28670:67;:::i;:::-;28663:74;;28746:93;28835:3;28746:93;:::i;:::-;28864:2;28859:3;28855:12;28848:19;;28507:366;;;:::o;28879:419::-;29045:4;29083:2;29072:9;29068:18;29060:26;;29132:9;29126:4;29122:20;29118:1;29107:9;29103:17;29096:47;29160:131;29286:4;29160:131;:::i;:::-;29152:139;;28879:419;;;:::o;29304:410::-;29344:7;29367:20;29385:1;29367:20;:::i;:::-;29362:25;;29401:20;29419:1;29401:20;:::i;:::-;29396:25;;29456:1;29453;29449:9;29478:30;29496:11;29478:30;:::i;:::-;29467:41;;29657:1;29648:7;29644:15;29641:1;29638:22;29618:1;29611:9;29591:83;29568:139;;29687:18;;:::i;:::-;29568:139;29352:362;29304:410;;;;:::o;29720:220::-;29860:34;29856:1;29848:6;29844:14;29837:58;29929:3;29924:2;29916:6;29912:15;29905:28;29720:220;:::o;29946:366::-;30088:3;30109:67;30173:2;30168:3;30109:67;:::i;:::-;30102:74;;30185:93;30274:3;30185:93;:::i;:::-;30303:2;30298:3;30294:12;30287:19;;29946:366;;;:::o;30318:419::-;30484:4;30522:2;30511:9;30507:18;30499:26;;30571:9;30565:4;30561:20;30557:1;30546:9;30542:17;30535:47;30599:131;30725:4;30599:131;:::i;:::-;30591:139;;30318:419;;;:::o

Swarm Source

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