ETH Price: $2,523.92 (-0.21%)

Token

xDevTools (XDT)
 

Overview

Max Total Supply

100,000,000 XDT

Holders

227

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0.00000001 XDT

Value
$0.00
0x4ede1fe68bce37caf170f5148db32b571e08ddc9
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:
XDEVTOOLS

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-30
*/

// SPDX-License-Identifier: MIT

/**

Telegram: https://t.me/xDevPortal

Twitter: https://X.com/xdevtools

Website: https://thexdev.tools

Bot: https://t.me/xDevTools_Bot

**/

pragma solidity 0.8.17;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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;
    }

}

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

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract XDEVTOOLS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=0;
    uint256 private _finalTax=0;
    uint256 private _reduceBuyTaxAt=350;
    uint256 private _reduceSellTaxAt=350;
    uint256 private _preventSwapBefore=60;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"xDevTools";
    string private constant _symbol = unicode"XDT";
    uint256 public _maxTxAmount =   2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=500000 * 10**_decimals;
    uint256 public _maxTaxSwap=1500000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalTax:_initialBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function openTrading(uint256 _tempBuyTax, uint256 _tempSellTax, uint256 _finalFee) external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
        _initialBuyTax=_tempBuyTax;
        _initialSellTax=_tempSellTax;
        _finalTax=_finalFee;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function reduceFee(uint256 _newFinalFee, uint256 _newBuyFee, uint256 _newSellFee) external{
      require(_msgSender()==owner(), "you are not the owner");
      _initialBuyTax=_newBuyFee;
      _initialSellTax=_newSellFee;
      _finalTax=_newFinalFee;
    }

    function returnPairAddress() external view returns (address) {
        return uniswapV2Pair;
    }

    receive() external payable {}

    function manualSwap() external {
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tempBuyTax","type":"uint256"},{"internalType":"uint256","name":"_tempSellTax","type":"uint256"},{"internalType":"uint256","name":"_finalFee","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFinalFee","type":"uint256"},{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040526001600560006101000a81548160ff02191690831515021790555060006006556000600755600060085561015e60095561015e600a55603c600b556000600c556008600a62000054919062000866565b621e8480620000649190620008b7565b600d556008600a62000077919062000866565b621e8480620000879190620008b7565b600e556008600a6200009a919062000866565b6207a120620000aa9190620008b7565b600f556008600a620000bd919062000866565b6216e360620000cd9190620008b7565b601055737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055503480156200016857600080fd5b5060006200017b6200069b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002296200069b60201b60201c565b600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000279919062000866565b6305f5e1006200028a9190620008b7565b600160006200029e6200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002f2620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000483573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a991906200096c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055991906200096c565b6040518363ffffffff1660e01b815260040162000578929190620009af565b6020604051808303816000875af115801562000598573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005be91906200096c565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200060e6200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200066d919062000866565b6305f5e1006200067e9190620008b7565b6040516200068d9190620009ed565b60405180910390a362000a0a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075a57808604811115620007325762000731620006cc565b5b6001851615620007425780820291505b80810290506200075285620006fb565b945062000712565b94509492505050565b60008262000775576001905062000848565b8162000785576000905062000848565b81600181146200079e5760028114620007a957620007df565b600191505062000848565b60ff841115620007be57620007bd620006cc565b5b8360020a915084821115620007d857620007d7620006cc565b5b5062000848565b5060208310610133831016604e8410600b8410161715620008195782820a905083811115620008135762000812620006cc565b5b62000848565b62000828848484600162000708565b92509050818404811115620008425762000841620006cc565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000873826200084f565b9150620008808362000859565b9250620008af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000763565b905092915050565b6000620008c4826200084f565b9150620008d1836200084f565b9250828202620008e1816200084f565b91508282048414831517620008fb57620008fa620006cc565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009348262000907565b9050919050565b620009468162000927565b81146200095257600080fd5b50565b60008151905062000966816200093b565b92915050565b60006020828403121562000985576200098462000902565b5b6000620009958482850162000955565b91505092915050565b620009a98162000927565b82525050565b6000604082019050620009c660008301856200099e565b620009d560208301846200099e565b9392505050565b620009e7816200084f565b82525050565b600060208201905062000a046000830184620009dc565b92915050565b612fbc8062000a1a6000396000f3fe60806040526004361061012e5760003560e01c8063751039fc116100ab578063a9059cbb1161006f578063a9059cbb146103b7578063bf474bed146103f4578063c876d0b91461041f578063cb4972a41461044a578063dd62ed3e14610473578063eb7ba964146104b057610135565b8063751039fc146102f45780637d1db4a51461030b5780638da5cb5b146103365780638f9a55c01461036157806395d89b411461038c57610135565b8063313ce567116100f2578063313ce5671461023557806334848b9a1461026057806351bc3c851461028957806370a08231146102a0578063715018a6146102dd57610135565b806306fdde031461013a578063095ea7b3146101655780630faee56f146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104db565b60405161015c9190611f9c565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612057565b610518565b60405161019991906120b2565b60405180910390f35b3480156101ae57600080fd5b506101b7610536565b6040516101c491906120dc565b60405180910390f35b3480156101d957600080fd5b506101e261053c565b6040516101ef91906120dc565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a91906120f7565b610560565b60405161022c91906120b2565b60405180910390f35b34801561024157600080fd5b5061024a610639565b6040516102579190612166565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612181565b610642565b005b34801561029557600080fd5b5061029e61095f565b005b3480156102ac57600080fd5b506102c760048036038101906102c291906121d4565b61099b565b6040516102d491906120dc565b60405180910390f35b3480156102e957600080fd5b506102f26109e4565b005b34801561030057600080fd5b50610309610b37565b005b34801561031757600080fd5b50610320610c82565b60405161032d91906120dc565b60405180910390f35b34801561034257600080fd5b5061034b610c88565b6040516103589190612210565b60405180910390f35b34801561036d57600080fd5b50610376610cb1565b60405161038391906120dc565b60405180910390f35b34801561039857600080fd5b506103a1610cb7565b6040516103ae9190611f9c565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612057565b610cf4565b6040516103eb91906120b2565b60405180910390f35b34801561040057600080fd5b50610409610d12565b60405161041691906120dc565b60405180910390f35b34801561042b57600080fd5b50610434610d18565b60405161044191906120b2565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190612181565b610d2b565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061222b565b610dc1565b6040516104a791906120dc565b60405180910390f35b3480156104bc57600080fd5b506104c5610e48565b6040516104d29190612210565b60405180910390f35b60606040518060400160405280600981526020017f78446576546f6f6c730000000000000000000000000000000000000000000000815250905090565b600061052c610525610e72565b8484610e7a565b6001905092915050565b60105481565b60006008600a61054c91906123cd565b6305f5e10061055b9190612418565b905090565b600061056d848484611043565b61062e84610579610e72565b61062985604051806060016040528060288152602001612f5f60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105df610e72565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119db9092919063ffffffff16565b610e7a565b600190509392505050565b60006008905090565b61064a610e72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906124a6565b60405180910390fd5b601260149054906101000a900460ff1615610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e90612512565b60405180910390fd5b61077030601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61075c91906123cd565b6305f5e10061076b9190612418565b610e7a565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306107b93061099b565b6000806107c4610c88565b426040518863ffffffff1660e01b81526004016107e696959493929190612577565b60606040518083038185885af1158015610804573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061082991906125ed565b5050506001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff021916908315150217905550826006819055508160078190555080600881905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610916929190612640565b6020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190612695565b50505050565b600061096a3061099b565b9050600081111561097f5761097e81611a3f565b5b600047905060008111156109975761099681611cb8565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109ec610e72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a70906124a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b3f610e72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc3906124a6565b60405180910390fd5b6008600a610bda91906123cd565b6305f5e100610be99190612418565b600d819055506008600a610bfd91906123cd565b6305f5e100610c0c9190612418565b600e819055506000600560006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610c5c91906123cd565b6305f5e100610c6b9190612418565b604051610c7891906120dc565b60405180910390a1565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600381526020017f5844540000000000000000000000000000000000000000000000000000000000815250905090565b6000610d08610d01610e72565b8484611043565b6001905092915050565b600f5481565b600560009054906101000a900460ff1681565b610d33610c88565b73ffffffffffffffffffffffffffffffffffffffff16610d51610e72565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e9061270e565b60405180910390fd5b816006819055508060078190555082600881905550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee0906127a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4f90612832565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161103691906120dc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a9906128c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111890612956565b60405180910390fd5b60008111611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b906129e8565b60405180910390fd5b600061116e610c88565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156111dc57506111ac610c88565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561171e5761121d606461120f600954600c54116111fc57600654611200565b6008545b85611d2490919063ffffffff16565b611d9e90919063ffffffff16565b9050600560009054906101000a900460ff16156113ac57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112e05750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156113ab5743600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90612aa0565b60405180910390fd5b43600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114575750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114ad5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561156857600d548211156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90612b0c565b60405180910390fd5b600e54826115048561099b565b61150e9190612b2c565b111561154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690612bac565b60405180910390fd5b600c600081548092919061156290612bcc565b91905055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115f157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611635576116326064611624600a54600c541161161157600754611615565b6008545b85611d2490919063ffffffff16565b611d9e90919063ffffffff16565b90505b60006116403061099b565b9050601260159054906101000a900460ff161580156116ac5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156116c45750601260169054906101000a900460ff165b80156116d15750600f5481115b80156116e05750600b54600c54115b1561171c576117026116fd846116f884601054611de8565b611de8565b611a3f565b6000479050600081111561171a5761171947611cb8565b5b505b505b61177082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e0190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118176117c98284611e0190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4b90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118bc8486611e0190919063ffffffff16565b6040516118c991906120dc565b60405180910390a360008111156119d55761192c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4b90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119cc91906120dc565b60405180910390a35b50505050565b6000838311158290611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a9190611f9c565b60405180910390fd5b5060008385611a329190612c14565b9050809150509392505050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a7757611a76612c48565b5b604051908082528060200260200182016040528015611aa55781602001602082028036833780820191505090505b5090503081600081518110611abd57611abc612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b889190612cbb565b81600181518110611b9c57611b9b612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c0330601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e7a565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c67959493929190612da6565b600060405180830381600087803b158015611c8157600080fd5b505af1158015611c95573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d20573d6000803e3d6000fd5b5050565b6000808303611d365760009050611d98565b60008284611d449190612418565b9050828482611d539190612e2f565b14611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90612ed2565b60405180910390fd5b809150505b92915050565b6000611de083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ea9565b905092915050565b6000818311611df75782611df9565b815b905092915050565b6000611e4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119db565b905092915050565b6000808284611e5a9190612b2c565b905083811015611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690612f3e565b60405180910390fd5b8091505092915050565b60008083118290611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee79190611f9c565b60405180910390fd5b5060008385611eff9190612e2f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f46578082015181840152602081019050611f2b565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f6e82611f0c565b611f788185611f17565b9350611f88818560208601611f28565b611f9181611f52565b840191505092915050565b60006020820190508181036000830152611fb68184611f63565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fee82611fc3565b9050919050565b611ffe81611fe3565b811461200957600080fd5b50565b60008135905061201b81611ff5565b92915050565b6000819050919050565b61203481612021565b811461203f57600080fd5b50565b6000813590506120518161202b565b92915050565b6000806040838503121561206e5761206d611fbe565b5b600061207c8582860161200c565b925050602061208d85828601612042565b9150509250929050565b60008115159050919050565b6120ac81612097565b82525050565b60006020820190506120c760008301846120a3565b92915050565b6120d681612021565b82525050565b60006020820190506120f160008301846120cd565b92915050565b6000806000606084860312156121105761210f611fbe565b5b600061211e8682870161200c565b935050602061212f8682870161200c565b925050604061214086828701612042565b9150509250925092565b600060ff82169050919050565b6121608161214a565b82525050565b600060208201905061217b6000830184612157565b92915050565b60008060006060848603121561219a57612199611fbe565b5b60006121a886828701612042565b93505060206121b986828701612042565b92505060406121ca86828701612042565b9150509250925092565b6000602082840312156121ea576121e9611fbe565b5b60006121f88482850161200c565b91505092915050565b61220a81611fe3565b82525050565b60006020820190506122256000830184612201565b92915050565b6000806040838503121561224257612241611fbe565b5b60006122508582860161200c565b92505060206122618582860161200c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156122f1578086048111156122cd576122cc61226b565b5b60018516156122dc5780820291505b80810290506122ea8561229a565b94506122b1565b94509492505050565b60008261230a57600190506123c6565b8161231857600090506123c6565b816001811461232e576002811461233857612367565b60019150506123c6565b60ff84111561234a5761234961226b565b5b8360020a9150848211156123615761236061226b565b5b506123c6565b5060208310610133831016604e8410600b841016171561239c5782820a9050838111156123975761239661226b565b5b6123c6565b6123a984848460016122a7565b925090508184048111156123c0576123bf61226b565b5b81810290505b9392505050565b60006123d882612021565b91506123e38361214a565b92506124107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846122fa565b905092915050565b600061242382612021565b915061242e83612021565b925082820261243c81612021565b915082820484148315176124535761245261226b565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612490602083611f17565b915061249b8261245a565b602082019050919050565b600060208201905081810360008301526124bf81612483565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006124fc601783611f17565b9150612507826124c6565b602082019050919050565b6000602082019050818103600083015261252b816124ef565b9050919050565b6000819050919050565b6000819050919050565b600061256161255c61255784612532565b61253c565b612021565b9050919050565b61257181612546565b82525050565b600060c08201905061258c6000830189612201565b61259960208301886120cd565b6125a66040830187612568565b6125b36060830186612568565b6125c06080830185612201565b6125cd60a08301846120cd565b979650505050505050565b6000815190506125e78161202b565b92915050565b60008060006060848603121561260657612605611fbe565b5b6000612614868287016125d8565b9350506020612625868287016125d8565b9250506040612636868287016125d8565b9150509250925092565b60006040820190506126556000830185612201565b61266260208301846120cd565b9392505050565b61267281612097565b811461267d57600080fd5b50565b60008151905061268f81612669565b92915050565b6000602082840312156126ab576126aa611fbe565b5b60006126b984828501612680565b91505092915050565b7f796f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b60006126f8601583611f17565b9150612703826126c2565b602082019050919050565b60006020820190508181036000830152612727816126eb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061278a602483611f17565b91506127958261272e565b604082019050919050565b600060208201905081810360008301526127b98161277d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061281c602283611f17565b9150612827826127c0565b604082019050919050565b6000602082019050818103600083015261284b8161280f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006128ae602583611f17565b91506128b982612852565b604082019050919050565b600060208201905081810360008301526128dd816128a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612940602383611f17565b915061294b826128e4565b604082019050919050565b6000602082019050818103600083015261296f81612933565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006129d2602983611f17565b91506129dd82612976565b604082019050919050565b60006020820190508181036000830152612a01816129c5565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000612a8a604983611f17565b9150612a9582612a08565b606082019050919050565b60006020820190508181036000830152612ab981612a7d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612af6601983611f17565b9150612b0182612ac0565b602082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b6000612b3782612021565b9150612b4283612021565b9250828201905080821115612b5a57612b5961226b565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612b96601a83611f17565b9150612ba182612b60565b602082019050919050565b60006020820190508181036000830152612bc581612b89565b9050919050565b6000612bd782612021565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c0957612c0861226b565b5b600182019050919050565b6000612c1f82612021565b9150612c2a83612021565b9250828203905081811115612c4257612c4161226b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612cb581611ff5565b92915050565b600060208284031215612cd157612cd0611fbe565b5b6000612cdf84828501612ca6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d1d81611fe3565b82525050565b6000612d2f8383612d14565b60208301905092915050565b6000602082019050919050565b6000612d5382612ce8565b612d5d8185612cf3565b9350612d6883612d04565b8060005b83811015612d99578151612d808882612d23565b9750612d8b83612d3b565b925050600181019050612d6c565b5085935050505092915050565b600060a082019050612dbb60008301886120cd565b612dc86020830187612568565b8181036040830152612dda8186612d48565b9050612de96060830185612201565b612df660808301846120cd565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e3a82612021565b9150612e4583612021565b925082612e5557612e54612e00565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ebc602183611f17565b9150612ec782612e60565b604082019050919050565b60006020820190508181036000830152612eeb81612eaf565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612f28601b83611f17565b9150612f3382612ef2565b602082019050919050565b60006020820190508181036000830152612f5781612f1b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b1f843552a0aad834da7bd2bd4c894d1fa1d6f5f687739f089b38dd6933edb4564736f6c63430008110033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063751039fc116100ab578063a9059cbb1161006f578063a9059cbb146103b7578063bf474bed146103f4578063c876d0b91461041f578063cb4972a41461044a578063dd62ed3e14610473578063eb7ba964146104b057610135565b8063751039fc146102f45780637d1db4a51461030b5780638da5cb5b146103365780638f9a55c01461036157806395d89b411461038c57610135565b8063313ce567116100f2578063313ce5671461023557806334848b9a1461026057806351bc3c851461028957806370a08231146102a0578063715018a6146102dd57610135565b806306fdde031461013a578063095ea7b3146101655780630faee56f146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104db565b60405161015c9190611f9c565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612057565b610518565b60405161019991906120b2565b60405180910390f35b3480156101ae57600080fd5b506101b7610536565b6040516101c491906120dc565b60405180910390f35b3480156101d957600080fd5b506101e261053c565b6040516101ef91906120dc565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a91906120f7565b610560565b60405161022c91906120b2565b60405180910390f35b34801561024157600080fd5b5061024a610639565b6040516102579190612166565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612181565b610642565b005b34801561029557600080fd5b5061029e61095f565b005b3480156102ac57600080fd5b506102c760048036038101906102c291906121d4565b61099b565b6040516102d491906120dc565b60405180910390f35b3480156102e957600080fd5b506102f26109e4565b005b34801561030057600080fd5b50610309610b37565b005b34801561031757600080fd5b50610320610c82565b60405161032d91906120dc565b60405180910390f35b34801561034257600080fd5b5061034b610c88565b6040516103589190612210565b60405180910390f35b34801561036d57600080fd5b50610376610cb1565b60405161038391906120dc565b60405180910390f35b34801561039857600080fd5b506103a1610cb7565b6040516103ae9190611f9c565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612057565b610cf4565b6040516103eb91906120b2565b60405180910390f35b34801561040057600080fd5b50610409610d12565b60405161041691906120dc565b60405180910390f35b34801561042b57600080fd5b50610434610d18565b60405161044191906120b2565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190612181565b610d2b565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061222b565b610dc1565b6040516104a791906120dc565b60405180910390f35b3480156104bc57600080fd5b506104c5610e48565b6040516104d29190612210565b60405180910390f35b60606040518060400160405280600981526020017f78446576546f6f6c730000000000000000000000000000000000000000000000815250905090565b600061052c610525610e72565b8484610e7a565b6001905092915050565b60105481565b60006008600a61054c91906123cd565b6305f5e10061055b9190612418565b905090565b600061056d848484611043565b61062e84610579610e72565b61062985604051806060016040528060288152602001612f5f60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105df610e72565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119db9092919063ffffffff16565b610e7a565b600190509392505050565b60006008905090565b61064a610e72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906124a6565b60405180910390fd5b601260149054906101000a900460ff1615610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e90612512565b60405180910390fd5b61077030601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61075c91906123cd565b6305f5e10061076b9190612418565b610e7a565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306107b93061099b565b6000806107c4610c88565b426040518863ffffffff1660e01b81526004016107e696959493929190612577565b60606040518083038185885af1158015610804573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061082991906125ed565b5050506001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff021916908315150217905550826006819055508160078190555080600881905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610916929190612640565b6020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190612695565b50505050565b600061096a3061099b565b9050600081111561097f5761097e81611a3f565b5b600047905060008111156109975761099681611cb8565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109ec610e72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a70906124a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b3f610e72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc3906124a6565b60405180910390fd5b6008600a610bda91906123cd565b6305f5e100610be99190612418565b600d819055506008600a610bfd91906123cd565b6305f5e100610c0c9190612418565b600e819055506000600560006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610c5c91906123cd565b6305f5e100610c6b9190612418565b604051610c7891906120dc565b60405180910390a1565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600381526020017f5844540000000000000000000000000000000000000000000000000000000000815250905090565b6000610d08610d01610e72565b8484611043565b6001905092915050565b600f5481565b600560009054906101000a900460ff1681565b610d33610c88565b73ffffffffffffffffffffffffffffffffffffffff16610d51610e72565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e9061270e565b60405180910390fd5b816006819055508060078190555082600881905550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee0906127a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4f90612832565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161103691906120dc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a9906128c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111890612956565b60405180910390fd5b60008111611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b906129e8565b60405180910390fd5b600061116e610c88565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156111dc57506111ac610c88565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561171e5761121d606461120f600954600c54116111fc57600654611200565b6008545b85611d2490919063ffffffff16565b611d9e90919063ffffffff16565b9050600560009054906101000a900460ff16156113ac57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112e05750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156113ab5743600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90612aa0565b60405180910390fd5b43600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114575750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114ad5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561156857600d548211156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90612b0c565b60405180910390fd5b600e54826115048561099b565b61150e9190612b2c565b111561154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690612bac565b60405180910390fd5b600c600081548092919061156290612bcc565b91905055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115f157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611635576116326064611624600a54600c541161161157600754611615565b6008545b85611d2490919063ffffffff16565b611d9e90919063ffffffff16565b90505b60006116403061099b565b9050601260159054906101000a900460ff161580156116ac5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156116c45750601260169054906101000a900460ff165b80156116d15750600f5481115b80156116e05750600b54600c54115b1561171c576117026116fd846116f884601054611de8565b611de8565b611a3f565b6000479050600081111561171a5761171947611cb8565b5b505b505b61177082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e0190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118176117c98284611e0190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4b90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118bc8486611e0190919063ffffffff16565b6040516118c991906120dc565b60405180910390a360008111156119d55761192c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4b90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119cc91906120dc565b60405180910390a35b50505050565b6000838311158290611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a9190611f9c565b60405180910390fd5b5060008385611a329190612c14565b9050809150509392505050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a7757611a76612c48565b5b604051908082528060200260200182016040528015611aa55781602001602082028036833780820191505090505b5090503081600081518110611abd57611abc612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b889190612cbb565b81600181518110611b9c57611b9b612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c0330601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e7a565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c67959493929190612da6565b600060405180830381600087803b158015611c8157600080fd5b505af1158015611c95573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d20573d6000803e3d6000fd5b5050565b6000808303611d365760009050611d98565b60008284611d449190612418565b9050828482611d539190612e2f565b14611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90612ed2565b60405180910390fd5b809150505b92915050565b6000611de083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ea9565b905092915050565b6000818311611df75782611df9565b815b905092915050565b6000611e4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119db565b905092915050565b6000808284611e5a9190612b2c565b905083811015611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690612f3e565b60405180910390fd5b8091505092915050565b60008083118290611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee79190611f9c565b60405180910390fd5b5060008385611eff9190612e2f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f46578082015181840152602081019050611f2b565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f6e82611f0c565b611f788185611f17565b9350611f88818560208601611f28565b611f9181611f52565b840191505092915050565b60006020820190508181036000830152611fb68184611f63565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fee82611fc3565b9050919050565b611ffe81611fe3565b811461200957600080fd5b50565b60008135905061201b81611ff5565b92915050565b6000819050919050565b61203481612021565b811461203f57600080fd5b50565b6000813590506120518161202b565b92915050565b6000806040838503121561206e5761206d611fbe565b5b600061207c8582860161200c565b925050602061208d85828601612042565b9150509250929050565b60008115159050919050565b6120ac81612097565b82525050565b60006020820190506120c760008301846120a3565b92915050565b6120d681612021565b82525050565b60006020820190506120f160008301846120cd565b92915050565b6000806000606084860312156121105761210f611fbe565b5b600061211e8682870161200c565b935050602061212f8682870161200c565b925050604061214086828701612042565b9150509250925092565b600060ff82169050919050565b6121608161214a565b82525050565b600060208201905061217b6000830184612157565b92915050565b60008060006060848603121561219a57612199611fbe565b5b60006121a886828701612042565b93505060206121b986828701612042565b92505060406121ca86828701612042565b9150509250925092565b6000602082840312156121ea576121e9611fbe565b5b60006121f88482850161200c565b91505092915050565b61220a81611fe3565b82525050565b60006020820190506122256000830184612201565b92915050565b6000806040838503121561224257612241611fbe565b5b60006122508582860161200c565b92505060206122618582860161200c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156122f1578086048111156122cd576122cc61226b565b5b60018516156122dc5780820291505b80810290506122ea8561229a565b94506122b1565b94509492505050565b60008261230a57600190506123c6565b8161231857600090506123c6565b816001811461232e576002811461233857612367565b60019150506123c6565b60ff84111561234a5761234961226b565b5b8360020a9150848211156123615761236061226b565b5b506123c6565b5060208310610133831016604e8410600b841016171561239c5782820a9050838111156123975761239661226b565b5b6123c6565b6123a984848460016122a7565b925090508184048111156123c0576123bf61226b565b5b81810290505b9392505050565b60006123d882612021565b91506123e38361214a565b92506124107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846122fa565b905092915050565b600061242382612021565b915061242e83612021565b925082820261243c81612021565b915082820484148315176124535761245261226b565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612490602083611f17565b915061249b8261245a565b602082019050919050565b600060208201905081810360008301526124bf81612483565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006124fc601783611f17565b9150612507826124c6565b602082019050919050565b6000602082019050818103600083015261252b816124ef565b9050919050565b6000819050919050565b6000819050919050565b600061256161255c61255784612532565b61253c565b612021565b9050919050565b61257181612546565b82525050565b600060c08201905061258c6000830189612201565b61259960208301886120cd565b6125a66040830187612568565b6125b36060830186612568565b6125c06080830185612201565b6125cd60a08301846120cd565b979650505050505050565b6000815190506125e78161202b565b92915050565b60008060006060848603121561260657612605611fbe565b5b6000612614868287016125d8565b9350506020612625868287016125d8565b9250506040612636868287016125d8565b9150509250925092565b60006040820190506126556000830185612201565b61266260208301846120cd565b9392505050565b61267281612097565b811461267d57600080fd5b50565b60008151905061268f81612669565b92915050565b6000602082840312156126ab576126aa611fbe565b5b60006126b984828501612680565b91505092915050565b7f796f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b60006126f8601583611f17565b9150612703826126c2565b602082019050919050565b60006020820190508181036000830152612727816126eb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061278a602483611f17565b91506127958261272e565b604082019050919050565b600060208201905081810360008301526127b98161277d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061281c602283611f17565b9150612827826127c0565b604082019050919050565b6000602082019050818103600083015261284b8161280f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006128ae602583611f17565b91506128b982612852565b604082019050919050565b600060208201905081810360008301526128dd816128a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612940602383611f17565b915061294b826128e4565b604082019050919050565b6000602082019050818103600083015261296f81612933565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006129d2602983611f17565b91506129dd82612976565b604082019050919050565b60006020820190508181036000830152612a01816129c5565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000612a8a604983611f17565b9150612a9582612a08565b606082019050919050565b60006020820190508181036000830152612ab981612a7d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612af6601983611f17565b9150612b0182612ac0565b602082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b6000612b3782612021565b9150612b4283612021565b9250828201905080821115612b5a57612b5961226b565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612b96601a83611f17565b9150612ba182612b60565b602082019050919050565b60006020820190508181036000830152612bc581612b89565b9050919050565b6000612bd782612021565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c0957612c0861226b565b5b600182019050919050565b6000612c1f82612021565b9150612c2a83612021565b9250828203905081811115612c4257612c4161226b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612cb581611ff5565b92915050565b600060208284031215612cd157612cd0611fbe565b5b6000612cdf84828501612ca6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d1d81611fe3565b82525050565b6000612d2f8383612d14565b60208301905092915050565b6000602082019050919050565b6000612d5382612ce8565b612d5d8185612cf3565b9350612d6883612d04565b8060005b83811015612d99578151612d808882612d23565b9750612d8b83612d3b565b925050600181019050612d6c565b5085935050505092915050565b600060a082019050612dbb60008301886120cd565b612dc86020830187612568565b8181036040830152612dda8186612d48565b9050612de96060830185612201565b612df660808301846120cd565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e3a82612021565b9150612e4583612021565b925082612e5557612e54612e00565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ebc602183611f17565b9150612ec782612e60565b604082019050919050565b60006020820190508181036000830152612eeb81612eaf565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612f28601b83611f17565b9150612f3382612ef2565b602082019050919050565b60006020820190508181036000830152612f5781612f1b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b1f843552a0aad834da7bd2bd4c894d1fa1d6f5f687739f089b38dd6933edb4564736f6c63430008110033

Deployed Bytecode Sourcemap

3629:8370:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5661:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6494:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4748:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5938:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6663:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5847:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10639:625;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11692:304;;;;;;;;;;;;;:::i;:::-;;6041:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2710:148;;;;;;;;;;;;;:::i;:::-;;10335:196;;;;;;;;;;;;;:::i;:::-;;4562:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2496:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4624:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5752:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6168:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4686:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3975:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11276:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6343:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11547:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5661:83;5698:13;5731:5;;;;;;;;;;;;;;;;;5724:12;;5661:83;:::o;6494:161::-;6569:4;6586:39;6595:12;:10;:12::i;:::-;6609:7;6618:6;6586:8;:39::i;:::-;6643:4;6636:11;;6494:161;;;;:::o;4748:50::-;;;;:::o;5938:95::-;5991:7;4377:1;4432:2;:13;;;;:::i;:::-;4420:9;:25;;;;:::i;:::-;6011:14;;5938:95;:::o;6663:313::-;6761:4;6778:36;6788:6;6796:9;6807:6;6778:9;:36::i;:::-;6825:121;6834:6;6842:12;:10;:12::i;:::-;6856:89;6894:6;6856:89;;;;;;;;;;;;;;;;;:11;:19;6868:6;6856:19;;;;;;;;;;;;;;;:33;6876:12;:10;:12::i;:::-;6856:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6825:8;:121::i;:::-;6964:4;6957:11;;6663:313;;;;;:::o;5847:83::-;5888:5;4377:1;5906:16;;5847:83;:::o;10639:625::-;2633:12;:10;:12::i;:::-;2623:22;;:6;;;;;;;;;;:22;;;2615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10763:11:::1;;;;;;;;;;;10762:12;10754:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10812:58;10829:4;10844:15;;;;;;;;;;;4377:1;4432:2;:13;;;;:::i;:::-;4420:9;:25;;;;:::i;:::-;10812:8;:58::i;:::-;10881:15;;;;;;;;;;;:31;;;10920:21;10951:4;10957:24;10975:4;10957:9;:24::i;:::-;10982:1;10984::::0;10986:7:::1;:5;:7::i;:::-;10994:15;10881:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11035:4;11021:11;;:18;;;;;;;;;;;;;;;;;;11064:4;11050:11;;:18;;;;;;;;;;;;;;;;;;11094:11;11079:14;:26;;;;11132:12;11116:15;:28;;;;11165:9;11155;:19;;;;11192:13;;;;;;;;;;;11185:29;;;11223:15;;;;;;;;;;;11241:14;11185:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10639:625:::0;;;:::o;11692:304::-;11734:20;11755:24;11773:4;11755:9;:24::i;:::-;11734:45;;11806:1;11793:12;:14;11790:73;;;11821:30;11838:12;11821:16;:30::i;:::-;11790:73;11873:18;11892:21;11873:40;;11938:1;11927:10;:12;11924:65;;;11953:24;11966:10;11953:12;:24::i;:::-;11924:65;11723:273;;11692:304::o;6041:119::-;6107:7;6134:9;:18;6144:7;6134:18;;;;;;;;;;;;;;;;6127:25;;6041:119;;;:::o;2710:148::-;2633:12;:10;:12::i;:::-;2623:22;;:6;;;;;;;;;;:22;;;2615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2817:1:::1;2780:40;;2801:6;::::0;::::1;;;;;;;;2780:40;;;;;;;;;;;;2848:1;2831:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2710:148::o:0;10335:196::-;2633:12;:10;:12::i;:::-;2623:22;;:6;;;;;;;;;;:22;;;2615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4377:1:::1;4432:2;:13;;;;:::i;:::-;4420:9;:25;;;;:::i;:::-;10388:12;:22;;;;4377:1;4432:2;:13;;;;:::i;:::-;4420:9;:25;;;;:::i;:::-;10421:14;:22;;;;10475:5;10454:20;;:26;;;;;;;;;;;;;;;;;;10496:27;4377:1;4432:2;:13;;;;:::i;:::-;4420:9;:25;;;;:::i;:::-;10496:27;;;;;;:::i;:::-;;;;;;;;10335:196::o:0;4562:55::-;;;;:::o;2496:79::-;2534:7;2561:6;;;;;;;;;;;2554:13;;2496:79;:::o;4624:55::-;;;;:::o;5752:87::-;5791:13;5824:7;;;;;;;;;;;;;;;;;5817:14;;5752:87;:::o;6168:167::-;6246:4;6263:42;6273:12;:10;:12::i;:::-;6287:9;6298:6;6263:9;:42::i;:::-;6323:4;6316:11;;6168:167;;;;:::o;4686:55::-;;;;:::o;3975:39::-;;;;;;;;;;;;;:::o;11276:263::-;11397:7;:5;:7::i;:::-;11383:21;;:12;:10;:12::i;:::-;:21;;;11375:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11454:10;11439:14;:25;;;;11489:11;11473:15;:27;;;;11519:12;11509:9;:22;;;;11276:263;;;:::o;6343:143::-;6424:7;6451:11;:18;6463:5;6451:18;;;;;;;;;;;;;;;:27;6470:7;6451:27;;;;;;;;;;;;;;;;6444:34;;6343:143;;;;:::o;11547:100::-;11599:7;11626:13;;;;;;;;;;;11619:20;;11547:100;:::o;251:98::-;304:7;331:10;324:17;;251:98;:::o;6984:335::-;7094:1;7077:19;;:5;:19;;;7069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7175:1;7156:21;;:7;:21;;;7148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7257:6;7227:11;:18;7239:5;7227:18;;;;;;;;;;;;;;;:27;7246:7;7227:27;;;;;;;;;;;;;;;:36;;;;7295:7;7279:32;;7288:5;7279:32;;;7304:6;7279:32;;;;;;:::i;:::-;;;;;;;;6984:335;;;:::o;7327:2401::-;7431:1;7415:18;;:4;:18;;;7407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7508:1;7494:16;;:2;:16;;;7486:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7578:1;7569:6;:10;7561:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7636:17;7688:7;:5;:7::i;:::-;7680:15;;:4;:15;;;;:32;;;;;7705:7;:5;:7::i;:::-;7699:13;;:2;:13;;;;7680:32;7676:1696;;;7741:73;7810:3;7741:64;7763:15;;7753:9;;:25;7752:52;;7790:14;;7752:52;;;7780:9;;7752:52;7741:6;:10;;:64;;;;:::i;:::-;:68;;:73;;;;:::i;:::-;7729:85;;7835:20;;;;;;;;;;;7831:508;;;7896:15;;;;;;;;;;;7882:30;;:2;:30;;;;:62;;;;;7930:13;;;;;;;;;;;7916:28;;:2;:28;;;;7882:62;7878:444;;;8080:12;8007:28;:39;8036:9;8007:39;;;;;;;;;;;;;;;;:85;7971:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8288:12;8246:28;:39;8275:9;8246:39;;;;;;;;;;;;;;;:54;;;;7878:444;7831:508;8367:13;;;;;;;;;;;8359:21;;:4;:21;;;:55;;;;;8398:15;;;;;;;;;;;8384:30;;:2;:30;;;;8359:55;:83;;;;;8420:18;:22;8439:2;8420:22;;;;;;;;;;;;;;;;;;;;;;;;;8418:24;8359:83;8355:313;;;8482:12;;8472:6;:22;;8464:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8577:14;;8567:6;8551:13;8561:2;8551:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8543:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8641:9;;:11;;;;;;;;;:::i;:::-;;;;;;8355:313;8693:13;;;;;;;;;;;8687:19;;:2;:19;;;:43;;;;;8725:4;8710:20;;:4;:20;;;;8687:43;8684:170;;;8763:75;8834:3;8763:66;8785:16;;8775:9;;:26;8774:54;;8813:15;;8774:54;;;8803:9;;8774:54;8763:6;:10;;:66;;;;:::i;:::-;:70;;:75;;;;:::i;:::-;8751:87;;8684:170;8870:28;8901:24;8919:4;8901:9;:24::i;:::-;8870:55;;8945:6;;;;;;;;;;;8944:7;:32;;;;;8963:13;;;;;;;;;;;8955:21;;:2;:21;;;8944:32;:47;;;;;8980:11;;;;;;;;;;;8944:47;:89;;;;;9016:17;;8995:20;:38;8944:89;:121;;;;;9047:18;;9037:9;;:28;8944:121;8940:421;;;9086:67;9103:49;9107:6;9114:37;9118:20;9139:11;;9114:3;:37::i;:::-;9103:3;:49::i;:::-;9086:16;:67::i;:::-;9172:26;9201:21;9172:50;;9265:1;9244:18;:22;9241:105;;;9291:35;9304:21;9291:12;:35::i;:::-;9241:105;9067:294;8940:421;7714:1658;7676:1696;9400:27;9420:6;9400:9;:15;9410:4;9400:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9384:9;:15;9394:4;9384:15;;;;;;;;;;;;;;;:43;;;;9452:40;9470:21;9481:9;9470:6;:10;;:21;;;;:::i;:::-;9452:9;:13;9462:2;9452:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9438:9;:13;9448:2;9438:13;;;;;;;;;;;;;;;:54;;;;9523:2;9508:41;;9517:4;9508:41;;;9527:21;9538:9;9527:6;:10;;:21;;;;:::i;:::-;9508:41;;;;;;:::i;:::-;;;;;;;;9573:1;9563:9;:11;9560:161;;;9613:39;9642:9;9613;:24;9631:4;9613:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9588:9;:24;9606:4;9588:24;;;;;;;;;;;;;;;:64;;;;9693:4;9670:39;;9679:4;9670:39;;;9699:9;9670:39;;;;;;:::i;:::-;;;;;;;;9560:161;7396:2332;7327:2401;;;:::o;1388:190::-;1474:7;1507:1;1502;:6;;1510:12;1494:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1534:9;1550:1;1546;:5;;;;:::i;:::-;1534:17;;1569:1;1562:8;;;1388:190;;;;;:::o;9844:483::-;5156:4;5147:6;;:13;;;;;;;;;;;;;;;;;;9922:21:::1;9960:1;9946:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9922:40;;9991:4;9973;9978:1;9973:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10017:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10007:4;10012:1;10007:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10050:62;10067:4;10082:15;;;;;;;;;;;10100:11;10050:8;:62::i;:::-;10123:15;;;;;;;;;;;:66;;;10204:11;10230:1;10246:4;10273;10293:15;10123:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9911:416;5192:5:::0;5183:6;;:14;;;;;;;;;;;;;;;;;;9844:483;:::o;10539:92::-;10596:10;;;;;;;;;;;:19;;:27;10616:6;10596:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10539:92;:::o;1586:246::-;1644:7;1673:1;1668;:6;1664:47;;1698:1;1691:8;;;;1664:47;1721:9;1737:1;1733;:5;;;;:::i;:::-;1721:17;;1766:1;1761;1757;:5;;;;:::i;:::-;:10;1749:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1823:1;1816:8;;;1586:246;;;;;:::o;1840:132::-;1898:7;1925:39;1929:1;1932;1925:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1918:46;;1840:132;;;;:::o;9738:98::-;9795:7;9822:1;9820;:3;9819:9;;9827:1;9819:9;;;9825:1;9819:9;9812:16;;9738:98;;;;:::o;1244:136::-;1302:7;1329:43;1333:1;1336;1329:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1322:50;;1244:136;;;;:::o;1057:179::-;1115:7;1135:9;1151:1;1147;:5;;;;:::i;:::-;1135:17;;1176:1;1171;:6;;1163:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1227:1;1220:8;;;1057:179;;;;:::o;1980:189::-;2066:7;2098:1;2094;:5;2101:12;2086:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2125:9;2141:1;2137;:5;;;;:::i;:::-;2125:17;;2160:1;2153:8;;;1980:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:619::-;4930:6;4938;4946;4995:2;4983:9;4974:7;4970:23;4966:32;4963:119;;;5001:79;;:::i;:::-;4963:119;5121:1;5146:53;5191:7;5182:6;5171:9;5167:22;5146:53;:::i;:::-;5136:63;;5092:117;5248:2;5274:53;5319:7;5310:6;5299:9;5295:22;5274:53;:::i;:::-;5264:63;;5219:118;5376:2;5402:53;5447:7;5438:6;5427:9;5423:22;5402:53;:::i;:::-;5392:63;;5347:118;4853:619;;;;;:::o;5478:329::-;5537:6;5586:2;5574:9;5565:7;5561:23;5557:32;5554:119;;;5592:79;;:::i;:::-;5554:119;5712:1;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5683:117;5478:329;;;;:::o;5813:118::-;5900:24;5918:5;5900:24;:::i;:::-;5895:3;5888:37;5813:118;;:::o;5937:222::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:71;6149:1;6138:9;6134:17;6125:6;6081:71;:::i;:::-;5937:222;;;;:::o;6165:474::-;6233:6;6241;6290:2;6278:9;6269:7;6265:23;6261:32;6258:119;;;6296:79;;:::i;:::-;6258:119;6416:1;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6387:117;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6165:474;;;;;:::o;6645:180::-;6693:77;6690:1;6683:88;6790:4;6787:1;6780:15;6814:4;6811:1;6804:15;6831:102;6873:8;6920:5;6917:1;6913:13;6892:34;;6831:102;;;:::o;6939:848::-;7000:5;7007:4;7031:6;7022:15;;7055:5;7046:14;;7069:712;7090:1;7080:8;7077:15;7069:712;;;7185:4;7180:3;7176:14;7170:4;7167:24;7164:50;;;7194:18;;:::i;:::-;7164:50;7244:1;7234:8;7230:16;7227:451;;;7659:4;7652:5;7648:16;7639:25;;7227:451;7709:4;7703;7699:15;7691:23;;7739:32;7762:8;7739:32;:::i;:::-;7727:44;;7069:712;;;6939:848;;;;;;;:::o;7793:1073::-;7847:5;8038:8;8028:40;;8059:1;8050:10;;8061:5;;8028:40;8087:4;8077:36;;8104:1;8095:10;;8106:5;;8077:36;8173:4;8221:1;8216:27;;;;8257:1;8252:191;;;;8166:277;;8216:27;8234:1;8225:10;;8236:5;;;8252:191;8297:3;8287:8;8284:17;8281:43;;;8304:18;;:::i;:::-;8281:43;8353:8;8350:1;8346:16;8337:25;;8388:3;8381:5;8378:14;8375:40;;;8395:18;;:::i;:::-;8375:40;8428:5;;;8166:277;;8552:2;8542:8;8539:16;8533:3;8527:4;8524:13;8520:36;8502:2;8492:8;8489:16;8484:2;8478:4;8475:12;8471:35;8455:111;8452:246;;;8608:8;8602:4;8598:19;8589:28;;8643:3;8636:5;8633:14;8630:40;;;8650:18;;:::i;:::-;8630:40;8683:5;;8452:246;8723:42;8761:3;8751:8;8745:4;8742:1;8723:42;:::i;:::-;8708:57;;;;8797:4;8792:3;8788:14;8781:5;8778:25;8775:51;;;8806:18;;:::i;:::-;8775:51;8855:4;8848:5;8844:16;8835:25;;7793:1073;;;;;;:::o;8872:281::-;8930:5;8954:23;8972:4;8954:23;:::i;:::-;8946:31;;8998:25;9014:8;8998:25;:::i;:::-;8986:37;;9042:104;9079:66;9069:8;9063:4;9042:104;:::i;:::-;9033:113;;8872:281;;;;:::o;9159:410::-;9199:7;9222:20;9240:1;9222:20;:::i;:::-;9217:25;;9256:20;9274:1;9256:20;:::i;:::-;9251:25;;9311:1;9308;9304:9;9333:30;9351:11;9333:30;:::i;:::-;9322:41;;9512:1;9503:7;9499:15;9496:1;9493:22;9473:1;9466:9;9446:83;9423:139;;9542:18;;:::i;:::-;9423:139;9207:362;9159:410;;;;:::o;9575:182::-;9715:34;9711:1;9703:6;9699:14;9692:58;9575:182;:::o;9763:366::-;9905:3;9926:67;9990:2;9985:3;9926:67;:::i;:::-;9919:74;;10002:93;10091:3;10002:93;:::i;:::-;10120:2;10115:3;10111:12;10104:19;;9763:366;;;:::o;10135:419::-;10301:4;10339:2;10328:9;10324:18;10316:26;;10388:9;10382:4;10378:20;10374:1;10363:9;10359:17;10352:47;10416:131;10542:4;10416:131;:::i;:::-;10408:139;;10135:419;;;:::o;10560:173::-;10700:25;10696:1;10688:6;10684:14;10677:49;10560:173;:::o;10739:366::-;10881:3;10902:67;10966:2;10961:3;10902:67;:::i;:::-;10895:74;;10978:93;11067:3;10978:93;:::i;:::-;11096:2;11091:3;11087:12;11080:19;;10739:366;;;:::o;11111:419::-;11277:4;11315:2;11304:9;11300:18;11292:26;;11364:9;11358:4;11354:20;11350:1;11339:9;11335:17;11328:47;11392:131;11518:4;11392:131;:::i;:::-;11384:139;;11111:419;;;:::o;11536:85::-;11581:7;11610:5;11599:16;;11536:85;;;:::o;11627:60::-;11655:3;11676:5;11669:12;;11627:60;;;:::o;11693:158::-;11751:9;11784:61;11802:42;11811:32;11837:5;11811:32;:::i;:::-;11802:42;:::i;:::-;11784:61;:::i;:::-;11771:74;;11693:158;;;:::o;11857:147::-;11952:45;11991:5;11952:45;:::i;:::-;11947:3;11940:58;11857:147;;:::o;12010:807::-;12259:4;12297:3;12286:9;12282:19;12274:27;;12311:71;12379:1;12368:9;12364:17;12355:6;12311:71;:::i;:::-;12392:72;12460:2;12449:9;12445:18;12436:6;12392:72;:::i;:::-;12474:80;12550:2;12539:9;12535:18;12526:6;12474:80;:::i;:::-;12564;12640:2;12629:9;12625:18;12616:6;12564:80;:::i;:::-;12654:73;12722:3;12711:9;12707:19;12698:6;12654:73;:::i;:::-;12737;12805:3;12794:9;12790:19;12781:6;12737:73;:::i;:::-;12010:807;;;;;;;;;:::o;12823:143::-;12880:5;12911:6;12905:13;12896:22;;12927:33;12954:5;12927:33;:::i;:::-;12823:143;;;;:::o;12972:663::-;13060:6;13068;13076;13125:2;13113:9;13104:7;13100:23;13096:32;13093:119;;;13131:79;;:::i;:::-;13093:119;13251:1;13276:64;13332:7;13323:6;13312:9;13308:22;13276:64;:::i;:::-;13266:74;;13222:128;13389:2;13415:64;13471:7;13462:6;13451:9;13447:22;13415:64;:::i;:::-;13405:74;;13360:129;13528:2;13554:64;13610:7;13601:6;13590:9;13586:22;13554:64;:::i;:::-;13544:74;;13499:129;12972:663;;;;;:::o;13641:332::-;13762:4;13800:2;13789:9;13785:18;13777:26;;13813:71;13881:1;13870:9;13866:17;13857:6;13813:71;:::i;:::-;13894:72;13962:2;13951:9;13947:18;13938:6;13894:72;:::i;:::-;13641:332;;;;;:::o;13979:116::-;14049:21;14064:5;14049:21;:::i;:::-;14042:5;14039:32;14029:60;;14085:1;14082;14075:12;14029:60;13979:116;:::o;14101:137::-;14155:5;14186:6;14180:13;14171:22;;14202:30;14226:5;14202:30;:::i;:::-;14101:137;;;;:::o;14244:345::-;14311:6;14360:2;14348:9;14339:7;14335:23;14331:32;14328:119;;;14366:79;;:::i;:::-;14328:119;14486:1;14511:61;14564:7;14555:6;14544:9;14540:22;14511:61;:::i;:::-;14501:71;;14457:125;14244:345;;;;:::o;14595:171::-;14735:23;14731:1;14723:6;14719:14;14712:47;14595:171;:::o;14772:366::-;14914:3;14935:67;14999:2;14994:3;14935:67;:::i;:::-;14928:74;;15011:93;15100:3;15011:93;:::i;:::-;15129:2;15124:3;15120:12;15113:19;;14772:366;;;:::o;15144:419::-;15310:4;15348:2;15337:9;15333:18;15325:26;;15397:9;15391:4;15387:20;15383:1;15372:9;15368:17;15361:47;15425:131;15551:4;15425:131;:::i;:::-;15417:139;;15144:419;;;:::o;15569:223::-;15709:34;15705:1;15697:6;15693:14;15686:58;15778:6;15773:2;15765:6;15761:15;15754:31;15569:223;:::o;15798:366::-;15940:3;15961:67;16025:2;16020:3;15961:67;:::i;:::-;15954:74;;16037:93;16126:3;16037:93;:::i;:::-;16155:2;16150:3;16146:12;16139:19;;15798:366;;;:::o;16170:419::-;16336:4;16374:2;16363:9;16359:18;16351:26;;16423:9;16417:4;16413:20;16409:1;16398:9;16394:17;16387:47;16451:131;16577:4;16451:131;:::i;:::-;16443:139;;16170:419;;;:::o;16595:221::-;16735:34;16731:1;16723:6;16719:14;16712:58;16804:4;16799:2;16791:6;16787:15;16780:29;16595:221;:::o;16822:366::-;16964:3;16985:67;17049:2;17044:3;16985:67;:::i;:::-;16978:74;;17061:93;17150:3;17061:93;:::i;:::-;17179:2;17174:3;17170:12;17163:19;;16822:366;;;:::o;17194:419::-;17360:4;17398:2;17387:9;17383:18;17375:26;;17447:9;17441:4;17437:20;17433:1;17422:9;17418:17;17411:47;17475:131;17601:4;17475:131;:::i;:::-;17467:139;;17194:419;;;:::o;17619:224::-;17759:34;17755:1;17747:6;17743:14;17736:58;17828:7;17823:2;17815:6;17811:15;17804:32;17619:224;:::o;17849:366::-;17991:3;18012:67;18076:2;18071:3;18012:67;:::i;:::-;18005:74;;18088:93;18177:3;18088:93;:::i;:::-;18206:2;18201:3;18197:12;18190:19;;17849:366;;;:::o;18221:419::-;18387:4;18425:2;18414:9;18410:18;18402:26;;18474:9;18468:4;18464:20;18460:1;18449:9;18445:17;18438:47;18502:131;18628:4;18502:131;:::i;:::-;18494:139;;18221:419;;;:::o;18646:222::-;18786:34;18782:1;18774:6;18770:14;18763:58;18855:5;18850:2;18842:6;18838:15;18831:30;18646:222;:::o;18874:366::-;19016:3;19037:67;19101:2;19096:3;19037:67;:::i;:::-;19030:74;;19113:93;19202:3;19113:93;:::i;:::-;19231:2;19226:3;19222:12;19215:19;;18874:366;;;:::o;19246:419::-;19412:4;19450:2;19439:9;19435:18;19427:26;;19499:9;19493:4;19489:20;19485:1;19474:9;19470:17;19463:47;19527:131;19653:4;19527:131;:::i;:::-;19519:139;;19246:419;;;:::o;19671:228::-;19811:34;19807:1;19799:6;19795:14;19788:58;19880:11;19875:2;19867:6;19863:15;19856:36;19671:228;:::o;19905:366::-;20047:3;20068:67;20132:2;20127:3;20068:67;:::i;:::-;20061:74;;20144:93;20233:3;20144:93;:::i;:::-;20262:2;20257:3;20253:12;20246:19;;19905:366;;;:::o;20277:419::-;20443:4;20481:2;20470:9;20466:18;20458:26;;20530:9;20524:4;20520:20;20516:1;20505:9;20501:17;20494:47;20558:131;20684:4;20558:131;:::i;:::-;20550:139;;20277:419;;;:::o;20702:297::-;20842:34;20838:1;20830:6;20826:14;20819:58;20911:34;20906:2;20898:6;20894:15;20887:59;20980:11;20975:2;20967:6;20963:15;20956:36;20702:297;:::o;21005:366::-;21147:3;21168:67;21232:2;21227:3;21168:67;:::i;:::-;21161:74;;21244:93;21333:3;21244:93;:::i;:::-;21362:2;21357:3;21353:12;21346:19;;21005:366;;;:::o;21377:419::-;21543:4;21581:2;21570:9;21566:18;21558:26;;21630:9;21624:4;21620:20;21616:1;21605:9;21601:17;21594:47;21658:131;21784:4;21658:131;:::i;:::-;21650:139;;21377:419;;;:::o;21802:175::-;21942:27;21938:1;21930:6;21926:14;21919:51;21802:175;:::o;21983:366::-;22125:3;22146:67;22210:2;22205:3;22146:67;:::i;:::-;22139:74;;22222:93;22311:3;22222:93;:::i;:::-;22340:2;22335:3;22331:12;22324:19;;21983:366;;;:::o;22355:419::-;22521:4;22559:2;22548:9;22544:18;22536:26;;22608:9;22602:4;22598:20;22594:1;22583:9;22579:17;22572:47;22636:131;22762:4;22636:131;:::i;:::-;22628:139;;22355:419;;;:::o;22780:191::-;22820:3;22839:20;22857:1;22839:20;:::i;:::-;22834:25;;22873:20;22891:1;22873:20;:::i;:::-;22868:25;;22916:1;22913;22909:9;22902:16;;22937:3;22934:1;22931:10;22928:36;;;22944:18;;:::i;:::-;22928:36;22780:191;;;;:::o;22977:176::-;23117:28;23113:1;23105:6;23101:14;23094:52;22977:176;:::o;23159:366::-;23301:3;23322:67;23386:2;23381:3;23322:67;:::i;:::-;23315:74;;23398:93;23487:3;23398:93;:::i;:::-;23516:2;23511:3;23507:12;23500:19;;23159:366;;;:::o;23531:419::-;23697:4;23735:2;23724:9;23720:18;23712:26;;23784:9;23778:4;23774:20;23770:1;23759:9;23755:17;23748:47;23812:131;23938:4;23812:131;:::i;:::-;23804:139;;23531:419;;;:::o;23956:233::-;23995:3;24018:24;24036:5;24018:24;:::i;:::-;24009:33;;24064:66;24057:5;24054:77;24051:103;;24134:18;;:::i;:::-;24051:103;24181:1;24174:5;24170:13;24163:20;;23956:233;;;:::o;24195:194::-;24235:4;24255:20;24273:1;24255:20;:::i;:::-;24250:25;;24289:20;24307:1;24289:20;:::i;:::-;24284:25;;24333:1;24330;24326:9;24318:17;;24357:1;24351:4;24348:11;24345:37;;;24362:18;;:::i;:::-;24345:37;24195:194;;;;:::o;24395:180::-;24443:77;24440:1;24433:88;24540:4;24537:1;24530:15;24564:4;24561:1;24554:15;24581:180;24629:77;24626:1;24619:88;24726:4;24723:1;24716:15;24750:4;24747:1;24740:15;24767:143;24824:5;24855:6;24849:13;24840:22;;24871:33;24898:5;24871:33;:::i;:::-;24767:143;;;;:::o;24916:351::-;24986:6;25035:2;25023:9;25014:7;25010:23;25006:32;25003:119;;;25041:79;;:::i;:::-;25003:119;25161:1;25186:64;25242:7;25233:6;25222:9;25218:22;25186:64;:::i;:::-;25176:74;;25132:128;24916:351;;;;:::o;25273:114::-;25340:6;25374:5;25368:12;25358:22;;25273:114;;;:::o;25393:184::-;25492:11;25526:6;25521:3;25514:19;25566:4;25561:3;25557:14;25542:29;;25393:184;;;;:::o;25583:132::-;25650:4;25673:3;25665:11;;25703:4;25698:3;25694:14;25686:22;;25583:132;;;:::o;25721:108::-;25798:24;25816:5;25798:24;:::i;:::-;25793:3;25786:37;25721:108;;:::o;25835:179::-;25904:10;25925:46;25967:3;25959:6;25925:46;:::i;:::-;26003:4;25998:3;25994:14;25980:28;;25835:179;;;;:::o;26020:113::-;26090:4;26122;26117:3;26113:14;26105:22;;26020:113;;;:::o;26169:732::-;26288:3;26317:54;26365:5;26317:54;:::i;:::-;26387:86;26466:6;26461:3;26387:86;:::i;:::-;26380:93;;26497:56;26547:5;26497:56;:::i;:::-;26576:7;26607:1;26592:284;26617:6;26614:1;26611:13;26592:284;;;26693:6;26687:13;26720:63;26779:3;26764:13;26720:63;:::i;:::-;26713:70;;26806:60;26859:6;26806:60;:::i;:::-;26796:70;;26652:224;26639:1;26636;26632:9;26627:14;;26592:284;;;26596:14;26892:3;26885:10;;26293:608;;;26169:732;;;;:::o;26907:831::-;27170:4;27208:3;27197:9;27193:19;27185:27;;27222:71;27290:1;27279:9;27275:17;27266:6;27222:71;:::i;:::-;27303:80;27379:2;27368:9;27364:18;27355:6;27303:80;:::i;:::-;27430:9;27424:4;27420:20;27415:2;27404:9;27400:18;27393:48;27458:108;27561:4;27552:6;27458:108;:::i;:::-;27450:116;;27576:72;27644:2;27633:9;27629:18;27620:6;27576:72;:::i;:::-;27658:73;27726:3;27715:9;27711:19;27702:6;27658:73;:::i;:::-;26907:831;;;;;;;;:::o;27744:180::-;27792:77;27789:1;27782:88;27889:4;27886:1;27879:15;27913:4;27910:1;27903:15;27930:185;27970:1;27987:20;28005:1;27987:20;:::i;:::-;27982:25;;28021:20;28039:1;28021:20;:::i;:::-;28016:25;;28060:1;28050:35;;28065:18;;:::i;:::-;28050:35;28107:1;28104;28100:9;28095:14;;27930:185;;;;:::o;28121:220::-;28261:34;28257:1;28249:6;28245:14;28238:58;28330:3;28325:2;28317:6;28313:15;28306:28;28121:220;:::o;28347:366::-;28489:3;28510:67;28574:2;28569:3;28510:67;:::i;:::-;28503:74;;28586:93;28675:3;28586:93;:::i;:::-;28704:2;28699:3;28695:12;28688:19;;28347:366;;;:::o;28719:419::-;28885:4;28923:2;28912:9;28908:18;28900:26;;28972:9;28966:4;28962:20;28958:1;28947:9;28943:17;28936:47;29000:131;29126:4;29000:131;:::i;:::-;28992:139;;28719:419;;;:::o;29144:177::-;29284:29;29280:1;29272:6;29268:14;29261:53;29144:177;:::o;29327:366::-;29469:3;29490:67;29554:2;29549:3;29490:67;:::i;:::-;29483:74;;29566:93;29655:3;29566:93;:::i;:::-;29684:2;29679:3;29675:12;29668:19;;29327:366;;;:::o;29699:419::-;29865:4;29903:2;29892:9;29888:18;29880:26;;29952:9;29946:4;29942:20;29938:1;29927:9;29923:17;29916:47;29980:131;30106:4;29980:131;:::i;:::-;29972:139;;29699:419;;;:::o

Swarm Source

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