ETH Price: $2,679.04 (-3.33%)

Token

Stoner (STONER)
 

Overview

Max Total Supply

420,690,000,000,000 STONER

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: STONER 9
Balance
409,955,228,705,566.694910292 STONER

Value
$0.00
0xee9dbee75f2c05dd941712cbae6af0d9a488d61c
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:
Stoner

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
https://t.me/stoner_erc20
https://x.com/stoner_erc20
https://stonercoin.meme
*/

pragma solidity 0.8.25;

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

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

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 Stoner 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 => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=250;
    uint256 private _midBuyTax=150;
    uint256 private _initialSellTax=250;
    uint256 private _midSellTax=150;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint256 private _midBuyTaxAt=40;
    uint256 private _reduceBuyTaxAt=10;

    uint256 private _midSellTaxAt=40;
    uint256 private _reduceSellTaxAt=10;
    uint256 private _preventSwapBefore=17;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000000 * 10**_decimals;
    string private constant _name = unicode"Stoner";
    string private constant _symbol = unicode"STONER";
    uint256 public _maxTxAmount =   4206900000000 * 10**_decimals;
    uint256 public _maxWalletSize = 4206900000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 42069000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 990690000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool public saveButton = false;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caTrigger = true;

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

    constructor () {

        _taxWallet = payable(0x972b97174F8256AbE2A3DbD9D5Db7d40fD01f913);
        _balances[_msgSender()] = _tTotal;
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = true;
        isExcludedFromFee[_taxWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _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 setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

    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)? _finalBuyTax: ((_buyCount> _midBuyTaxAt)? _midBuyTax: _initialBuyTax)).div(1000);

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

                if (firstBlock + 1  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (!marketPair[to] && ! isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(marketPair[to] && from!= address(this) ){
                taxAmount = amount.mul((_buyCount> _reduceSellTaxAt)? _finalSellTax: ((_buyCount> _midSellTaxAt)? _midSellTax: _initialSellTax)).div(1000);
            }

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caTrigger && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount <2, "Only 2 CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

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

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


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

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 enableSave(bool _status) external onlyOwner {
        saveButton = _status;
    }

    function excludeAddress(address addr, bool exempt) external onlyOwner {
        isExcludedFromFee[addr] = exempt;
    }

    function triggerStatus(bool _status) external onlyOwner {
        caTrigger = _status;
    }

    function saveETH() public {
        require(saveButton || tradingOpen);
        payable(_taxWallet).transfer(address(this).balance);
    }

    function saveERC20Token(address _tokenAddr, uint _amount) public {
        require(saveButton || tradingOpen);
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }
 
    function manualTrigger() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

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

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = true;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

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":"caTrigger","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableSave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"excludeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveButton","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"saveERC20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"triggerStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260fa600755609660085560fa6009556096600a555f600b555f600c556028600d55600a600e556028600f55600a601055601180555f6012555f6013555f6014556009600a6100529190610684565b6503d37ec7b50061006391906106ce565b6015556009600a6100749190610684565b6503d37ec7b50061008591906106ce565b6016556009600a6100969190610684565b6409cb81ff406100a691906106ce565b6017556009600a6100b79190610684565b64e6a9b9bc806100c791906106ce565b6018555f601a60146101000a81548160ff0219169083151502179055505f601a60166101000a81548160ff0219169083151502179055505f601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff02191690831515021790555034801561013e575f80fd5b505f61014e6104e560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073972b97174f8256abe2a3dbd9d5db7d40fd01f91360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61024c9190610684565b66017e9d8602b40061025e91906106ce565b60015f61026f6104e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102bf6104ec60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061045d6104e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104b99190610684565b66017e9d8602b4006104cb91906106ce565b6040516104d8919061071e565b60405180910390a3610737565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156105955780860481111561057157610570610513565b5b60018516156105805780820291505b808102905061058e85610540565b9450610555565b94509492505050565b5f826105ad5760019050610668565b816105ba575f9050610668565b81600181146105d057600281146105da57610609565b6001915050610668565b60ff8411156105ec576105eb610513565b5b8360020a91508482111561060357610602610513565b5b50610668565b5060208310610133831016604e8410600b841016171561063e5782820a90508381111561063957610638610513565b5b610668565b61064b848484600161054c565b9250905081840481111561066257610661610513565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61068e8261066f565b915061069983610678565b92506106c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461059e565b905092915050565b5f6106d88261066f565b91506106e38361066f565b92508282026106f18161066f565b9150828204841483151761070857610707610513565b5b5092915050565b6107188161066f565b82525050565b5f6020820190506107315f83018461070f565b92915050565b613c58806107445f395ff3fe6080604052600436106101c5575f3560e01c80637d1db4a5116100f65780639bd6ba1811610094578063c8d464a411610063578063c8d464a4146105c4578063dd62ed3e146105ee578063f2fde38b1461062a578063f5b3c3bf14610652576101cc565b80639bd6ba181461050c578063a5754e1314610534578063a9059cbb1461055e578063bf474bed1461059a576101cc565b80638a8c523c116100d05780638a8c523c146104785780638da5cb5b1461048e5780638f9a55c0146104b857806395d89b41146104e2576101cc565b80637d1db4a514610410578063887875c91461043a578063896f1a9514610462576101cc565b80634464dd361161016357806370a082311161013d57806370a0823114610380578063715018a6146103bc578063751039fc146103d257806377810826146103e8576101cc565b80634464dd361461030657806349bd5a5e1461032e57806353bc13dc14610358576101cc565b80630faee56f1161019f5780630faee56f1461024c57806318160ddd1461027657806323b872dd146102a0578063313ce567146102dc576101cc565b8063022fe1eb146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461068e565b005b3480156101f1575f80fd5b506101fa610725565b6040516102079190612c12565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612cc3565b610762565b6040516102439190612d1b565b60405180910390f35b348015610257575f80fd5b5061026061077f565b60405161026d9190612d43565b60405180910390f35b348015610281575f80fd5b5061028a610785565b6040516102979190612d43565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612d5c565b6107ab565b6040516102d39190612d1b565b60405180910390f35b3480156102e7575f80fd5b506102f061087f565b6040516102fd9190612dc7565b60405180910390f35b348015610311575f80fd5b5061032c60048036038101906103279190612cc3565b610887565b005b348015610339575f80fd5b50610342610957565b60405161034f9190612def565b60405180910390f35b348015610363575f80fd5b5061037e60048036038101906103799190612e08565b61097c565b005b34801561038b575f80fd5b506103a660048036038101906103a19190612e08565b610a68565b6040516103b39190612d43565b60405180910390f35b3480156103c7575f80fd5b506103d0610aae565b005b3480156103dd575f80fd5b506103e6610bfc565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190612e5d565b610d34565b005b34801561041b575f80fd5b50610424610e20565b6040516104319190612d43565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b9190612e9b565b610e26565b005b34801561046d575f80fd5b50610476610ed7565b005b348015610483575f80fd5b5061048c610f6d565b005b348015610499575f80fd5b506104a2611585565b6040516104af9190612def565b60405180910390f35b3480156104c3575f80fd5b506104cc6115ac565b6040516104d99190612d43565b60405180910390f35b3480156104ed575f80fd5b506104f66115b2565b6040516105039190612c12565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190612e9b565b6115ef565b005b34801561053f575f80fd5b506105486116a0565b6040516105559190612d1b565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190612cc3565b6116b3565b6040516105919190612d1b565b60405180910390f35b3480156105a5575f80fd5b506105ae6116d0565b6040516105bb9190612d43565b60405180910390f35b3480156105cf575f80fd5b506105d86116d6565b6040516105e59190612d1b565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ec6565b6116e9565b6040516106219190612d43565b60405180910390f35b348015610635575f80fd5b50610650600480360381019061064b9190612e08565b61176b565b005b34801561065d575f80fd5b5061067860048036038101906106739190612e08565b611928565b6040516106859190612d1b565b60405180910390f35b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ce611945565b73ffffffffffffffffffffffffffffffffffffffff16146106ed575f80fd5b5f6106f730610a68565b90505f81111561070b5761070a8161194c565b5b5f4790505f8111156107215761072081611bb7565b5b5050565b60606040518060400160405280600681526020017f53746f6e65720000000000000000000000000000000000000000000000000000815250905090565b5f61077561076e611945565b8484611c1f565b6001905092915050565b60185481565b5f6009600a6107949190613060565b66017e9d8602b4006107a691906130aa565b905090565b5f6107b7848484611de2565b610874846107c3611945565b61086f85604051806060016040528060288152602001613bfb6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610826611945565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129509092919063ffffffff16565b611c1f565b600190509392505050565b5f6009905090565b601a60149054906101000a900460ff16806108ae5750601a60159054906101000a900460ff165b6108b6575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610912929190613146565b6020604051808303815f875af115801561092e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109529190613181565b505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610984611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a07906131f6565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab6611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b39906131f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c04611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c87906131f6565b60405180910390fd5b6009600a610c9e9190613060565b66017e9d8602b400610cb091906130aa565b6015819055506009600a610cc49190613060565b66017e9d8602b400610cd691906130aa565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d0b9190613060565b66017e9d8602b400610d1d91906130aa565b604051610d2a9190612d43565b60405180910390a1565b610d3c611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf906131f6565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60155481565b610e2e611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906131f6565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1680610efe5750601a60159054906101000a900460ff165b610f06575f80fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f6a573d5f803e3d5ffd5b50565b610f75611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906131f6565b60405180910390fd5b601a60159054906101000a900460ff1615611051576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110489061325e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110f03060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110d99190613060565b66017e9d8602b4006110eb91906130aa565b611c1f565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117e9190613290565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611204573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112289190613290565b6040518363ffffffff1660e01b81526004016112459291906132bb565b6020604051808303815f875af1158015611261573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112859190613290565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113f830610a68565b5f80611402611585565b426040518863ffffffff1660e01b81526004016114249695949392919061331b565b60606040518083038185885af1158015611440573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611465919061338e565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115059291906133de565b6020604051808303815f875af1158015611521573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115459190613181565b506001601a60176101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600681526020017f53544f4e45520000000000000000000000000000000000000000000000000000815250905090565b6115f7611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a906131f6565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1681565b5f6116c66116bf611945565b8484611de2565b6001905092915050565b60175481565b601a60189054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611773611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f6906131f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490613475565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b6001601a60166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561198357611982613493565b5b6040519080825280602002602001820160405280156119b15781602001602082028036833780820191505090505b50905030815f815181106119c8576119c76134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a909190613290565b81600181518110611aa457611aa36134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b0a3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c1f565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611b6c9594939291906135a4565b5f604051808303815f87803b158015611b83575f80fd5b505af1158015611b95573d5f803e3d5ffd5b50505050505f601a60166101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c1b573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061366c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf2906136fa565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dd59190612d43565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790613788565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613816565b60405180910390fd5b5f8111611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef7906138a4565b60405180910390fd5b5f611f09611585565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f775750611f47611585565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126a057611fcd6103e8611fbf600e5460125411611fac57600d5460125411611fa357600754611fa7565b6008545b611fb0565b600b545b856129b290919063ffffffff16565b612a2990919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612072575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120c5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121a85760155482111561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061390c565b60405180910390fd5b6016548261211c85610a68565b612126919061392a565b1115612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215e906139a7565b60405180910390fd5b436001600654612177919061392a565b11156121905761218683612a72565b1561218f575f80fd5b5b60125f8154809291906121a2906139c5565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612246575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a4576016548261225885610a68565b612262919061392a565b11156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a906139a7565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561232657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561237f5761237c6103e861236e6010546012541161235b57600f546012541161235257600954612356565b600a545b61235f565b600c545b856129b290919063ffffffff16565b612a2990919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561241d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561245557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561245e575f90505b5f61246830610a68565b9050601a60189054906101000a900460ff1680156124935750601a60169054906101000a900460ff16155b80156124e5575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124fd5750601a60179054906101000a900460ff165b801561250a575060175481115b80156125195750601154601254115b156125cc57601454431115612530575f6013819055505b600260135410612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256c90613a56565b60405180910390fd5b61259261258d8461258884601854612a83565b612a83565b61194c565b5f4790505f8111156125a8576125a747611bb7565b5b60135f8154809291906125ba906139c5565b9190505550436014819055505061269e565b601a60169054906101000a900460ff1615801561262f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156126475750601a60179054906101000a900460ff165b8015612654575060175481115b80156126635750601154601254115b1561269d576126856126808461267b84601854612a83565b612a83565b61194c565b5f4790505f81111561269b5761269a47611bb7565b5b505b5b505b5f81111561279f576126f88160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9b90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127969190612d43565b60405180910390a35b6127ef8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128926128468284612af890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9b90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129358486612af890919063ffffffff16565b6040516129429190612d43565b60405180910390a350505050565b5f838311158290612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e9190612c12565b60405180910390fd5b505f83856129a59190613a74565b9050809150509392505050565b5f8083036129c2575f9050612a23565b5f82846129cf91906130aa565b90508284826129de9190613ad4565b14612a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1590613b74565b60405180910390fd5b809150505b92915050565b5f612a6a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b41565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a915782612a93565b815b905092915050565b5f808284612aa9919061392a565b905083811015612aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae590613bdc565b60405180910390fd5b8091505092915050565b5f612b3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612950565b905092915050565b5f8083118290612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e9190612c12565b60405180910390fd5b505f8385612b959190613ad4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612be482612ba2565b612bee8185612bac565b9350612bfe818560208601612bbc565b612c0781612bca565b840191505092915050565b5f6020820190508181035f830152612c2a8184612bda565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c5f82612c36565b9050919050565b612c6f81612c55565b8114612c79575f80fd5b50565b5f81359050612c8a81612c66565b92915050565b5f819050919050565b612ca281612c90565b8114612cac575f80fd5b50565b5f81359050612cbd81612c99565b92915050565b5f8060408385031215612cd957612cd8612c32565b5b5f612ce685828601612c7c565b9250506020612cf785828601612caf565b9150509250929050565b5f8115159050919050565b612d1581612d01565b82525050565b5f602082019050612d2e5f830184612d0c565b92915050565b612d3d81612c90565b82525050565b5f602082019050612d565f830184612d34565b92915050565b5f805f60608486031215612d7357612d72612c32565b5b5f612d8086828701612c7c565b9350506020612d9186828701612c7c565b9250506040612da286828701612caf565b9150509250925092565b5f60ff82169050919050565b612dc181612dac565b82525050565b5f602082019050612dda5f830184612db8565b92915050565b612de981612c55565b82525050565b5f602082019050612e025f830184612de0565b92915050565b5f60208284031215612e1d57612e1c612c32565b5b5f612e2a84828501612c7c565b91505092915050565b612e3c81612d01565b8114612e46575f80fd5b50565b5f81359050612e5781612e33565b92915050565b5f8060408385031215612e7357612e72612c32565b5b5f612e8085828601612c7c565b9250506020612e9185828601612e49565b9150509250929050565b5f60208284031215612eb057612eaf612c32565b5b5f612ebd84828501612e49565b91505092915050565b5f8060408385031215612edc57612edb612c32565b5b5f612ee985828601612c7c565b9250506020612efa85828601612c7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f8657808604811115612f6257612f61612f04565b5b6001851615612f715780820291505b8081029050612f7f85612f31565b9450612f46565b94509492505050565b5f82612f9e5760019050613059565b81612fab575f9050613059565b8160018114612fc15760028114612fcb57612ffa565b6001915050613059565b60ff841115612fdd57612fdc612f04565b5b8360020a915084821115612ff457612ff3612f04565b5b50613059565b5060208310610133831016604e8410600b841016171561302f5782820a90508381111561302a57613029612f04565b5b613059565b61303c8484846001612f3d565b9250905081840481111561305357613052612f04565b5b81810290505b9392505050565b5f61306a82612c90565b915061307583612dac565b92506130a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f8f565b905092915050565b5f6130b482612c90565b91506130bf83612c90565b92508282026130cd81612c90565b915082820484148315176130e4576130e3612f04565b5b5092915050565b5f819050919050565b5f61310e61310961310484612c36565b6130eb565b612c36565b9050919050565b5f61311f826130f4565b9050919050565b5f61313082613115565b9050919050565b61314081613126565b82525050565b5f6040820190506131595f830185613137565b6131666020830184612d34565b9392505050565b5f8151905061317b81612e33565b92915050565b5f6020828403121561319657613195612c32565b5b5f6131a38482850161316d565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131e0602083612bac565b91506131eb826131ac565b602082019050919050565b5f6020820190508181035f83015261320d816131d4565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613248601783612bac565b915061325382613214565b602082019050919050565b5f6020820190508181035f8301526132758161323c565b9050919050565b5f8151905061328a81612c66565b92915050565b5f602082840312156132a5576132a4612c32565b5b5f6132b28482850161327c565b91505092915050565b5f6040820190506132ce5f830185612de0565b6132db6020830184612de0565b9392505050565b5f819050919050565b5f6133056133006132fb846132e2565b6130eb565b612c90565b9050919050565b613315816132eb565b82525050565b5f60c08201905061332e5f830189612de0565b61333b6020830188612d34565b613348604083018761330c565b613355606083018661330c565b6133626080830185612de0565b61336f60a0830184612d34565b979650505050505050565b5f8151905061338881612c99565b92915050565b5f805f606084860312156133a5576133a4612c32565b5b5f6133b28682870161337a565b93505060206133c38682870161337a565b92505060406133d48682870161337a565b9150509250925092565b5f6040820190506133f15f830185612de0565b6133fe6020830184612d34565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61345f602683612bac565b915061346a82613405565b604082019050919050565b5f6020820190508181035f83015261348c81613453565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351f81612c55565b82525050565b5f6135308383613516565b60208301905092915050565b5f602082019050919050565b5f613552826134ed565b61355c81856134f7565b935061356783613507565b805f5b8381101561359757815161357e8882613525565b97506135898361353c565b92505060018101905061356a565b5085935050505092915050565b5f60a0820190506135b75f830188612d34565b6135c4602083018761330c565b81810360408301526135d68186613548565b90506135e56060830185612de0565b6135f26080830184612d34565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613656602483612bac565b9150613661826135fc565b604082019050919050565b5f6020820190508181035f8301526136838161364a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136e4602283612bac565b91506136ef8261368a565b604082019050919050565b5f6020820190508181035f830152613711816136d8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613772602583612bac565b915061377d82613718565b604082019050919050565b5f6020820190508181035f83015261379f81613766565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613800602383612bac565b915061380b826137a6565b604082019050919050565b5f6020820190508181035f83015261382d816137f4565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61388e602983612bac565b915061389982613834565b604082019050919050565b5f6020820190508181035f8301526138bb81613882565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6138f6601983612bac565b9150613901826138c2565b602082019050919050565b5f6020820190508181035f830152613923816138ea565b9050919050565b5f61393482612c90565b915061393f83612c90565b925082820190508082111561395757613956612f04565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613991601a83612bac565b915061399c8261395d565b602082019050919050565b5f6020820190508181035f8301526139be81613985565b9050919050565b5f6139cf82612c90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a0157613a00612f04565b5b600182019050919050565b7f4f6e6c7920322043412062616c616e63652073656c6c000000000000000000005f82015250565b5f613a40601683612bac565b9150613a4b82613a0c565b602082019050919050565b5f6020820190508181035f830152613a6d81613a34565b9050919050565b5f613a7e82612c90565b9150613a8983612c90565b9250828203905081811115613aa157613aa0612f04565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ade82612c90565b9150613ae983612c90565b925082613af957613af8613aa7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b5e602183612bac565b9150613b6982613b04565b604082019050919050565b5f6020820190508181035f830152613b8b81613b52565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bc6601b83612bac565b9150613bd182613b92565b602082019050919050565b5f6020820190508181035f830152613bf381613bba565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207eecb7afc4bdd5bea8cb5196b418d13758ac404c0a991fc36823a629244e2cb964736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c80637d1db4a5116100f65780639bd6ba1811610094578063c8d464a411610063578063c8d464a4146105c4578063dd62ed3e146105ee578063f2fde38b1461062a578063f5b3c3bf14610652576101cc565b80639bd6ba181461050c578063a5754e1314610534578063a9059cbb1461055e578063bf474bed1461059a576101cc565b80638a8c523c116100d05780638a8c523c146104785780638da5cb5b1461048e5780638f9a55c0146104b857806395d89b41146104e2576101cc565b80637d1db4a514610410578063887875c91461043a578063896f1a9514610462576101cc565b80634464dd361161016357806370a082311161013d57806370a0823114610380578063715018a6146103bc578063751039fc146103d257806377810826146103e8576101cc565b80634464dd361461030657806349bd5a5e1461032e57806353bc13dc14610358576101cc565b80630faee56f1161019f5780630faee56f1461024c57806318160ddd1461027657806323b872dd146102a0578063313ce567146102dc576101cc565b8063022fe1eb146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461068e565b005b3480156101f1575f80fd5b506101fa610725565b6040516102079190612c12565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612cc3565b610762565b6040516102439190612d1b565b60405180910390f35b348015610257575f80fd5b5061026061077f565b60405161026d9190612d43565b60405180910390f35b348015610281575f80fd5b5061028a610785565b6040516102979190612d43565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612d5c565b6107ab565b6040516102d39190612d1b565b60405180910390f35b3480156102e7575f80fd5b506102f061087f565b6040516102fd9190612dc7565b60405180910390f35b348015610311575f80fd5b5061032c60048036038101906103279190612cc3565b610887565b005b348015610339575f80fd5b50610342610957565b60405161034f9190612def565b60405180910390f35b348015610363575f80fd5b5061037e60048036038101906103799190612e08565b61097c565b005b34801561038b575f80fd5b506103a660048036038101906103a19190612e08565b610a68565b6040516103b39190612d43565b60405180910390f35b3480156103c7575f80fd5b506103d0610aae565b005b3480156103dd575f80fd5b506103e6610bfc565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190612e5d565b610d34565b005b34801561041b575f80fd5b50610424610e20565b6040516104319190612d43565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b9190612e9b565b610e26565b005b34801561046d575f80fd5b50610476610ed7565b005b348015610483575f80fd5b5061048c610f6d565b005b348015610499575f80fd5b506104a2611585565b6040516104af9190612def565b60405180910390f35b3480156104c3575f80fd5b506104cc6115ac565b6040516104d99190612d43565b60405180910390f35b3480156104ed575f80fd5b506104f66115b2565b6040516105039190612c12565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190612e9b565b6115ef565b005b34801561053f575f80fd5b506105486116a0565b6040516105559190612d1b565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190612cc3565b6116b3565b6040516105919190612d1b565b60405180910390f35b3480156105a5575f80fd5b506105ae6116d0565b6040516105bb9190612d43565b60405180910390f35b3480156105cf575f80fd5b506105d86116d6565b6040516105e59190612d1b565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ec6565b6116e9565b6040516106219190612d43565b60405180910390f35b348015610635575f80fd5b50610650600480360381019061064b9190612e08565b61176b565b005b34801561065d575f80fd5b5061067860048036038101906106739190612e08565b611928565b6040516106859190612d1b565b60405180910390f35b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ce611945565b73ffffffffffffffffffffffffffffffffffffffff16146106ed575f80fd5b5f6106f730610a68565b90505f81111561070b5761070a8161194c565b5b5f4790505f8111156107215761072081611bb7565b5b5050565b60606040518060400160405280600681526020017f53746f6e65720000000000000000000000000000000000000000000000000000815250905090565b5f61077561076e611945565b8484611c1f565b6001905092915050565b60185481565b5f6009600a6107949190613060565b66017e9d8602b4006107a691906130aa565b905090565b5f6107b7848484611de2565b610874846107c3611945565b61086f85604051806060016040528060288152602001613bfb6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610826611945565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129509092919063ffffffff16565b611c1f565b600190509392505050565b5f6009905090565b601a60149054906101000a900460ff16806108ae5750601a60159054906101000a900460ff165b6108b6575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610912929190613146565b6020604051808303815f875af115801561092e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109529190613181565b505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610984611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a07906131f6565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab6611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b39906131f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c04611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c87906131f6565b60405180910390fd5b6009600a610c9e9190613060565b66017e9d8602b400610cb091906130aa565b6015819055506009600a610cc49190613060565b66017e9d8602b400610cd691906130aa565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d0b9190613060565b66017e9d8602b400610d1d91906130aa565b604051610d2a9190612d43565b60405180910390a1565b610d3c611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf906131f6565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60155481565b610e2e611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906131f6565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1680610efe5750601a60159054906101000a900460ff165b610f06575f80fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f6a573d5f803e3d5ffd5b50565b610f75611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff8906131f6565b60405180910390fd5b601a60159054906101000a900460ff1615611051576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110489061325e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110f03060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110d99190613060565b66017e9d8602b4006110eb91906130aa565b611c1f565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117e9190613290565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611204573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112289190613290565b6040518363ffffffff1660e01b81526004016112459291906132bb565b6020604051808303815f875af1158015611261573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112859190613290565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113f830610a68565b5f80611402611585565b426040518863ffffffff1660e01b81526004016114249695949392919061331b565b60606040518083038185885af1158015611440573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611465919061338e565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115059291906133de565b6020604051808303815f875af1158015611521573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115459190613181565b506001601a60176101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600681526020017f53544f4e45520000000000000000000000000000000000000000000000000000815250905090565b6115f7611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a906131f6565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1681565b5f6116c66116bf611945565b8484611de2565b6001905092915050565b60175481565b601a60189054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611773611945565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f6906131f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490613475565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b6001601a60166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561198357611982613493565b5b6040519080825280602002602001820160405280156119b15781602001602082028036833780820191505090505b50905030815f815181106119c8576119c76134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a909190613290565b81600181518110611aa457611aa36134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b0a3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c1f565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611b6c9594939291906135a4565b5f604051808303815f87803b158015611b83575f80fd5b505af1158015611b95573d5f803e3d5ffd5b50505050505f601a60166101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c1b573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061366c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf2906136fa565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dd59190612d43565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790613788565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613816565b60405180910390fd5b5f8111611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef7906138a4565b60405180910390fd5b5f611f09611585565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f775750611f47611585565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126a057611fcd6103e8611fbf600e5460125411611fac57600d5460125411611fa357600754611fa7565b6008545b611fb0565b600b545b856129b290919063ffffffff16565b612a2990919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612072575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120c5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121a85760155482111561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061390c565b60405180910390fd5b6016548261211c85610a68565b612126919061392a565b1115612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215e906139a7565b60405180910390fd5b436001600654612177919061392a565b11156121905761218683612a72565b1561218f575f80fd5b5b60125f8154809291906121a2906139c5565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612246575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a4576016548261225885610a68565b612262919061392a565b11156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a906139a7565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561232657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561237f5761237c6103e861236e6010546012541161235b57600f546012541161235257600954612356565b600a545b61235f565b600c545b856129b290919063ffffffff16565b612a2990919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561241d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561245557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561245e575f90505b5f61246830610a68565b9050601a60189054906101000a900460ff1680156124935750601a60169054906101000a900460ff16155b80156124e5575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124fd5750601a60179054906101000a900460ff165b801561250a575060175481115b80156125195750601154601254115b156125cc57601454431115612530575f6013819055505b600260135410612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256c90613a56565b60405180910390fd5b61259261258d8461258884601854612a83565b612a83565b61194c565b5f4790505f8111156125a8576125a747611bb7565b5b60135f8154809291906125ba906139c5565b9190505550436014819055505061269e565b601a60169054906101000a900460ff1615801561262f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156126475750601a60179054906101000a900460ff165b8015612654575060175481115b80156126635750601154601254115b1561269d576126856126808461267b84601854612a83565b612a83565b61194c565b5f4790505f81111561269b5761269a47611bb7565b5b505b5b505b5f81111561279f576126f88160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9b90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127969190612d43565b60405180910390a35b6127ef8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128926128468284612af890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9b90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129358486612af890919063ffffffff16565b6040516129429190612d43565b60405180910390a350505050565b5f838311158290612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e9190612c12565b60405180910390fd5b505f83856129a59190613a74565b9050809150509392505050565b5f8083036129c2575f9050612a23565b5f82846129cf91906130aa565b90508284826129de9190613ad4565b14612a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1590613b74565b60405180910390fd5b809150505b92915050565b5f612a6a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b41565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a915782612a93565b815b905092915050565b5f808284612aa9919061392a565b905083811015612aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae590613bdc565b60405180910390fd5b8091505092915050565b5f612b3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612950565b905092915050565b5f8083118290612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e9190612c12565b60405180910390fd5b505f8385612b959190613ad4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612be482612ba2565b612bee8185612bac565b9350612bfe818560208601612bbc565b612c0781612bca565b840191505092915050565b5f6020820190508181035f830152612c2a8184612bda565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c5f82612c36565b9050919050565b612c6f81612c55565b8114612c79575f80fd5b50565b5f81359050612c8a81612c66565b92915050565b5f819050919050565b612ca281612c90565b8114612cac575f80fd5b50565b5f81359050612cbd81612c99565b92915050565b5f8060408385031215612cd957612cd8612c32565b5b5f612ce685828601612c7c565b9250506020612cf785828601612caf565b9150509250929050565b5f8115159050919050565b612d1581612d01565b82525050565b5f602082019050612d2e5f830184612d0c565b92915050565b612d3d81612c90565b82525050565b5f602082019050612d565f830184612d34565b92915050565b5f805f60608486031215612d7357612d72612c32565b5b5f612d8086828701612c7c565b9350506020612d9186828701612c7c565b9250506040612da286828701612caf565b9150509250925092565b5f60ff82169050919050565b612dc181612dac565b82525050565b5f602082019050612dda5f830184612db8565b92915050565b612de981612c55565b82525050565b5f602082019050612e025f830184612de0565b92915050565b5f60208284031215612e1d57612e1c612c32565b5b5f612e2a84828501612c7c565b91505092915050565b612e3c81612d01565b8114612e46575f80fd5b50565b5f81359050612e5781612e33565b92915050565b5f8060408385031215612e7357612e72612c32565b5b5f612e8085828601612c7c565b9250506020612e9185828601612e49565b9150509250929050565b5f60208284031215612eb057612eaf612c32565b5b5f612ebd84828501612e49565b91505092915050565b5f8060408385031215612edc57612edb612c32565b5b5f612ee985828601612c7c565b9250506020612efa85828601612c7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f8657808604811115612f6257612f61612f04565b5b6001851615612f715780820291505b8081029050612f7f85612f31565b9450612f46565b94509492505050565b5f82612f9e5760019050613059565b81612fab575f9050613059565b8160018114612fc15760028114612fcb57612ffa565b6001915050613059565b60ff841115612fdd57612fdc612f04565b5b8360020a915084821115612ff457612ff3612f04565b5b50613059565b5060208310610133831016604e8410600b841016171561302f5782820a90508381111561302a57613029612f04565b5b613059565b61303c8484846001612f3d565b9250905081840481111561305357613052612f04565b5b81810290505b9392505050565b5f61306a82612c90565b915061307583612dac565b92506130a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f8f565b905092915050565b5f6130b482612c90565b91506130bf83612c90565b92508282026130cd81612c90565b915082820484148315176130e4576130e3612f04565b5b5092915050565b5f819050919050565b5f61310e61310961310484612c36565b6130eb565b612c36565b9050919050565b5f61311f826130f4565b9050919050565b5f61313082613115565b9050919050565b61314081613126565b82525050565b5f6040820190506131595f830185613137565b6131666020830184612d34565b9392505050565b5f8151905061317b81612e33565b92915050565b5f6020828403121561319657613195612c32565b5b5f6131a38482850161316d565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131e0602083612bac565b91506131eb826131ac565b602082019050919050565b5f6020820190508181035f83015261320d816131d4565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613248601783612bac565b915061325382613214565b602082019050919050565b5f6020820190508181035f8301526132758161323c565b9050919050565b5f8151905061328a81612c66565b92915050565b5f602082840312156132a5576132a4612c32565b5b5f6132b28482850161327c565b91505092915050565b5f6040820190506132ce5f830185612de0565b6132db6020830184612de0565b9392505050565b5f819050919050565b5f6133056133006132fb846132e2565b6130eb565b612c90565b9050919050565b613315816132eb565b82525050565b5f60c08201905061332e5f830189612de0565b61333b6020830188612d34565b613348604083018761330c565b613355606083018661330c565b6133626080830185612de0565b61336f60a0830184612d34565b979650505050505050565b5f8151905061338881612c99565b92915050565b5f805f606084860312156133a5576133a4612c32565b5b5f6133b28682870161337a565b93505060206133c38682870161337a565b92505060406133d48682870161337a565b9150509250925092565b5f6040820190506133f15f830185612de0565b6133fe6020830184612d34565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61345f602683612bac565b915061346a82613405565b604082019050919050565b5f6020820190508181035f83015261348c81613453565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351f81612c55565b82525050565b5f6135308383613516565b60208301905092915050565b5f602082019050919050565b5f613552826134ed565b61355c81856134f7565b935061356783613507565b805f5b8381101561359757815161357e8882613525565b97506135898361353c565b92505060018101905061356a565b5085935050505092915050565b5f60a0820190506135b75f830188612d34565b6135c4602083018761330c565b81810360408301526135d68186613548565b90506135e56060830185612de0565b6135f26080830184612d34565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613656602483612bac565b9150613661826135fc565b604082019050919050565b5f6020820190508181035f8301526136838161364a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136e4602283612bac565b91506136ef8261368a565b604082019050919050565b5f6020820190508181035f830152613711816136d8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613772602583612bac565b915061377d82613718565b604082019050919050565b5f6020820190508181035f83015261379f81613766565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613800602383612bac565b915061380b826137a6565b604082019050919050565b5f6020820190508181035f83015261382d816137f4565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61388e602983612bac565b915061389982613834565b604082019050919050565b5f6020820190508181035f8301526138bb81613882565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6138f6601983612bac565b9150613901826138c2565b602082019050919050565b5f6020820190508181035f830152613923816138ea565b9050919050565b5f61393482612c90565b915061393f83612c90565b925082820190508082111561395757613956612f04565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613991601a83612bac565b915061399c8261395d565b602082019050919050565b5f6020820190508181035f8301526139be81613985565b9050919050565b5f6139cf82612c90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a0157613a00612f04565b5b600182019050919050565b7f4f6e6c7920322043412062616c616e63652073656c6c000000000000000000005f82015250565b5f613a40601683612bac565b9150613a4b82613a0c565b602082019050919050565b5f6020820190508181035f830152613a6d81613a34565b9050919050565b5f613a7e82612c90565b9150613a8983612c90565b9250828203905081811115613aa157613aa0612f04565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ade82612c90565b9150613ae983612c90565b925082613af957613af8613aa7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b5e602183612bac565b9150613b6982613b04565b604082019050919050565b5f6020820190508181035f830152613b8b81613b52565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bc6601b83612bac565b9150613bd182613b92565b602082019050919050565b5f6020820190508181035f830152613bf381613bba565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207eecb7afc4bdd5bea8cb5196b418d13758ac404c0a991fc36823a629244e2cb964736f6c63430008190033

Deployed Bytecode Sourcemap

3813:10073:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12400:351;;;;;;;;;;;;;:::i;:::-;;6081:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6914:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5185:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6358:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7083:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6267:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12214:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5299:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7747:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6461:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2644:148;;;;;;;;;;;;;:::i;:::-;;12759:159;;;;;;;;;;;;;:::i;:::-;;11834:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4981:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11734:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12065:141;;;;;;;;;;;;;:::i;:::-;;13026:820;;;;;;;;;;;;;:::i;:::-;;2430:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5049:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6172:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11963:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5334:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6588:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5117:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5475:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6763:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2800:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4084:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12400:351;12467:10;;;;;;;;;;;12453:24;;:12;:10;:12::i;:::-;:24;;;12445:33;;;;;;12489:20;12510:24;12528:4;12510:9;:24::i;:::-;12489:45;;12561:1;12548:12;:14;12545:73;;;12576:30;12593:12;12576:16;:30::i;:::-;12545:73;12628:18;12647:21;12628:40;;12693:1;12682:10;:12;12679:65;;;12708:24;12721:10;12708:12;:24::i;:::-;12679:65;12434:317;;12400:351::o;6081:83::-;6118:13;6151:5;;;;;;;;;;;;;;;;;6144:12;;6081:83;:::o;6914:161::-;6989:4;7006:39;7015:12;:10;:12::i;:::-;7029:7;7038:6;7006:8;:39::i;:::-;7063:4;7056:11;;6914:161;;;;:::o;5185:56::-;;;;:::o;6358:95::-;6411:7;4790:1;4851:2;:13;;;;:::i;:::-;4833:15;:31;;;;:::i;:::-;6431:14;;6358:95;:::o;7083:313::-;7181:4;7198:36;7208:6;7216:9;7227:6;7198:9;:36::i;:::-;7245:121;7254:6;7262:12;:10;:12::i;:::-;7276:89;7314:6;7276:89;;;;;;;;;;;;;;;;;:11;:19;7288:6;7276:19;;;;;;;;;;;;;;;:33;7296:12;:10;:12::i;:::-;7276:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7245:8;:121::i;:::-;7384:4;7377:11;;7083:313;;;;;:::o;6267:83::-;6308:5;4790:1;6326:16;;6267:83;:::o;12214:177::-;12298:10;;;;;;;;;;;:25;;;;12312:11;;;;;;;;;;;12298:25;12290:34;;;;;;12342:10;12335:27;;;12363:10;;;;;;;;;;;12375:7;12335:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12214:177;;:::o;5299:28::-;;;;;;;;;;;;;:::o;7747:96::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7831:4:::1;7812:10;:16;7823:4;7812:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;7747:96:::0;:::o;6461:119::-;6527:7;6554:9;:18;6564:7;6554:18;;;;;;;;;;;;;;;;6547:25;;6461:119;;;:::o;2644:148::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2751:1:::1;2714:40;;2735:6;::::0;::::1;;;;;;;;2714:40;;;;;;;;;;;;2782:1;2765:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2644:148::o:0;12759:159::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4790:1:::1;4851:2;:13;;;;:::i;:::-;4833:15;:31;;;;:::i;:::-;12812:12;:22;;;;4790:1;4851:2;:13;;;;:::i;:::-;4833:15;:31;;;;:::i;:::-;12845:14;:22;;;;12883:27;4790:1;4851:2;:13;;;;:::i;:::-;4833:15;:31;;;;:::i;:::-;12883:27;;;;;;:::i;:::-;;;;;;;;12759:159::o:0;11834:121::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11941:6:::1;11915:17;:23;11933:4;11915:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11834:121:::0;;:::o;4981:61::-;;;;:::o;11734:92::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11811:7:::1;11798:10;;:20;;;;;;;;;;;;;;;;;;11734:92:::0;:::o;12065:141::-;12110:10;;;;;;;;;;;:25;;;;12124:11;;;;;;;;;;;12110:25;12102:34;;;;;;12155:10;;;;;;;;;;;12147:28;;:51;12176:21;12147:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12065:141::o;13026:820::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13092:11:::1;;;;;;;;;;;13091:12;13083:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13178:42;13141:15;;:80;;;;;;;;;;;;;;;;;;13232:58;13249:4;13264:15;;;;;;;;;;;4790:1;4851:2;:13;;;;:::i;:::-;4833:15;:31;;;;:::i;:::-;13232:8;:58::i;:::-;13335:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13317:55;;;13381:4;13388:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13317:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13301:13;;:110;;;;;;;;;;;;;;;;;;13459:4;13422:10;:34;13441:13;;;;;;;;;;;13422:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;13518:4;13474:17;:41;13500:13;;;;;;;;;;;13474:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;13533:15;;;;;;;;;;;:31;;;13572:21;13603:4;13609:24;13627:4;13609:9;:24::i;:::-;13634:1;13636::::0;13638:7:::1;:5;:7::i;:::-;13646:15;13533:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13680:13;;;;;;;;;;;13673:29;;;13711:15;;;;;;;;;;;13729:14;13673:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13769:4;13755:11;;:18;;;;;;;;;;;;;;;;;;13798:4;13784:11;;:18;;;;;;;;;;;;;;;;;;13826:12;13813:10;:25;;;;13026:820::o:0;2430:79::-;2468:7;2495:6;;;;;;;;;;;2488:13;;2430:79;:::o;5049:61::-;;;;:::o;6172:87::-;6211:13;6244:7;;;;;;;;;;;;;;;;;6237:14;;6172:87;:::o;11963:94::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12042:7:::1;12030:9;;:19;;;;;;;;;;;;;;;;;;11963:94:::0;:::o;5334:30::-;;;;;;;;;;;;;:::o;6588:167::-;6666:4;6683:42;6693:12;:10;:12::i;:::-;6707:9;6718:6;6683:9;:42::i;:::-;6743:4;6736:11;;6588:167;;;;:::o;5117:61::-;;;;:::o;5475:28::-;;;;;;;;;;;;;:::o;6763:143::-;6844:7;6871:11;:18;6883:5;6871:18;;;;;;;;;;;;;;;:27;6890:7;6871:27;;;;;;;;;;;;;;;;6864:34;;6763:143;;;;:::o;2800:244::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2909:1:::1;2889:22;;:8;:22;;::::0;2881:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2999:8;2970:38;;2991:6;::::0;::::1;;;;;;;;2970:38;;;;;;;;;;;;3028:8;3019:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2800:244:::0;:::o;4084:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;185:98::-;238:7;265:10;258:17;;185:98;:::o;11243:483::-;5603:4;5594:6;;:13;;;;;;;;;;;;;;;;;;11321:21:::1;11359:1;11345:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11321:40;;11390:4;11372;11377:1;11372:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11416:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11406:4;11411:1;11406:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11449:62;11466:4;11481:15;;;;;;;;;;;11499:11;11449:8;:62::i;:::-;11522:15;;;;;;;;;;;:66;;;11603:11;11629:1;11645:4;11672;11692:15;11522:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11310:416;5639:5:::0;5630:6;;:14;;;;;;;;;;;;;;;;;;11243:483;:::o;12926:92::-;12983:10;;;;;;;;;;;:19;;:27;13003:6;12983:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12926:92;:::o;7404:335::-;7514:1;7497:19;;:5;:19;;;7489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7595:1;7576:21;;:7;:21;;;7568:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7677:6;7647:11;:18;7659:5;7647:18;;;;;;;;;;;;;;;:27;7666:7;7647:27;;;;;;;;;;;;;;;:36;;;;7715:7;7699:32;;7708:5;7699:32;;;7724:6;7699:32;;;;;;:::i;:::-;;;;;;;;7404:335;;;:::o;7851:3073::-;7955:1;7939:18;;:4;:18;;;7931:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8032:1;8018:16;;:2;:16;;;8010:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8102:1;8093:6;:10;8085:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8160:17;8204:7;:5;:7::i;:::-;8196:15;;:4;:15;;;;:32;;;;;8221:7;:5;:7::i;:::-;8215:13;;:2;:13;;;;8196:32;8192:2376;;;8257:121;8373:4;8257:111;8280:15;;8269:9;;:26;8268:99;;8325:12;;8314:9;;:23;8313:53;;8352:14;;8313:53;;;8340:10;;8313:53;8268:99;;;8298:12;;8268:99;8257:6;:10;;:111;;;;:::i;:::-;:115;;:121;;;;:::i;:::-;8245:133;;8399:10;:16;8410:4;8399:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8433:15;;;;;;;;;;;8419:30;;:2;:30;;;;8399:50;:77;;;;;8455:17;:21;8473:2;8455:21;;;;;;;;;;;;;;;;;;;;;;;;;8453:23;8399:77;8395:430;;;8516:12;;8506:6;:22;;8498:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8611:14;;8601:6;8585:13;8595:2;8585:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8577:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8699:12;8694:1;8681:10;;:14;;;;:::i;:::-;:30;8677:103;;;8745:14;8756:2;8745:10;:14::i;:::-;8744:15;8736:24;;;;;;8677:103;8798:9;;:11;;;;;;;;;:::i;:::-;;;;;;8395:430;8846:10;:14;8857:2;8846:14;;;;;;;;;;;;;;;;;;;;;;;;;8845:15;:42;;;;;8866:17;:21;8884:2;8866:21;;;;;;;;;;;;;;;;;;;;;;;;;8864:23;8845:42;8841:162;;;8942:14;;8932:6;8916:13;8926:2;8916:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8908:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8841:162;9022:10;:14;9033:2;9022:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;9055:4;9040:20;;:4;:20;;;;9022:38;9019:216;;;9093:126;9214:4;9093:116;9116:16;;9105:9;;:27;9104:104;;9163:13;;9152:9;;:24;9151:56;;9192:15;;9151:56;;;9179:11;;9151:56;9104:104;;;9135:13;;9104:104;9093:6;:10;;:116;;;;:::i;:::-;:120;;:126;;;;:::i;:::-;9081:138;;9019:216;9249:10;:16;9260:4;9249:16;;;;;;;;;;;;;;;;;;;;;;;;;9248:17;:36;;;;;9270:10;:14;9281:2;9270:14;;;;;;;;;;;;;;;;;;;;;;;;;9269:15;9248:36;:60;;;;;9303:4;9288:20;;:4;:20;;;;9248:60;9244:115;;;9342:1;9330:13;;9244:115;9375:28;9406:24;9424:4;9406:9;:24::i;:::-;9375:55;;9449:9;;;;;;;;;;;:20;;;;;9463:6;;;;;;;;;;;9462:7;9449:20;:38;;;;;9473:10;:14;9484:2;9473:14;;;;;;;;;;;;;;;;;;;;;;;;;9449:38;:53;;;;;9491:11;;;;;;;;;;;9449:53;:95;;;;;9527:17;;9506:20;:38;9449:95;:127;;;;;9558:18;;9548:9;;:28;9449:127;9445:1112;;;9616:13;;9601:12;:28;9597:90;;;9666:1;9654:9;:13;;;;9597:90;9724:1;9713:9;;:12;9705:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9771:67;9788:49;9792:6;9799:37;9803:20;9824:11;;9799:3;:37::i;:::-;9788:3;:49::i;:::-;9771:16;:67::i;:::-;9857:26;9886:21;9857:50;;9950:1;9929:18;:22;9926:105;;;9976:35;9989:21;9976:12;:35::i;:::-;9926:105;10049:9;;:11;;;;;;;;;:::i;:::-;;;;;;10095:12;10079:13;:28;;;;9578:545;9445:1112;;;10148:6;;;;;;;;;;;10147:7;:25;;;;;10158:10;:14;10169:2;10158:14;;;;;;;;;;;;;;;;;;;;;;;;;10147:25;:40;;;;;10176:11;;;;;;;;;;;10147:40;:82;;;;;10212:17;;10191:20;:38;10147:82;:114;;;;;10243:18;;10233:9;;:28;10147:114;10144:413;;;10282:67;10299:49;10303:6;10310:37;10314:20;10335:11;;10310:3;:37::i;:::-;10299:3;:49::i;:::-;10282:16;:67::i;:::-;10368:26;10397:21;10368:50;;10461:1;10440:18;:22;10437:105;;;10487:35;10500:21;10487:12;:35::i;:::-;10437:105;10263:294;10144:413;9445:1112;8230:2338;8192:2376;10593:1;10583:9;:11;10580:161;;;10633:39;10662:9;10633;:24;10651:4;10633:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10608:9;:24;10626:4;10608:24;;;;;;;;;;;;;;;:64;;;;10713:4;10690:39;;10699:4;10690:39;;;10719:9;10690:39;;;;;;:::i;:::-;;;;;;;;10580:161;10767:27;10787:6;10767:9;:15;10777:4;10767:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10751:9;:15;10761:4;10751:15;;;;;;;;;;;;;;;:43;;;;10819:40;10837:21;10848:9;10837:6;:10;;:21;;;;:::i;:::-;10819:9;:13;10829:2;10819:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10805:9;:13;10815:2;10805:13;;;;;;;;;;;;;;;:54;;;;10890:2;10875:41;;10884:4;10875:41;;;10894:21;10905:9;10894:6;:10;;:21;;;;:::i;:::-;10875:41;;;;;;:::i;:::-;;;;;;;;7920:3004;7851:3073;;;:::o;1322:190::-;1408:7;1441:1;1436;:6;;1444:12;1428:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1468:9;1484:1;1480;:5;;;;:::i;:::-;1468:17;;1503:1;1496:8;;;1322:190;;;;;:::o;1520:246::-;1578:7;1607:1;1602;:6;1598:47;;1632:1;1625:8;;;;1598:47;1655:9;1671:1;1667;:5;;;;:::i;:::-;1655:17;;1700:1;1695;1691;:5;;;;:::i;:::-;:10;1683:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1757:1;1750:8;;;1520:246;;;;;:::o;1774:132::-;1832:7;1859:39;1863:1;1866;1859:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1852:46;;1774:132;;;;:::o;11040:195::-;11099:4;11116:12;11183:7;11171:20;11163:28;;11226:1;11219:4;:8;11212:15;;;11040:195;;;:::o;10934:98::-;10991:7;11018:1;11016;:3;11015:9;;11023:1;11015:9;;;11021:1;11015:9;11008:16;;10934:98;;;;:::o;991:179::-;1049:7;1069:9;1085:1;1081;:5;;;;:::i;:::-;1069:17;;1110:1;1105;:6;;1097:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1161:1;1154:8;;;991:179;;;;:::o;1178:136::-;1236:7;1263:43;1267:1;1270;1263:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1256:50;;1178:136;;;;:::o;1914:189::-;2000:7;2032:1;2028;:5;2035:12;2020:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2059:9;2075:1;2071;:5;;;;:::i;:::-;2059:17;;2094:1;2087:8;;;1914: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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:118::-;4833:24;4851:5;4833:24;:::i;:::-;4828:3;4821:37;4746:118;;:::o;4870:222::-;4963:4;5001:2;4990:9;4986:18;4978:26;;5014:71;5082:1;5071:9;5067:17;5058:6;5014:71;:::i;:::-;4870:222;;;;:::o;5098:329::-;5157:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5098:329;;;;:::o;5433:116::-;5503:21;5518:5;5503:21;:::i;:::-;5496:5;5493:32;5483:60;;5539:1;5536;5529:12;5483:60;5433:116;:::o;5555:133::-;5598:5;5636:6;5623:20;5614:29;;5652:30;5676:5;5652:30;:::i;:::-;5555:133;;;;:::o;5694:468::-;5759:6;5767;5816:2;5804:9;5795:7;5791:23;5787:32;5784:119;;;5822:79;;:::i;:::-;5784:119;5942:1;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5913:117;6069:2;6095:50;6137:7;6128:6;6117:9;6113:22;6095:50;:::i;:::-;6085:60;;6040:115;5694:468;;;;;:::o;6168:323::-;6224:6;6273:2;6261:9;6252:7;6248:23;6244:32;6241:119;;;6279:79;;:::i;:::-;6241:119;6399:1;6424:50;6466:7;6457:6;6446:9;6442:22;6424:50;:::i;:::-;6414:60;;6370:114;6168:323;;;;:::o;6497:474::-;6565:6;6573;6622:2;6610:9;6601:7;6597:23;6593:32;6590:119;;;6628:79;;:::i;:::-;6590:119;6748:1;6773:53;6818:7;6809:6;6798:9;6794:22;6773:53;:::i;:::-;6763:63;;6719:117;6875:2;6901:53;6946:7;6937:6;6926:9;6922:22;6901:53;:::i;:::-;6891:63;;6846:118;6497:474;;;;;:::o;6977:180::-;7025:77;7022:1;7015:88;7122:4;7119:1;7112:15;7146:4;7143:1;7136:15;7163:102;7205:8;7252:5;7249:1;7245:13;7224:34;;7163:102;;;:::o;7271:848::-;7332:5;7339:4;7363:6;7354:15;;7387:5;7378:14;;7401:712;7422:1;7412:8;7409:15;7401:712;;;7517:4;7512:3;7508:14;7502:4;7499:24;7496:50;;;7526:18;;:::i;:::-;7496:50;7576:1;7566:8;7562:16;7559:451;;;7991:4;7984:5;7980:16;7971:25;;7559:451;8041:4;8035;8031:15;8023:23;;8071:32;8094:8;8071:32;:::i;:::-;8059:44;;7401:712;;;7271:848;;;;;;;:::o;8125:1073::-;8179:5;8370:8;8360:40;;8391:1;8382:10;;8393:5;;8360:40;8419:4;8409:36;;8436:1;8427:10;;8438:5;;8409:36;8505:4;8553:1;8548:27;;;;8589:1;8584:191;;;;8498:277;;8548:27;8566:1;8557:10;;8568:5;;;8584:191;8629:3;8619:8;8616:17;8613:43;;;8636:18;;:::i;:::-;8613:43;8685:8;8682:1;8678:16;8669:25;;8720:3;8713:5;8710:14;8707:40;;;8727:18;;:::i;:::-;8707:40;8760:5;;;8498:277;;8884:2;8874:8;8871:16;8865:3;8859:4;8856:13;8852:36;8834:2;8824:8;8821:16;8816:2;8810:4;8807:12;8803:35;8787:111;8784:246;;;8940:8;8934:4;8930:19;8921:28;;8975:3;8968:5;8965:14;8962:40;;;8982:18;;:::i;:::-;8962:40;9015:5;;8784:246;9055:42;9093:3;9083:8;9077:4;9074:1;9055:42;:::i;:::-;9040:57;;;;9129:4;9124:3;9120:14;9113:5;9110:25;9107:51;;;9138:18;;:::i;:::-;9107:51;9187:4;9180:5;9176:16;9167:25;;8125:1073;;;;;;:::o;9204:281::-;9262:5;9286:23;9304:4;9286:23;:::i;:::-;9278:31;;9330:25;9346:8;9330:25;:::i;:::-;9318:37;;9374:104;9411:66;9401:8;9395:4;9374:104;:::i;:::-;9365:113;;9204:281;;;;:::o;9491:410::-;9531:7;9554:20;9572:1;9554:20;:::i;:::-;9549:25;;9588:20;9606:1;9588:20;:::i;:::-;9583:25;;9643:1;9640;9636:9;9665:30;9683:11;9665:30;:::i;:::-;9654:41;;9844:1;9835:7;9831:15;9828:1;9825:22;9805:1;9798:9;9778:83;9755:139;;9874:18;;:::i;:::-;9755:139;9539:362;9491:410;;;;:::o;9907:60::-;9935:3;9956:5;9949:12;;9907:60;;;:::o;9973:142::-;10023:9;10056:53;10074:34;10083:24;10101:5;10083:24;:::i;:::-;10074:34;:::i;:::-;10056:53;:::i;:::-;10043:66;;9973:142;;;:::o;10121:126::-;10171:9;10204:37;10235:5;10204:37;:::i;:::-;10191:50;;10121:126;;;:::o;10253:134::-;10311:9;10344:37;10375:5;10344:37;:::i;:::-;10331:50;;10253:134;;;:::o;10393:147::-;10488:45;10527:5;10488:45;:::i;:::-;10483:3;10476:58;10393:147;;:::o;10546:348::-;10675:4;10713:2;10702:9;10698:18;10690:26;;10726:79;10802:1;10791:9;10787:17;10778:6;10726:79;:::i;:::-;10815:72;10883:2;10872:9;10868:18;10859:6;10815:72;:::i;:::-;10546:348;;;;;:::o;10900:137::-;10954:5;10985:6;10979:13;10970:22;;11001:30;11025:5;11001:30;:::i;:::-;10900:137;;;;:::o;11043:345::-;11110:6;11159:2;11147:9;11138:7;11134:23;11130:32;11127:119;;;11165:79;;:::i;:::-;11127:119;11285:1;11310:61;11363:7;11354:6;11343:9;11339:22;11310:61;:::i;:::-;11300:71;;11256:125;11043:345;;;;:::o;11394:182::-;11534:34;11530:1;11522:6;11518:14;11511:58;11394:182;:::o;11582:366::-;11724:3;11745:67;11809:2;11804:3;11745:67;:::i;:::-;11738:74;;11821:93;11910:3;11821:93;:::i;:::-;11939:2;11934:3;11930:12;11923:19;;11582:366;;;:::o;11954:419::-;12120:4;12158:2;12147:9;12143:18;12135:26;;12207:9;12201:4;12197:20;12193:1;12182:9;12178:17;12171:47;12235:131;12361:4;12235:131;:::i;:::-;12227:139;;11954:419;;;:::o;12379:173::-;12519:25;12515:1;12507:6;12503:14;12496:49;12379:173;:::o;12558:366::-;12700:3;12721:67;12785:2;12780:3;12721:67;:::i;:::-;12714:74;;12797:93;12886:3;12797:93;:::i;:::-;12915:2;12910:3;12906:12;12899:19;;12558:366;;;:::o;12930:419::-;13096:4;13134:2;13123:9;13119:18;13111:26;;13183:9;13177:4;13173:20;13169:1;13158:9;13154:17;13147:47;13211:131;13337:4;13211:131;:::i;:::-;13203:139;;12930:419;;;:::o;13355:143::-;13412:5;13443:6;13437:13;13428:22;;13459:33;13486:5;13459:33;:::i;:::-;13355:143;;;;:::o;13504:351::-;13574:6;13623:2;13611:9;13602:7;13598:23;13594:32;13591:119;;;13629:79;;:::i;:::-;13591:119;13749:1;13774:64;13830:7;13821:6;13810:9;13806:22;13774:64;:::i;:::-;13764:74;;13720:128;13504:351;;;;:::o;13861:332::-;13982:4;14020:2;14009:9;14005:18;13997:26;;14033:71;14101:1;14090:9;14086:17;14077:6;14033:71;:::i;:::-;14114:72;14182:2;14171:9;14167:18;14158:6;14114:72;:::i;:::-;13861:332;;;;;:::o;14199:85::-;14244:7;14273:5;14262:16;;14199:85;;;:::o;14290:158::-;14348:9;14381:61;14399:42;14408:32;14434:5;14408:32;:::i;:::-;14399:42;:::i;:::-;14381:61;:::i;:::-;14368:74;;14290:158;;;:::o;14454:147::-;14549:45;14588:5;14549:45;:::i;:::-;14544:3;14537:58;14454:147;;:::o;14607:807::-;14856:4;14894:3;14883:9;14879:19;14871:27;;14908:71;14976:1;14965:9;14961:17;14952:6;14908:71;:::i;:::-;14989:72;15057:2;15046:9;15042:18;15033:6;14989:72;:::i;:::-;15071:80;15147:2;15136:9;15132:18;15123:6;15071:80;:::i;:::-;15161;15237:2;15226:9;15222:18;15213:6;15161:80;:::i;:::-;15251:73;15319:3;15308:9;15304:19;15295:6;15251:73;:::i;:::-;15334;15402:3;15391:9;15387:19;15378:6;15334:73;:::i;:::-;14607:807;;;;;;;;;:::o;15420:143::-;15477:5;15508:6;15502:13;15493:22;;15524:33;15551:5;15524:33;:::i;:::-;15420:143;;;;:::o;15569:663::-;15657:6;15665;15673;15722:2;15710:9;15701:7;15697:23;15693:32;15690:119;;;15728:79;;:::i;:::-;15690:119;15848:1;15873:64;15929:7;15920:6;15909:9;15905:22;15873:64;:::i;:::-;15863:74;;15819:128;15986:2;16012:64;16068:7;16059:6;16048:9;16044:22;16012:64;:::i;:::-;16002:74;;15957:129;16125:2;16151:64;16207:7;16198:6;16187:9;16183:22;16151:64;:::i;:::-;16141:74;;16096:129;15569:663;;;;;:::o;16238:332::-;16359:4;16397:2;16386:9;16382:18;16374:26;;16410:71;16478:1;16467:9;16463:17;16454:6;16410:71;:::i;:::-;16491:72;16559:2;16548:9;16544:18;16535:6;16491:72;:::i;:::-;16238:332;;;;;:::o;16576:225::-;16716:34;16712:1;16704:6;16700:14;16693:58;16785:8;16780:2;16772:6;16768:15;16761:33;16576:225;:::o;16807:366::-;16949:3;16970:67;17034:2;17029:3;16970:67;:::i;:::-;16963:74;;17046:93;17135:3;17046:93;:::i;:::-;17164:2;17159:3;17155:12;17148:19;;16807:366;;;:::o;17179:419::-;17345:4;17383:2;17372:9;17368:18;17360:26;;17432:9;17426:4;17422:20;17418:1;17407:9;17403:17;17396:47;17460:131;17586:4;17460:131;:::i;:::-;17452:139;;17179:419;;;:::o;17604:180::-;17652:77;17649:1;17642:88;17749:4;17746:1;17739:15;17773:4;17770:1;17763:15;17790:180;17838:77;17835:1;17828:88;17935:4;17932:1;17925:15;17959:4;17956:1;17949:15;17976:114;18043:6;18077:5;18071:12;18061:22;;17976:114;;;:::o;18096:184::-;18195:11;18229:6;18224:3;18217:19;18269:4;18264:3;18260:14;18245:29;;18096:184;;;;:::o;18286:132::-;18353:4;18376:3;18368:11;;18406:4;18401:3;18397:14;18389:22;;18286:132;;;:::o;18424:108::-;18501:24;18519:5;18501:24;:::i;:::-;18496:3;18489:37;18424:108;;:::o;18538:179::-;18607:10;18628:46;18670:3;18662:6;18628:46;:::i;:::-;18706:4;18701:3;18697:14;18683:28;;18538:179;;;;:::o;18723:113::-;18793:4;18825;18820:3;18816:14;18808:22;;18723:113;;;:::o;18872:732::-;18991:3;19020:54;19068:5;19020:54;:::i;:::-;19090:86;19169:6;19164:3;19090:86;:::i;:::-;19083:93;;19200:56;19250:5;19200:56;:::i;:::-;19279:7;19310:1;19295:284;19320:6;19317:1;19314:13;19295:284;;;19396:6;19390:13;19423:63;19482:3;19467:13;19423:63;:::i;:::-;19416:70;;19509:60;19562:6;19509:60;:::i;:::-;19499:70;;19355:224;19342:1;19339;19335:9;19330:14;;19295:284;;;19299:14;19595:3;19588:10;;18996:608;;;18872:732;;;;:::o;19610:831::-;19873:4;19911:3;19900:9;19896:19;19888:27;;19925:71;19993:1;19982:9;19978:17;19969:6;19925:71;:::i;:::-;20006:80;20082:2;20071:9;20067:18;20058:6;20006:80;:::i;:::-;20133:9;20127:4;20123:20;20118:2;20107:9;20103:18;20096:48;20161:108;20264:4;20255:6;20161:108;:::i;:::-;20153:116;;20279:72;20347:2;20336:9;20332:18;20323:6;20279:72;:::i;:::-;20361:73;20429:3;20418:9;20414:19;20405:6;20361:73;:::i;:::-;19610:831;;;;;;;;:::o;20447:223::-;20587:34;20583:1;20575:6;20571:14;20564:58;20656:6;20651:2;20643:6;20639:15;20632:31;20447:223;:::o;20676:366::-;20818:3;20839:67;20903:2;20898:3;20839:67;:::i;:::-;20832:74;;20915:93;21004:3;20915:93;:::i;:::-;21033:2;21028:3;21024:12;21017:19;;20676:366;;;:::o;21048:419::-;21214:4;21252:2;21241:9;21237:18;21229:26;;21301:9;21295:4;21291:20;21287:1;21276:9;21272:17;21265:47;21329:131;21455:4;21329:131;:::i;:::-;21321:139;;21048:419;;;:::o;21473:221::-;21613:34;21609:1;21601:6;21597:14;21590:58;21682:4;21677:2;21669:6;21665:15;21658:29;21473:221;:::o;21700:366::-;21842:3;21863:67;21927:2;21922:3;21863:67;:::i;:::-;21856:74;;21939:93;22028:3;21939:93;:::i;:::-;22057:2;22052:3;22048:12;22041:19;;21700:366;;;:::o;22072:419::-;22238:4;22276:2;22265:9;22261:18;22253:26;;22325:9;22319:4;22315:20;22311:1;22300:9;22296:17;22289:47;22353:131;22479:4;22353:131;:::i;:::-;22345:139;;22072:419;;;:::o;22497:224::-;22637:34;22633:1;22625:6;22621:14;22614:58;22706:7;22701:2;22693:6;22689:15;22682:32;22497:224;:::o;22727:366::-;22869:3;22890:67;22954:2;22949:3;22890:67;:::i;:::-;22883:74;;22966:93;23055:3;22966:93;:::i;:::-;23084:2;23079:3;23075:12;23068:19;;22727:366;;;:::o;23099:419::-;23265:4;23303:2;23292:9;23288:18;23280:26;;23352:9;23346:4;23342:20;23338:1;23327:9;23323:17;23316:47;23380:131;23506:4;23380:131;:::i;:::-;23372:139;;23099:419;;;:::o;23524:222::-;23664:34;23660:1;23652:6;23648:14;23641:58;23733:5;23728:2;23720:6;23716:15;23709:30;23524:222;:::o;23752:366::-;23894:3;23915:67;23979:2;23974:3;23915:67;:::i;:::-;23908:74;;23991:93;24080:3;23991:93;:::i;:::-;24109:2;24104:3;24100:12;24093:19;;23752:366;;;:::o;24124:419::-;24290:4;24328:2;24317:9;24313:18;24305:26;;24377:9;24371:4;24367:20;24363:1;24352:9;24348:17;24341:47;24405:131;24531:4;24405:131;:::i;:::-;24397:139;;24124:419;;;:::o;24549:228::-;24689:34;24685:1;24677:6;24673:14;24666:58;24758:11;24753:2;24745:6;24741:15;24734:36;24549:228;:::o;24783:366::-;24925:3;24946:67;25010:2;25005:3;24946:67;:::i;:::-;24939:74;;25022:93;25111:3;25022:93;:::i;:::-;25140:2;25135:3;25131:12;25124:19;;24783:366;;;:::o;25155:419::-;25321:4;25359:2;25348:9;25344:18;25336:26;;25408:9;25402:4;25398:20;25394:1;25383:9;25379:17;25372:47;25436:131;25562:4;25436:131;:::i;:::-;25428:139;;25155:419;;;:::o;25580:175::-;25720:27;25716:1;25708:6;25704:14;25697:51;25580:175;:::o;25761:366::-;25903:3;25924:67;25988:2;25983:3;25924:67;:::i;:::-;25917:74;;26000:93;26089:3;26000:93;:::i;:::-;26118:2;26113:3;26109:12;26102:19;;25761:366;;;:::o;26133:419::-;26299:4;26337:2;26326:9;26322:18;26314:26;;26386:9;26380:4;26376:20;26372:1;26361:9;26357:17;26350:47;26414:131;26540:4;26414:131;:::i;:::-;26406:139;;26133:419;;;:::o;26558:191::-;26598:3;26617:20;26635:1;26617:20;:::i;:::-;26612:25;;26651:20;26669:1;26651:20;:::i;:::-;26646:25;;26694:1;26691;26687:9;26680:16;;26715:3;26712:1;26709:10;26706:36;;;26722:18;;:::i;:::-;26706:36;26558:191;;;;:::o;26755:176::-;26895:28;26891:1;26883:6;26879:14;26872:52;26755:176;:::o;26937:366::-;27079:3;27100:67;27164:2;27159:3;27100:67;:::i;:::-;27093:74;;27176:93;27265:3;27176:93;:::i;:::-;27294:2;27289:3;27285:12;27278:19;;26937:366;;;:::o;27309:419::-;27475:4;27513:2;27502:9;27498:18;27490:26;;27562:9;27556:4;27552:20;27548:1;27537:9;27533:17;27526:47;27590:131;27716:4;27590:131;:::i;:::-;27582:139;;27309:419;;;:::o;27734:233::-;27773:3;27796:24;27814:5;27796:24;:::i;:::-;27787:33;;27842:66;27835:5;27832:77;27829:103;;27912:18;;:::i;:::-;27829:103;27959:1;27952:5;27948:13;27941:20;;27734:233;;;:::o;27973:172::-;28113:24;28109:1;28101:6;28097:14;28090:48;27973:172;:::o;28151:366::-;28293:3;28314:67;28378:2;28373:3;28314:67;:::i;:::-;28307:74;;28390:93;28479:3;28390:93;:::i;:::-;28508:2;28503:3;28499:12;28492:19;;28151:366;;;:::o;28523:419::-;28689:4;28727:2;28716:9;28712:18;28704:26;;28776:9;28770:4;28766:20;28762:1;28751:9;28747:17;28740:47;28804:131;28930:4;28804:131;:::i;:::-;28796:139;;28523:419;;;:::o;28948:194::-;28988:4;29008:20;29026:1;29008:20;:::i;:::-;29003:25;;29042:20;29060:1;29042:20;:::i;:::-;29037:25;;29086:1;29083;29079:9;29071:17;;29110:1;29104:4;29101:11;29098:37;;;29115:18;;:::i;:::-;29098:37;28948:194;;;;:::o;29148:180::-;29196:77;29193:1;29186:88;29293:4;29290:1;29283:15;29317:4;29314:1;29307:15;29334:185;29374:1;29391:20;29409:1;29391:20;:::i;:::-;29386:25;;29425:20;29443:1;29425:20;:::i;:::-;29420:25;;29464:1;29454:35;;29469:18;;:::i;:::-;29454:35;29511:1;29508;29504:9;29499:14;;29334:185;;;;:::o;29525:220::-;29665:34;29661:1;29653:6;29649:14;29642:58;29734:3;29729:2;29721:6;29717:15;29710:28;29525:220;:::o;29751:366::-;29893:3;29914:67;29978:2;29973:3;29914:67;:::i;:::-;29907:74;;29990:93;30079:3;29990:93;:::i;:::-;30108:2;30103:3;30099:12;30092:19;;29751:366;;;:::o;30123:419::-;30289:4;30327:2;30316:9;30312:18;30304:26;;30376:9;30370:4;30366:20;30362:1;30351:9;30347:17;30340:47;30404:131;30530:4;30404:131;:::i;:::-;30396:139;;30123:419;;;:::o;30548:177::-;30688:29;30684:1;30676:6;30672:14;30665:53;30548:177;:::o;30731:366::-;30873:3;30894:67;30958:2;30953:3;30894:67;:::i;:::-;30887:74;;30970:93;31059:3;30970:93;:::i;:::-;31088:2;31083:3;31079:12;31072:19;;30731:366;;;:::o;31103:419::-;31269:4;31307:2;31296:9;31292:18;31284:26;;31356:9;31350:4;31346:20;31342:1;31331:9;31327:17;31320:47;31384:131;31510:4;31384:131;:::i;:::-;31376:139;;31103:419;;;:::o

Swarm Source

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