ETH Price: $2,616.94 (-4.48%)

Token

Gangster Rapper Cats (GANCAT)
 

Overview

Max Total Supply

420,690,000,000 GANCAT

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
43,747,917.254710137 GANCAT

Value
$0.00
0xb1db97ed4a122ccf496494bee5b57f3faa3a3318
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:
GangsterCats

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-08-14
*/

// SPDX-License-Identifier: MIT

/**

Twitter : https://x.com/crypto9836
Telegram: https://t.me/gangsterCatt
Website : https://gangster-rapper-cats.online/


**/



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

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 GangsterCats is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=21;
    uint256 private _initialSellTax=21;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=23;
    uint256 private _reduceSellTaxAt=23;
    uint256 private _preventSwapBefore=23;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Gangster Rapper Cats";
    string private constant _symbol = unicode"GANCAT";
    uint256 public _maxTxAmount = 5511039000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4206900000 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public caBlockLimit = 3;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caLimit = true;

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

    constructor () {

        _taxWallet = payable(0x02990aC46268C0237dD073AA949A62C86041Ba70);
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = true;
        isExile[address(uniswapV2Pair)] = 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 _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: _initialBuyTax).div(100);

            if (marketPair[from] && to != address(uniswapV2Router) && ! isExile[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] && ! isExile[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caLimit && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < caBlockLimit, "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 reStuckETH() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function updateSwapSettings(uint256 newinitialBuyTax, uint256 newinitialSellTax, uint256 newReduBTax, uint256 newReduSTax, uint256 newPrevSwapBef) external onlyOwner {
        _initialBuyTax = newinitialBuyTax;
        _initialSellTax = newinitialSellTax;
        _reduceBuyTaxAt = newReduBTax;
        _reduceSellTaxAt = newReduSTax;
        _preventSwapBefore = newPrevSwapBef;
    }

    function reStuckERC20Tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    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;
        isExile[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":"caBlockLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","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":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"reStuckERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinitialBuyTax","type":"uint256"},{"internalType":"uint256","name":"newinitialSellTax","type":"uint256"},{"internalType":"uint256","name":"newReduBTax","type":"uint256"},{"internalType":"uint256","name":"newReduSTax","type":"uint256"},{"internalType":"uint256","name":"newPrevSwapBef","type":"uint256"}],"name":"updateSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601560075560156008555f6009555f600a556017600b556017600c556017600d555f600e555f600f555f6010556009600a61003f91906105dd565b6401487bc81861004f9190610627565b6011556009600a61006091906105dd565b6401f58066406100709190610627565b6012556009600a61008191906105dd565b63fac033206100909190610627565b6013556009600a6100a191906105dd565b63fac033206100b09190610627565b60145560036017555f60185f6101000a81548160ff0219169083151502179055505f601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff021916908315150217905550348015610111575f80fd5b505f61012161043e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507302990ac46268c0237dd073aa949a62c86041ba7060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61021f91906105dd565b6461f313f88061022f9190610627565b60015f61024061043e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61029061044560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103b861043e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61041491906105dd565b6461f313f8806104249190610627565b6040516104319190610677565b60405180910390a3610690565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104ee578086048111156104ca576104c961046c565b5b60018516156104d95780820291505b80810290506104e785610499565b94506104ae565b94509492505050565b5f8261050657600190506105c1565b81610513575f90506105c1565b8160018114610529576002811461053357610562565b60019150506105c1565b60ff8411156105455761054461046c565b5b8360020a91508482111561055c5761055b61046c565b5b506105c1565b5060208310610133831016604e8410600b84101617156105975782820a9050838111156105925761059161046c565b5b6105c1565b6105a484848460016104a5565b925090508184048111156105bb576105ba61046c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105e7826105c8565b91506105f2836105d1565b925061061f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104f7565b905092915050565b5f610631826105c8565b915061063c836105c8565b925082820261064a816105c8565b915082820484148315176106615761066061046c565b5b5092915050565b610671816105c8565b82525050565b5f60208201905061068a5f830184610668565b92915050565b61364d8061069d5f395ff3fe60806040526004361061014e575f3560e01c806383aa6290116100b5578063b201641f1161006e578063b201641f14610457578063bf474bed1461046d578063cee3e84d14610497578063dd62ed3e146104c1578063ddbbe290146104fd578063f5b3c3bf1461052557610155565b806383aa62901461035d5780638a8c523c146103875780638da5cb5b1461039d5780638f9a55c0146103c757806395d89b41146103f1578063a9059cbb1461041b57610155565b8063331221d511610107578063331221d51461027957806349bd5a5e146102a157806370a08231146102cb578063715018a614610307578063751039fc1461031d5780637d1db4a51461033357610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610561565b60405161017a919061269b565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a4919061274c565b61059e565b6040516101b691906127a4565b60405180910390f35b3480156101ca575f80fd5b506101d36105bb565b6040516101e091906127cc565b60405180910390f35b3480156101f4575f80fd5b506101fd6105c1565b60405161020a91906127cc565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906127e5565b6105e5565b60405161024691906127a4565b60405180910390f35b34801561025a575f80fd5b506102636106b9565b6040516102709190612850565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612869565b6106c1565b005b3480156102ac575f80fd5b506102b561077f565b6040516102c291906128ef565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec9190612908565b6107a4565b6040516102fe91906127cc565b60405180910390f35b348015610312575f80fd5b5061031b6107ea565b005b348015610328575f80fd5b50610331610938565b005b34801561033e575f80fd5b50610347610a6a565b60405161035491906127cc565b60405180910390f35b348015610368575f80fd5b50610371610a70565b60405161037e91906127cc565b60405180910390f35b348015610392575f80fd5b5061039b610a76565b005b3480156103a8575f80fd5b506103b161108c565b6040516103be91906128ef565b60405180910390f35b3480156103d2575f80fd5b506103db6110b3565b6040516103e891906127cc565b60405180910390f35b3480156103fc575f80fd5b506104056110b9565b604051610412919061269b565b60405180910390f35b348015610426575f80fd5b50610441600480360381019061043c919061274c565b6110f6565b60405161044e91906127a4565b60405180910390f35b348015610462575f80fd5b5061046b611113565b005b348015610478575f80fd5b5061048161120e565b60405161048e91906127cc565b60405180910390f35b3480156104a2575f80fd5b506104ab611214565b6040516104b891906127a4565b60405180910390f35b3480156104cc575f80fd5b506104e760048036038101906104e29190612933565b611227565b6040516104f491906127cc565b60405180910390f35b348015610508575f80fd5b50610523600480360381019061051e919061274c565b6112a9565b005b348015610530575f80fd5b5061054b60048036038101906105469190612908565b6113de565b60405161055891906127a4565b60405180910390f35b60606040518060400160405280601481526020017f47616e6773746572205261707065722043617473000000000000000000000000815250905090565b5f6105b16105aa6113fb565b8484611402565b6001905092915050565b60145481565b5f6009600a6105d09190612acd565b6461f313f8806105e09190612b17565b905090565b5f6105f18484846115c5565b6106ae846105fd6113fb565b6106a9856040518060600160405280602881526020016135f06028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106606113fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121089092919063ffffffff16565b611402565b600190509392505050565b5f6009905090565b6106c96113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074c90612ba2565b60405180910390fd5b846007819055508360088190555082600b8190555081600c8190555080600d819055505050505050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107f26113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087590612ba2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109406113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c390612ba2565b60405180910390fd5b6009600a6109da9190612acd565b6461f313f8806109ea9190612b17565b6011819055506009600a6109fe9190612acd565b6461f313f880610a0e9190612b17565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a439190612acd565b6461f313f880610a539190612b17565b604051610a6091906127cc565b60405180910390a1565b60115481565b60175481565b610a7e6113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190612ba2565b60405180910390fd5b601660149054906101000a900460ff1615610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190612c0a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bf73060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610be29190612acd565b6461f313f880610bf29190612b17565b611402565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c859190612c3c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2f9190612c3c565b6040518363ffffffff1660e01b8152600401610d4c929190612c67565b6020604051808303815f875af1158015610d68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8c9190612c3c565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610eff306107a4565b5f80610f0961108c565b426040518863ffffffff1660e01b8152600401610f2b96959493929190612cd0565b60606040518083038185885af1158015610f47573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f6c9190612d43565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161100c929190612d93565b6020604051808303815f875af1158015611028573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104c9190612de4565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f47414e4341540000000000000000000000000000000000000000000000000000815250905090565b5f6111096111026113fb565b84846115c5565b6001905092915050565b61111b6113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90612ba2565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561120b573d5f803e3d5ffd5b50565b60135481565b601860029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112b16113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490612ba2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611399929190612e61565b6020604051808303815f875af11580156113b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d99190612de4565b505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790612ef8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590612f86565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b891906127cc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90613014565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611698906130a2565b60405180910390fd5b5f81116116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90613130565b60405180910390fd5b5f6116ec61108c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561175a575061172a61108c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e585761179b606461178d600b54600e541161177a5760075461177e565b6009545b8561216a90919063ffffffff16565b6121e190919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611840575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611893575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611976576011548211156118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490613198565b60405180910390fd5b601254826118ea856107a4565b6118f491906131b6565b1115611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613233565b60405180910390fd5b43600160065461194591906131b6565b111561195e576119548361222a565b1561195d575f80fd5b5b600e5f81548092919061197090613251565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a14575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a725760125482611a26856107a4565b611a3091906131b6565b1115611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6890613233565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611af457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b3857611b356064611b27600c54600e5411611b1457600854611b18565b600a545b8561216a90919063ffffffff16565b6121e190919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bd6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c0e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c17575f90505b5f611c21306107a4565b9050601860029054906101000a900460ff168015611c4b575060185f9054906101000a900460ff16155b8015611c9d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611cb55750601860019054906101000a900460ff165b8015611cc2575060135481115b8015611cd15750600d54600e54115b15611d8557601054431115611ce8575f600f819055505b601754600f5410611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d25906132e2565b60405180910390fd5b611d4b611d4684611d418460145461223b565b61223b565b612253565b5f4790505f811115611d6157611d60476124bc565b5b600f5f815480929190611d7390613251565b91905055504360108190555050611e56565b60185f9054906101000a900460ff16158015611de7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611dff5750601860019054906101000a900460ff165b8015611e0c575060135481115b8015611e1b5750600d54600e54115b15611e5557611e3d611e3884611e338460145461223b565b61223b565b612253565b5f4790505f811115611e5357611e52476124bc565b5b505b5b505b5f811115611f5757611eb08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4e91906127cc565b60405180910390a35b611fa78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061204a611ffe828461258190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120ed848661258190919063ffffffff16565b6040516120fa91906127cc565b60405180910390a350505050565b5f83831115829061214f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612146919061269b565b60405180910390fd5b505f838561215d9190613300565b9050809150509392505050565b5f80830361217a575f90506121db565b5f82846121879190612b17565b90508284826121969190613360565b146121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90613400565b60405180910390fd5b809150505b92915050565b5f61222283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ca565b905092915050565b5f80823b90505f8111915050919050565b5f818311612249578261224b565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122895761228861341e565b5b6040519080825280602002602001820160405280156122b75781602001602082028036833780820191505090505b50905030815f815181106122ce576122cd61344b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612372573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123969190612c3c565b816001815181106123aa576123a961344b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124103060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611402565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161247295949392919061352f565b5f604051808303815f87803b158015612489575f80fd5b505af115801561249b573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612520573d5f803e3d5ffd5b5050565b5f80828461253291906131b6565b905083811015612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e906135d1565b60405180910390fd5b8091505092915050565b5f6125c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612108565b905092915050565b5f8083118290612610576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612607919061269b565b60405180910390fd5b505f838561261e9190613360565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61266d8261262b565b6126778185612635565b9350612687818560208601612645565b61269081612653565b840191505092915050565b5f6020820190508181035f8301526126b38184612663565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126e8826126bf565b9050919050565b6126f8816126de565b8114612702575f80fd5b50565b5f81359050612713816126ef565b92915050565b5f819050919050565b61272b81612719565b8114612735575f80fd5b50565b5f8135905061274681612722565b92915050565b5f8060408385031215612762576127616126bb565b5b5f61276f85828601612705565b925050602061278085828601612738565b9150509250929050565b5f8115159050919050565b61279e8161278a565b82525050565b5f6020820190506127b75f830184612795565b92915050565b6127c681612719565b82525050565b5f6020820190506127df5f8301846127bd565b92915050565b5f805f606084860312156127fc576127fb6126bb565b5b5f61280986828701612705565b935050602061281a86828701612705565b925050604061282b86828701612738565b9150509250925092565b5f60ff82169050919050565b61284a81612835565b82525050565b5f6020820190506128635f830184612841565b92915050565b5f805f805f60a08688031215612882576128816126bb565b5b5f61288f88828901612738565b95505060206128a088828901612738565b94505060406128b188828901612738565b93505060606128c288828901612738565b92505060806128d388828901612738565b9150509295509295909350565b6128e9816126de565b82525050565b5f6020820190506129025f8301846128e0565b92915050565b5f6020828403121561291d5761291c6126bb565b5b5f61292a84828501612705565b91505092915050565b5f8060408385031215612949576129486126bb565b5b5f61295685828601612705565b925050602061296785828601612705565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156129f3578086048111156129cf576129ce612971565b5b60018516156129de5780820291505b80810290506129ec8561299e565b94506129b3565b94509492505050565b5f82612a0b5760019050612ac6565b81612a18575f9050612ac6565b8160018114612a2e5760028114612a3857612a67565b6001915050612ac6565b60ff841115612a4a57612a49612971565b5b8360020a915084821115612a6157612a60612971565b5b50612ac6565b5060208310610133831016604e8410600b8410161715612a9c5782820a905083811115612a9757612a96612971565b5b612ac6565b612aa984848460016129aa565b92509050818404811115612ac057612abf612971565b5b81810290505b9392505050565b5f612ad782612719565b9150612ae283612835565b9250612b0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129fc565b905092915050565b5f612b2182612719565b9150612b2c83612719565b9250828202612b3a81612719565b91508282048414831517612b5157612b50612971565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b8c602083612635565b9150612b9782612b58565b602082019050919050565b5f6020820190508181035f830152612bb981612b80565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612bf4601783612635565b9150612bff82612bc0565b602082019050919050565b5f6020820190508181035f830152612c2181612be8565b9050919050565b5f81519050612c36816126ef565b92915050565b5f60208284031215612c5157612c506126bb565b5b5f612c5e84828501612c28565b91505092915050565b5f604082019050612c7a5f8301856128e0565b612c8760208301846128e0565b9392505050565b5f819050919050565b5f819050919050565b5f612cba612cb5612cb084612c8e565b612c97565b612719565b9050919050565b612cca81612ca0565b82525050565b5f60c082019050612ce35f8301896128e0565b612cf060208301886127bd565b612cfd6040830187612cc1565b612d0a6060830186612cc1565b612d1760808301856128e0565b612d2460a08301846127bd565b979650505050505050565b5f81519050612d3d81612722565b92915050565b5f805f60608486031215612d5a57612d596126bb565b5b5f612d6786828701612d2f565b9350506020612d7886828701612d2f565b9250506040612d8986828701612d2f565b9150509250925092565b5f604082019050612da65f8301856128e0565b612db360208301846127bd565b9392505050565b612dc38161278a565b8114612dcd575f80fd5b50565b5f81519050612dde81612dba565b92915050565b5f60208284031215612df957612df86126bb565b5b5f612e0684828501612dd0565b91505092915050565b5f612e29612e24612e1f846126bf565b612c97565b6126bf565b9050919050565b5f612e3a82612e0f565b9050919050565b5f612e4b82612e30565b9050919050565b612e5b81612e41565b82525050565b5f604082019050612e745f830185612e52565b612e8160208301846127bd565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ee2602483612635565b9150612eed82612e88565b604082019050919050565b5f6020820190508181035f830152612f0f81612ed6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f70602283612635565b9150612f7b82612f16565b604082019050919050565b5f6020820190508181035f830152612f9d81612f64565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ffe602583612635565b915061300982612fa4565b604082019050919050565b5f6020820190508181035f83015261302b81612ff2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61308c602383612635565b915061309782613032565b604082019050919050565b5f6020820190508181035f8301526130b981613080565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61311a602983612635565b9150613125826130c0565b604082019050919050565b5f6020820190508181035f8301526131478161310e565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613182601983612635565b915061318d8261314e565b602082019050919050565b5f6020820190508181035f8301526131af81613176565b9050919050565b5f6131c082612719565b91506131cb83612719565b92508282019050808211156131e3576131e2612971565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61321d601a83612635565b9150613228826131e9565b602082019050919050565b5f6020820190508181035f83015261324a81613211565b9050919050565b5f61325b82612719565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328d5761328c612971565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6132cc600f83612635565b91506132d782613298565b602082019050919050565b5f6020820190508181035f8301526132f9816132c0565b9050919050565b5f61330a82612719565b915061331583612719565b925082820390508181111561332d5761332c612971565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61336a82612719565b915061337583612719565b92508261338557613384613333565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133ea602183612635565b91506133f582613390565b604082019050919050565b5f6020820190508181035f830152613417816133de565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134aa816126de565b82525050565b5f6134bb83836134a1565b60208301905092915050565b5f602082019050919050565b5f6134dd82613478565b6134e78185613482565b93506134f283613492565b805f5b8381101561352257815161350988826134b0565b9750613514836134c7565b9250506001810190506134f5565b5085935050505092915050565b5f60a0820190506135425f8301886127bd565b61354f6020830187612cc1565b818103604083015261356181866134d3565b905061357060608301856128e0565b61357d60808301846127bd565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6135bb601b83612635565b91506135c682613587565b602082019050919050565b5f6020820190508181035f8301526135e8816135af565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122079d584503c95f0db055f91e776a9ab2feee692515c8291aa7897430ab07e04f064736f6c63430008190033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c806383aa6290116100b5578063b201641f1161006e578063b201641f14610457578063bf474bed1461046d578063cee3e84d14610497578063dd62ed3e146104c1578063ddbbe290146104fd578063f5b3c3bf1461052557610155565b806383aa62901461035d5780638a8c523c146103875780638da5cb5b1461039d5780638f9a55c0146103c757806395d89b41146103f1578063a9059cbb1461041b57610155565b8063331221d511610107578063331221d51461027957806349bd5a5e146102a157806370a08231146102cb578063715018a614610307578063751039fc1461031d5780637d1db4a51461033357610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610561565b60405161017a919061269b565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a4919061274c565b61059e565b6040516101b691906127a4565b60405180910390f35b3480156101ca575f80fd5b506101d36105bb565b6040516101e091906127cc565b60405180910390f35b3480156101f4575f80fd5b506101fd6105c1565b60405161020a91906127cc565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906127e5565b6105e5565b60405161024691906127a4565b60405180910390f35b34801561025a575f80fd5b506102636106b9565b6040516102709190612850565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612869565b6106c1565b005b3480156102ac575f80fd5b506102b561077f565b6040516102c291906128ef565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec9190612908565b6107a4565b6040516102fe91906127cc565b60405180910390f35b348015610312575f80fd5b5061031b6107ea565b005b348015610328575f80fd5b50610331610938565b005b34801561033e575f80fd5b50610347610a6a565b60405161035491906127cc565b60405180910390f35b348015610368575f80fd5b50610371610a70565b60405161037e91906127cc565b60405180910390f35b348015610392575f80fd5b5061039b610a76565b005b3480156103a8575f80fd5b506103b161108c565b6040516103be91906128ef565b60405180910390f35b3480156103d2575f80fd5b506103db6110b3565b6040516103e891906127cc565b60405180910390f35b3480156103fc575f80fd5b506104056110b9565b604051610412919061269b565b60405180910390f35b348015610426575f80fd5b50610441600480360381019061043c919061274c565b6110f6565b60405161044e91906127a4565b60405180910390f35b348015610462575f80fd5b5061046b611113565b005b348015610478575f80fd5b5061048161120e565b60405161048e91906127cc565b60405180910390f35b3480156104a2575f80fd5b506104ab611214565b6040516104b891906127a4565b60405180910390f35b3480156104cc575f80fd5b506104e760048036038101906104e29190612933565b611227565b6040516104f491906127cc565b60405180910390f35b348015610508575f80fd5b50610523600480360381019061051e919061274c565b6112a9565b005b348015610530575f80fd5b5061054b60048036038101906105469190612908565b6113de565b60405161055891906127a4565b60405180910390f35b60606040518060400160405280601481526020017f47616e6773746572205261707065722043617473000000000000000000000000815250905090565b5f6105b16105aa6113fb565b8484611402565b6001905092915050565b60145481565b5f6009600a6105d09190612acd565b6461f313f8806105e09190612b17565b905090565b5f6105f18484846115c5565b6106ae846105fd6113fb565b6106a9856040518060600160405280602881526020016135f06028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106606113fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121089092919063ffffffff16565b611402565b600190509392505050565b5f6009905090565b6106c96113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074c90612ba2565b60405180910390fd5b846007819055508360088190555082600b8190555081600c8190555080600d819055505050505050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107f26113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087590612ba2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109406113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c390612ba2565b60405180910390fd5b6009600a6109da9190612acd565b6461f313f8806109ea9190612b17565b6011819055506009600a6109fe9190612acd565b6461f313f880610a0e9190612b17565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a439190612acd565b6461f313f880610a539190612b17565b604051610a6091906127cc565b60405180910390a1565b60115481565b60175481565b610a7e6113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190612ba2565b60405180910390fd5b601660149054906101000a900460ff1615610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190612c0a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bf73060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610be29190612acd565b6461f313f880610bf29190612b17565b611402565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c859190612c3c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2f9190612c3c565b6040518363ffffffff1660e01b8152600401610d4c929190612c67565b6020604051808303815f875af1158015610d68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8c9190612c3c565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610eff306107a4565b5f80610f0961108c565b426040518863ffffffff1660e01b8152600401610f2b96959493929190612cd0565b60606040518083038185885af1158015610f47573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f6c9190612d43565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161100c929190612d93565b6020604051808303815f875af1158015611028573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104c9190612de4565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f47414e4341540000000000000000000000000000000000000000000000000000815250905090565b5f6111096111026113fb565b84846115c5565b6001905092915050565b61111b6113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90612ba2565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561120b573d5f803e3d5ffd5b50565b60135481565b601860029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112b16113fb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490612ba2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611399929190612e61565b6020604051808303815f875af11580156113b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d99190612de4565b505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790612ef8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590612f86565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b891906127cc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90613014565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611698906130a2565b60405180910390fd5b5f81116116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90613130565b60405180910390fd5b5f6116ec61108c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561175a575061172a61108c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e585761179b606461178d600b54600e541161177a5760075461177e565b6009545b8561216a90919063ffffffff16565b6121e190919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611840575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611893575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611976576011548211156118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490613198565b60405180910390fd5b601254826118ea856107a4565b6118f491906131b6565b1115611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613233565b60405180910390fd5b43600160065461194591906131b6565b111561195e576119548361222a565b1561195d575f80fd5b5b600e5f81548092919061197090613251565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a14575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a725760125482611a26856107a4565b611a3091906131b6565b1115611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6890613233565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611af457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b3857611b356064611b27600c54600e5411611b1457600854611b18565b600a545b8561216a90919063ffffffff16565b6121e190919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bd6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c0e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c17575f90505b5f611c21306107a4565b9050601860029054906101000a900460ff168015611c4b575060185f9054906101000a900460ff16155b8015611c9d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611cb55750601860019054906101000a900460ff165b8015611cc2575060135481115b8015611cd15750600d54600e54115b15611d8557601054431115611ce8575f600f819055505b601754600f5410611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d25906132e2565b60405180910390fd5b611d4b611d4684611d418460145461223b565b61223b565b612253565b5f4790505f811115611d6157611d60476124bc565b5b600f5f815480929190611d7390613251565b91905055504360108190555050611e56565b60185f9054906101000a900460ff16158015611de7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611dff5750601860019054906101000a900460ff165b8015611e0c575060135481115b8015611e1b5750600d54600e54115b15611e5557611e3d611e3884611e338460145461223b565b61223b565b612253565b5f4790505f811115611e5357611e52476124bc565b5b505b5b505b5f811115611f5757611eb08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4e91906127cc565b60405180910390a35b611fa78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061204a611ffe828461258190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120ed848661258190919063ffffffff16565b6040516120fa91906127cc565b60405180910390a350505050565b5f83831115829061214f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612146919061269b565b60405180910390fd5b505f838561215d9190613300565b9050809150509392505050565b5f80830361217a575f90506121db565b5f82846121879190612b17565b90508284826121969190613360565b146121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90613400565b60405180910390fd5b809150505b92915050565b5f61222283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125ca565b905092915050565b5f80823b90505f8111915050919050565b5f818311612249578261224b565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122895761228861341e565b5b6040519080825280602002602001820160405280156122b75781602001602082028036833780820191505090505b50905030815f815181106122ce576122cd61344b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612372573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123969190612c3c565b816001815181106123aa576123a961344b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124103060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611402565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161247295949392919061352f565b5f604051808303815f87803b158015612489575f80fd5b505af115801561249b573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612520573d5f803e3d5ffd5b5050565b5f80828461253291906131b6565b905083811015612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e906135d1565b60405180910390fd5b8091505092915050565b5f6125c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612108565b905092915050565b5f8083118290612610576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612607919061269b565b60405180910390fd5b505f838561261e9190613360565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61266d8261262b565b6126778185612635565b9350612687818560208601612645565b61269081612653565b840191505092915050565b5f6020820190508181035f8301526126b38184612663565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126e8826126bf565b9050919050565b6126f8816126de565b8114612702575f80fd5b50565b5f81359050612713816126ef565b92915050565b5f819050919050565b61272b81612719565b8114612735575f80fd5b50565b5f8135905061274681612722565b92915050565b5f8060408385031215612762576127616126bb565b5b5f61276f85828601612705565b925050602061278085828601612738565b9150509250929050565b5f8115159050919050565b61279e8161278a565b82525050565b5f6020820190506127b75f830184612795565b92915050565b6127c681612719565b82525050565b5f6020820190506127df5f8301846127bd565b92915050565b5f805f606084860312156127fc576127fb6126bb565b5b5f61280986828701612705565b935050602061281a86828701612705565b925050604061282b86828701612738565b9150509250925092565b5f60ff82169050919050565b61284a81612835565b82525050565b5f6020820190506128635f830184612841565b92915050565b5f805f805f60a08688031215612882576128816126bb565b5b5f61288f88828901612738565b95505060206128a088828901612738565b94505060406128b188828901612738565b93505060606128c288828901612738565b92505060806128d388828901612738565b9150509295509295909350565b6128e9816126de565b82525050565b5f6020820190506129025f8301846128e0565b92915050565b5f6020828403121561291d5761291c6126bb565b5b5f61292a84828501612705565b91505092915050565b5f8060408385031215612949576129486126bb565b5b5f61295685828601612705565b925050602061296785828601612705565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156129f3578086048111156129cf576129ce612971565b5b60018516156129de5780820291505b80810290506129ec8561299e565b94506129b3565b94509492505050565b5f82612a0b5760019050612ac6565b81612a18575f9050612ac6565b8160018114612a2e5760028114612a3857612a67565b6001915050612ac6565b60ff841115612a4a57612a49612971565b5b8360020a915084821115612a6157612a60612971565b5b50612ac6565b5060208310610133831016604e8410600b8410161715612a9c5782820a905083811115612a9757612a96612971565b5b612ac6565b612aa984848460016129aa565b92509050818404811115612ac057612abf612971565b5b81810290505b9392505050565b5f612ad782612719565b9150612ae283612835565b9250612b0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129fc565b905092915050565b5f612b2182612719565b9150612b2c83612719565b9250828202612b3a81612719565b91508282048414831517612b5157612b50612971565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b8c602083612635565b9150612b9782612b58565b602082019050919050565b5f6020820190508181035f830152612bb981612b80565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612bf4601783612635565b9150612bff82612bc0565b602082019050919050565b5f6020820190508181035f830152612c2181612be8565b9050919050565b5f81519050612c36816126ef565b92915050565b5f60208284031215612c5157612c506126bb565b5b5f612c5e84828501612c28565b91505092915050565b5f604082019050612c7a5f8301856128e0565b612c8760208301846128e0565b9392505050565b5f819050919050565b5f819050919050565b5f612cba612cb5612cb084612c8e565b612c97565b612719565b9050919050565b612cca81612ca0565b82525050565b5f60c082019050612ce35f8301896128e0565b612cf060208301886127bd565b612cfd6040830187612cc1565b612d0a6060830186612cc1565b612d1760808301856128e0565b612d2460a08301846127bd565b979650505050505050565b5f81519050612d3d81612722565b92915050565b5f805f60608486031215612d5a57612d596126bb565b5b5f612d6786828701612d2f565b9350506020612d7886828701612d2f565b9250506040612d8986828701612d2f565b9150509250925092565b5f604082019050612da65f8301856128e0565b612db360208301846127bd565b9392505050565b612dc38161278a565b8114612dcd575f80fd5b50565b5f81519050612dde81612dba565b92915050565b5f60208284031215612df957612df86126bb565b5b5f612e0684828501612dd0565b91505092915050565b5f612e29612e24612e1f846126bf565b612c97565b6126bf565b9050919050565b5f612e3a82612e0f565b9050919050565b5f612e4b82612e30565b9050919050565b612e5b81612e41565b82525050565b5f604082019050612e745f830185612e52565b612e8160208301846127bd565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ee2602483612635565b9150612eed82612e88565b604082019050919050565b5f6020820190508181035f830152612f0f81612ed6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f70602283612635565b9150612f7b82612f16565b604082019050919050565b5f6020820190508181035f830152612f9d81612f64565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ffe602583612635565b915061300982612fa4565b604082019050919050565b5f6020820190508181035f83015261302b81612ff2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61308c602383612635565b915061309782613032565b604082019050919050565b5f6020820190508181035f8301526130b981613080565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61311a602983612635565b9150613125826130c0565b604082019050919050565b5f6020820190508181035f8301526131478161310e565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613182601983612635565b915061318d8261314e565b602082019050919050565b5f6020820190508181035f8301526131af81613176565b9050919050565b5f6131c082612719565b91506131cb83612719565b92508282019050808211156131e3576131e2612971565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61321d601a83612635565b9150613228826131e9565b602082019050919050565b5f6020820190508181035f83015261324a81613211565b9050919050565b5f61325b82612719565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328d5761328c612971565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6132cc600f83612635565b91506132d782613298565b602082019050919050565b5f6020820190508181035f8301526132f9816132c0565b9050919050565b5f61330a82612719565b915061331583612719565b925082820390508181111561332d5761332c612971565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61336a82612719565b915061337583612719565b92508261338557613384613333565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133ea602183612635565b91506133f582613390565b604082019050919050565b5f6020820190508181035f830152613417816133de565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134aa816126de565b82525050565b5f6134bb83836134a1565b60208301905092915050565b5f602082019050919050565b5f6134dd82613478565b6134e78185613482565b93506134f283613492565b805f5b8381101561352257815161350988826134b0565b9750613514836134c7565b9250506001810190506134f5565b5085935050505092915050565b5f60a0820190506135425f8301886127bd565b61354f6020830187612cc1565b818103604083015261356181866134d3565b905061357060608301856128e0565b61357d60808301846127bd565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6135bb601b83612635565b91506135c682613587565b602082019050919050565b5f6020820190508181035f8301526135e8816135af565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122079d584503c95f0db055f91e776a9ab2feee692515c8291aa7897430ab07e04f064736f6c63430008190033

Deployed Bytecode Sourcemap

3614:9265:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5642:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6475:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4826:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5919:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6644:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5828:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11207:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4938:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6022:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2697:148;;;;;;;;;;;;;:::i;:::-;;11762:159;;;;;;;;;;;;;:::i;:::-;;4631:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5004:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12029:810;;;;;;;;;;;;;:::i;:::-;;2483:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4694:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5733:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6149:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11088:111;;;;;;;;;;;;;:::i;:::-;;4759:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5115:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6324:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11606:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3881:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5642:83;5679:13;5712:5;;;;;;;;;;;;;;;;;5705:12;;5642:83;:::o;6475:161::-;6550:4;6567:39;6576:12;:10;:12::i;:::-;6590:7;6599:6;6567:8;:39::i;:::-;6624:4;6617:11;;6475:161;;;;:::o;4826:54::-;;;;:::o;5919:95::-;5972:7;4429:1;4487:2;:13;;;;:::i;:::-;4472:12;:28;;;;:::i;:::-;5992:14;;5919:95;:::o;6644:313::-;6742:4;6759:36;6769:6;6777:9;6788:6;6759:9;:36::i;:::-;6806:121;6815:6;6823:12;:10;:12::i;:::-;6837:89;6875:6;6837:89;;;;;;;;;;;;;;;;;:11;:19;6849:6;6837:19;;;;;;;;;;;;;;;:33;6857:12;:10;:12::i;:::-;6837:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6806:8;:121::i;:::-;6945:4;6938:11;;6644:313;;;;;:::o;5828:83::-;5869:5;4429:1;5887:16;;5828:83;:::o;11207:391::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11401:16:::1;11384:14;:33;;;;11446:17;11428:15;:35;;;;11492:11;11474:15;:29;;;;11533:11;11514:16;:30;;;;11576:14;11555:18;:35;;;;11207:391:::0;;;;;:::o;4938:28::-;;;;;;;;;;;;;:::o;6022:119::-;6088:7;6115:9;:18;6125:7;6115:18;;;;;;;;;;;;;;;;6108:25;;6022:119;;;:::o;2697:148::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2804:1:::1;2767:40;;2788:6;::::0;::::1;;;;;;;;2767:40;;;;;;;;;;;;2835:1;2818:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2697:148::o:0;11762:159::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4429:1:::1;4487:2;:13;;;;:::i;:::-;4472:12;:28;;;;:::i;:::-;11815:12;:22;;;;4429:1;4487:2;:13;;;;:::i;:::-;4472:12;:28;;;;:::i;:::-;11848:14;:22;;;;11886:27;4429:1;4487:2;:13;;;;:::i;:::-;4472:12;:28;;;;:::i;:::-;11886:27;;;;;;:::i;:::-;;;;;;;;11762:159::o:0;4631:56::-;;;;:::o;5004:31::-;;;;:::o;12029:810::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12095:11:::1;;;;;;;;;;;12094:12;12086:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12181:42;12144:15;;:80;;;;;;;;;;;;;;;;;;12235:58;12252:4;12267:15;;;;;;;;;;;4429:1;4487:2;:13;;;;:::i;:::-;4472:12;:28;;;;:::i;:::-;12235:8;:58::i;:::-;12338:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12320:55;;;12384:4;12391:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12320:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12304:13;;:110;;;;;;;;;;;;;;;;;;12462:4;12425:10;:34;12444:13;;;;;;;;;;;12425:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12511:4;12477:7;:31;12493:13;;;;;;;;;;;12477:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12526:15;;;;;;;;;;;:31;;;12565:21;12596:4;12602:24;12620:4;12602:9;:24::i;:::-;12627:1;12629::::0;12631:7:::1;:5;:7::i;:::-;12639:15;12526:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12673:13;;;;;;;;;;;12666:29;;;12704:15;;;;;;;;;;;12722:14;12666:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12762:4;12748:11;;:18;;;;;;;;;;;;;;;;;;12791:4;12777:11;;:18;;;;;;;;;;;;;;;;;;12819:12;12806:10;:25;;;;12029:810::o:0;2483:79::-;2521:7;2548:6;;;;;;;;;;;2541:13;;2483:79;:::o;4694:58::-;;;;:::o;5733:87::-;5772:13;5805:7;;;;;;;;;;;;;;;;;5798:14;;5733:87;:::o;6149:167::-;6227:4;6244:42;6254:12;:10;:12::i;:::-;6268:9;6279:6;6244:9;:42::i;:::-;6304:4;6297:11;;6149:167;;;;:::o;11088:111::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11148:10:::1;;;;;;;;;;;11140:28;;:51;11169:21;11140:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11088:111::o:0;4759:60::-;;;;:::o;5115:26::-;;;;;;;;;;;;;:::o;6324:143::-;6405:7;6432:11;:18;6444:5;6432:18;;;;;;;;;;;;;;;:27;6451:7;6432:27;;;;;;;;;;;;;;;;6425:34;;6324:143;;;;:::o;11606:148::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11705:10:::1;11698:27;;;11726:10;;;;;;;;;;;11738:7;11698:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11606:148:::0;;:::o;3881:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;238:98::-;291:7;318:10;311:17;;238:98;:::o;6965:335::-;7075:1;7058:19;;:5;:19;;;7050:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7156:1;7137:21;;:7;:21;;;7129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7238:6;7208:11;:18;7220:5;7208:18;;;;;;;;;;;;;;;:27;7227:7;7208:27;;;;;;;;;;;;;;;:36;;;;7276:7;7260:32;;7269:5;7260:32;;;7285:6;7260:32;;;;;;:::i;:::-;;;;;;;;6965:335;;;:::o;7308:2970::-;7412:1;7396:18;;:4;:18;;;7388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7489:1;7475:16;;:2;:16;;;7467:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7559:1;7550:6;:10;7542:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7617:17;7661:7;:5;:7::i;:::-;7653:15;;:4;:15;;;;:32;;;;;7678:7;:5;:7::i;:::-;7672:13;;:2;:13;;;;7653:32;7649:2273;;;7714:79;7789:3;7714:70;7737:15;;7726:9;;:26;7725:58;;7769:14;;7725:58;;;7755:12;;7725:58;7714:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;7702:91;;7814:10;:16;7825:4;7814:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;7848:15;;;;;;;;;;;7834:30;;:2;:30;;;;7814:50;:67;;;;;7870:7;:11;7878:2;7870:11;;;;;;;;;;;;;;;;;;;;;;;;;7868:13;7814:67;7810:420;;;7921:12;;7911:6;:22;;7903:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8016:14;;8006:6;7990:13;8000:2;7990:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7982:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8104:12;8099:1;8086:10;;:14;;;;:::i;:::-;:30;8082:103;;;8150:14;8161:2;8150:10;:14::i;:::-;8149:15;8141:24;;;;;;8082:103;8203:9;;:11;;;;;;;;;:::i;:::-;;;;;;7810:420;8251:10;:14;8262:2;8251:14;;;;;;;;;;;;;;;;;;;;;;;;;8250:15;:32;;;;;8271:7;:11;8279:2;8271:11;;;;;;;;;;;;;;;;;;;;;;;;;8269:13;8250:32;8246:152;;;8337:14;;8327:6;8311:13;8321:2;8311:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8303:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8246:152;8417:10;:14;8428:2;8417:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;8450:4;8435:20;;:4;:20;;;;8417:38;8414:172;;;8488:82;8566:3;8488:73;8511:16;;8500:9;;:27;8499:61;;8545:15;;8499:61;;;8530:13;;8499:61;8488:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8476:94;;8414:172;8600:10;:16;8611:4;8600:16;;;;;;;;;;;;;;;;;;;;;;;;;8599:17;:36;;;;;8621:10;:14;8632:2;8621:14;;;;;;;;;;;;;;;;;;;;;;;;;8620:15;8599:36;:60;;;;;8654:4;8639:20;;:4;:20;;;;8599:60;8595:115;;;8693:1;8681:13;;8595:115;8726:28;8757:24;8775:4;8757:9;:24::i;:::-;8726:55;;8800:7;;;;;;;;;;;:18;;;;;8812:6;;;;;;;;;;;8811:7;8800:18;:36;;;;;8822:10;:14;8833:2;8822:14;;;;;;;;;;;;;;;;;;;;;;;;;8800:36;:51;;;;;8840:11;;;;;;;;;;;8800:51;:93;;;;;8876:17;;8855:20;:38;8800:93;:125;;;;;8907:18;;8897:9;;:28;8800:125;8796:1115;;;8965:13;;8950:12;:28;8946:90;;;9015:1;9003:9;:13;;;;8946:90;9074:12;;9062:9;;:24;9054:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;9125:67;9142:49;9146:6;9153:37;9157:20;9178:11;;9153:3;:37::i;:::-;9142:3;:49::i;:::-;9125:16;:67::i;:::-;9211:26;9240:21;9211:50;;9304:1;9283:18;:22;9280:105;;;9330:35;9343:21;9330:12;:35::i;:::-;9280:105;9403:9;;:11;;;;;;;;;:::i;:::-;;;;;;9449:12;9433:13;:28;;;;8927:550;8796:1115;;;9502:6;;;;;;;;;;;9501:7;:25;;;;;9512:10;:14;9523:2;9512:14;;;;;;;;;;;;;;;;;;;;;;;;;9501:25;:40;;;;;9530:11;;;;;;;;;;;9501:40;:82;;;;;9566:17;;9545:20;:38;9501:82;:114;;;;;9597:18;;9587:9;;:28;9501:114;9498:413;;;9636:67;9653:49;9657:6;9664:37;9668:20;9689:11;;9664:3;:37::i;:::-;9653:3;:49::i;:::-;9636:16;:67::i;:::-;9722:26;9751:21;9722:50;;9815:1;9794:18;:22;9791:105;;;9841:35;9854:21;9841:12;:35::i;:::-;9791:105;9617:294;9498:413;8796:1115;7687:2235;7649:2273;9947:1;9937:9;:11;9934:161;;;9987:39;10016:9;9987;:24;10005:4;9987:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9962:9;:24;9980:4;9962:24;;;;;;;;;;;;;;;:64;;;;10067:4;10044:39;;10053:4;10044:39;;;10073:9;10044:39;;;;;;:::i;:::-;;;;;;;;9934:161;10121:27;10141:6;10121:9;:15;10131:4;10121:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10105:9;:15;10115:4;10105:15;;;;;;;;;;;;;;;:43;;;;10173:40;10191:21;10202:9;10191:6;:10;;:21;;;;:::i;:::-;10173:9;:13;10183:2;10173:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10159:9;:13;10169:2;10159:13;;;;;;;;;;;;;;;:54;;;;10244:2;10229:41;;10238:4;10229:41;;;10248:21;10259:9;10248:6;:10;;:21;;;;:::i;:::-;10229:41;;;;;;:::i;:::-;;;;;;;;7377:2901;7308:2970;;;:::o;1375:190::-;1461:7;1494:1;1489;:6;;1497:12;1481:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1521:9;1537:1;1533;:5;;;;:::i;:::-;1521:17;;1556:1;1549:8;;;1375:190;;;;;:::o;1573:246::-;1631:7;1660:1;1655;:6;1651:47;;1685:1;1678:8;;;;1651:47;1708:9;1724:1;1720;:5;;;;:::i;:::-;1708:17;;1753:1;1748;1744;:5;;;;:::i;:::-;:10;1736:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1810:1;1803:8;;;1573:246;;;;;:::o;1827:132::-;1885:7;1912:39;1916:1;1919;1912:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1905:46;;1827:132;;;;:::o;10394:195::-;10453:4;10470:12;10537:7;10525:20;10517:28;;10580:1;10573:4;:8;10566:15;;;10394:195;;;:::o;10288:98::-;10345:7;10372:1;10370;:3;10369:9;;10377:1;10369:9;;;10375:1;10369:9;10362:16;;10288:98;;;;:::o;10597:483::-;5241:4;5232:6;;:13;;;;;;;;;;;;;;;;;;10675:21:::1;10713:1;10699:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10675:40;;10744:4;10726;10731:1;10726:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10770:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10760:4;10765:1;10760:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10803:62;10820:4;10835:15;;;;;;;;;;;10853:11;10803:8;:62::i;:::-;10876:15;;;;;;;;;;;:66;;;10957:11;10983:1;10999:4;11026;11046:15;10876:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10664:416;5277:5:::0;5268:6;;:14;;;;;;;;;;;;;;;;;;10597:483;:::o;11929:92::-;11986:10;;;;;;;;;;;:19;;:27;12006:6;11986:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11929:92;:::o;1044:179::-;1102:7;1122:9;1138:1;1134;:5;;;;:::i;:::-;1122:17;;1163:1;1158;:6;;1150:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1214:1;1207:8;;;1044:179;;;;:::o;1231:136::-;1289:7;1316:43;1320:1;1323;1316:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1309:50;;1231:136;;;;:::o;1967:189::-;2053:7;2085:1;2081;:5;2088:12;2073:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2112:9;2128:1;2124;:5;;;;:::i;:::-;2112:17;;2147:1;2140:8;;;1967: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:911::-;4841:6;4849;4857;4865;4873;4922:3;4910:9;4901:7;4897:23;4893:33;4890:120;;;4929:79;;:::i;:::-;4890:120;5049:1;5074:53;5119:7;5110:6;5099:9;5095:22;5074:53;:::i;:::-;5064:63;;5020:117;5176:2;5202:53;5247:7;5238:6;5227:9;5223:22;5202:53;:::i;:::-;5192:63;;5147:118;5304:2;5330:53;5375:7;5366:6;5355:9;5351:22;5330:53;:::i;:::-;5320:63;;5275:118;5432:2;5458:53;5503:7;5494:6;5483:9;5479:22;5458:53;:::i;:::-;5448:63;;5403:118;5560:3;5587:53;5632:7;5623:6;5612:9;5608:22;5587:53;:::i;:::-;5577:63;;5531:119;4746:911;;;;;;;;:::o;5663:118::-;5750:24;5768:5;5750:24;:::i;:::-;5745:3;5738:37;5663:118;;:::o;5787:222::-;5880:4;5918:2;5907:9;5903:18;5895:26;;5931:71;5999:1;5988:9;5984:17;5975:6;5931:71;:::i;:::-;5787:222;;;;:::o;6015:329::-;6074:6;6123:2;6111:9;6102:7;6098:23;6094:32;6091:119;;;6129:79;;:::i;:::-;6091:119;6249:1;6274:53;6319:7;6310:6;6299:9;6295:22;6274:53;:::i;:::-;6264:63;;6220:117;6015:329;;;;:::o;6350:474::-;6418:6;6426;6475:2;6463:9;6454:7;6450:23;6446:32;6443:119;;;6481:79;;:::i;:::-;6443:119;6601:1;6626:53;6671:7;6662:6;6651:9;6647:22;6626:53;:::i;:::-;6616:63;;6572:117;6728:2;6754:53;6799:7;6790:6;6779:9;6775:22;6754:53;:::i;:::-;6744:63;;6699:118;6350:474;;;;;:::o;6830:180::-;6878:77;6875:1;6868:88;6975:4;6972:1;6965:15;6999:4;6996:1;6989:15;7016:102;7058:8;7105:5;7102:1;7098:13;7077:34;;7016:102;;;:::o;7124:848::-;7185:5;7192:4;7216:6;7207:15;;7240:5;7231:14;;7254:712;7275:1;7265:8;7262:15;7254:712;;;7370:4;7365:3;7361:14;7355:4;7352:24;7349:50;;;7379:18;;:::i;:::-;7349:50;7429:1;7419:8;7415:16;7412:451;;;7844:4;7837:5;7833:16;7824:25;;7412:451;7894:4;7888;7884:15;7876:23;;7924:32;7947:8;7924:32;:::i;:::-;7912:44;;7254:712;;;7124:848;;;;;;;:::o;7978:1073::-;8032:5;8223:8;8213:40;;8244:1;8235:10;;8246:5;;8213:40;8272:4;8262:36;;8289:1;8280:10;;8291:5;;8262:36;8358:4;8406:1;8401:27;;;;8442:1;8437:191;;;;8351:277;;8401:27;8419:1;8410:10;;8421:5;;;8437:191;8482:3;8472:8;8469:17;8466:43;;;8489:18;;:::i;:::-;8466:43;8538:8;8535:1;8531:16;8522:25;;8573:3;8566:5;8563:14;8560:40;;;8580:18;;:::i;:::-;8560:40;8613:5;;;8351:277;;8737:2;8727:8;8724:16;8718:3;8712:4;8709:13;8705:36;8687:2;8677:8;8674:16;8669:2;8663:4;8660:12;8656:35;8640:111;8637:246;;;8793:8;8787:4;8783:19;8774:28;;8828:3;8821:5;8818:14;8815:40;;;8835:18;;:::i;:::-;8815:40;8868:5;;8637:246;8908:42;8946:3;8936:8;8930:4;8927:1;8908:42;:::i;:::-;8893:57;;;;8982:4;8977:3;8973:14;8966:5;8963:25;8960:51;;;8991:18;;:::i;:::-;8960:51;9040:4;9033:5;9029:16;9020:25;;7978:1073;;;;;;:::o;9057:281::-;9115:5;9139:23;9157:4;9139:23;:::i;:::-;9131:31;;9183:25;9199:8;9183:25;:::i;:::-;9171:37;;9227:104;9264:66;9254:8;9248:4;9227:104;:::i;:::-;9218:113;;9057:281;;;;:::o;9344:410::-;9384:7;9407:20;9425:1;9407:20;:::i;:::-;9402:25;;9441:20;9459:1;9441:20;:::i;:::-;9436:25;;9496:1;9493;9489:9;9518:30;9536:11;9518:30;:::i;:::-;9507:41;;9697:1;9688:7;9684:15;9681:1;9678:22;9658:1;9651:9;9631:83;9608:139;;9727:18;;:::i;:::-;9608:139;9392:362;9344:410;;;;:::o;9760:182::-;9900:34;9896:1;9888:6;9884:14;9877:58;9760:182;:::o;9948:366::-;10090:3;10111:67;10175:2;10170:3;10111:67;:::i;:::-;10104:74;;10187:93;10276:3;10187:93;:::i;:::-;10305:2;10300:3;10296:12;10289:19;;9948:366;;;:::o;10320:419::-;10486:4;10524:2;10513:9;10509:18;10501:26;;10573:9;10567:4;10563:20;10559:1;10548:9;10544:17;10537:47;10601:131;10727:4;10601:131;:::i;:::-;10593:139;;10320:419;;;:::o;10745:173::-;10885:25;10881:1;10873:6;10869:14;10862:49;10745:173;:::o;10924:366::-;11066:3;11087:67;11151:2;11146:3;11087:67;:::i;:::-;11080:74;;11163:93;11252:3;11163:93;:::i;:::-;11281:2;11276:3;11272:12;11265:19;;10924:366;;;:::o;11296:419::-;11462:4;11500:2;11489:9;11485:18;11477:26;;11549:9;11543:4;11539:20;11535:1;11524:9;11520:17;11513:47;11577:131;11703:4;11577:131;:::i;:::-;11569:139;;11296:419;;;:::o;11721:143::-;11778:5;11809:6;11803:13;11794:22;;11825:33;11852:5;11825:33;:::i;:::-;11721:143;;;;:::o;11870:351::-;11940:6;11989:2;11977:9;11968:7;11964:23;11960:32;11957:119;;;11995:79;;:::i;:::-;11957:119;12115:1;12140:64;12196:7;12187:6;12176:9;12172:22;12140:64;:::i;:::-;12130:74;;12086:128;11870:351;;;;:::o;12227:332::-;12348:4;12386:2;12375:9;12371:18;12363:26;;12399:71;12467:1;12456:9;12452:17;12443:6;12399:71;:::i;:::-;12480:72;12548:2;12537:9;12533:18;12524:6;12480:72;:::i;:::-;12227:332;;;;;:::o;12565:85::-;12610:7;12639:5;12628:16;;12565:85;;;:::o;12656:60::-;12684:3;12705:5;12698:12;;12656:60;;;:::o;12722:158::-;12780:9;12813:61;12831:42;12840:32;12866:5;12840:32;:::i;:::-;12831:42;:::i;:::-;12813:61;:::i;:::-;12800:74;;12722:158;;;:::o;12886:147::-;12981:45;13020:5;12981:45;:::i;:::-;12976:3;12969:58;12886:147;;:::o;13039:807::-;13288:4;13326:3;13315:9;13311:19;13303:27;;13340:71;13408:1;13397:9;13393:17;13384:6;13340:71;:::i;:::-;13421:72;13489:2;13478:9;13474:18;13465:6;13421:72;:::i;:::-;13503:80;13579:2;13568:9;13564:18;13555:6;13503:80;:::i;:::-;13593;13669:2;13658:9;13654:18;13645:6;13593:80;:::i;:::-;13683:73;13751:3;13740:9;13736:19;13727:6;13683:73;:::i;:::-;13766;13834:3;13823:9;13819:19;13810:6;13766:73;:::i;:::-;13039:807;;;;;;;;;:::o;13852:143::-;13909:5;13940:6;13934:13;13925:22;;13956:33;13983:5;13956:33;:::i;:::-;13852:143;;;;:::o;14001:663::-;14089:6;14097;14105;14154:2;14142:9;14133:7;14129:23;14125:32;14122:119;;;14160:79;;:::i;:::-;14122:119;14280:1;14305:64;14361:7;14352:6;14341:9;14337:22;14305:64;:::i;:::-;14295:74;;14251:128;14418:2;14444:64;14500:7;14491:6;14480:9;14476:22;14444:64;:::i;:::-;14434:74;;14389:129;14557:2;14583:64;14639:7;14630:6;14619:9;14615:22;14583:64;:::i;:::-;14573:74;;14528:129;14001:663;;;;;:::o;14670:332::-;14791:4;14829:2;14818:9;14814:18;14806:26;;14842:71;14910:1;14899:9;14895:17;14886:6;14842:71;:::i;:::-;14923:72;14991:2;14980:9;14976:18;14967:6;14923:72;:::i;:::-;14670:332;;;;;:::o;15008:116::-;15078:21;15093:5;15078:21;:::i;:::-;15071:5;15068:32;15058:60;;15114:1;15111;15104:12;15058:60;15008:116;:::o;15130:137::-;15184:5;15215:6;15209:13;15200:22;;15231:30;15255:5;15231:30;:::i;:::-;15130:137;;;;:::o;15273:345::-;15340:6;15389:2;15377:9;15368:7;15364:23;15360:32;15357:119;;;15395:79;;:::i;:::-;15357:119;15515:1;15540:61;15593:7;15584:6;15573:9;15569:22;15540:61;:::i;:::-;15530:71;;15486:125;15273:345;;;;:::o;15624:142::-;15674:9;15707:53;15725:34;15734:24;15752:5;15734:24;:::i;:::-;15725:34;:::i;:::-;15707:53;:::i;:::-;15694:66;;15624:142;;;:::o;15772:126::-;15822:9;15855:37;15886:5;15855:37;:::i;:::-;15842:50;;15772:126;;;:::o;15904:134::-;15962:9;15995:37;16026:5;15995:37;:::i;:::-;15982:50;;15904:134;;;:::o;16044:147::-;16139:45;16178:5;16139:45;:::i;:::-;16134:3;16127:58;16044:147;;:::o;16197:348::-;16326:4;16364:2;16353:9;16349:18;16341:26;;16377:79;16453:1;16442:9;16438:17;16429:6;16377:79;:::i;:::-;16466:72;16534:2;16523:9;16519:18;16510:6;16466:72;:::i;:::-;16197:348;;;;;:::o;16551:223::-;16691:34;16687:1;16679:6;16675:14;16668:58;16760:6;16755:2;16747:6;16743:15;16736:31;16551:223;:::o;16780:366::-;16922:3;16943:67;17007:2;17002:3;16943:67;:::i;:::-;16936:74;;17019:93;17108:3;17019:93;:::i;:::-;17137:2;17132:3;17128:12;17121:19;;16780:366;;;:::o;17152:419::-;17318:4;17356:2;17345:9;17341:18;17333:26;;17405:9;17399:4;17395:20;17391:1;17380:9;17376:17;17369:47;17433:131;17559:4;17433:131;:::i;:::-;17425:139;;17152:419;;;:::o;17577:221::-;17717:34;17713:1;17705:6;17701:14;17694:58;17786:4;17781:2;17773:6;17769:15;17762:29;17577:221;:::o;17804:366::-;17946:3;17967:67;18031:2;18026:3;17967:67;:::i;:::-;17960:74;;18043:93;18132:3;18043:93;:::i;:::-;18161:2;18156:3;18152:12;18145:19;;17804:366;;;:::o;18176:419::-;18342:4;18380:2;18369:9;18365:18;18357:26;;18429:9;18423:4;18419:20;18415:1;18404:9;18400:17;18393:47;18457:131;18583:4;18457:131;:::i;:::-;18449:139;;18176:419;;;:::o;18601:224::-;18741:34;18737:1;18729:6;18725:14;18718:58;18810:7;18805:2;18797:6;18793:15;18786:32;18601:224;:::o;18831:366::-;18973:3;18994:67;19058:2;19053:3;18994:67;:::i;:::-;18987:74;;19070:93;19159:3;19070:93;:::i;:::-;19188:2;19183:3;19179:12;19172:19;;18831:366;;;:::o;19203:419::-;19369:4;19407:2;19396:9;19392:18;19384:26;;19456:9;19450:4;19446:20;19442:1;19431:9;19427:17;19420:47;19484:131;19610:4;19484:131;:::i;:::-;19476:139;;19203:419;;;:::o;19628:222::-;19768:34;19764:1;19756:6;19752:14;19745:58;19837:5;19832:2;19824:6;19820:15;19813:30;19628:222;:::o;19856:366::-;19998:3;20019:67;20083:2;20078:3;20019:67;:::i;:::-;20012:74;;20095:93;20184:3;20095:93;:::i;:::-;20213:2;20208:3;20204:12;20197:19;;19856:366;;;:::o;20228:419::-;20394:4;20432:2;20421:9;20417:18;20409:26;;20481:9;20475:4;20471:20;20467:1;20456:9;20452:17;20445:47;20509:131;20635:4;20509:131;:::i;:::-;20501:139;;20228:419;;;:::o;20653:228::-;20793:34;20789:1;20781:6;20777:14;20770:58;20862:11;20857:2;20849:6;20845:15;20838:36;20653:228;:::o;20887:366::-;21029:3;21050:67;21114:2;21109:3;21050:67;:::i;:::-;21043:74;;21126:93;21215:3;21126:93;:::i;:::-;21244:2;21239:3;21235:12;21228:19;;20887:366;;;:::o;21259:419::-;21425:4;21463:2;21452:9;21448:18;21440:26;;21512:9;21506:4;21502:20;21498:1;21487:9;21483:17;21476:47;21540:131;21666:4;21540:131;:::i;:::-;21532:139;;21259:419;;;:::o;21684:175::-;21824:27;21820:1;21812:6;21808:14;21801:51;21684:175;:::o;21865:366::-;22007:3;22028:67;22092:2;22087:3;22028:67;:::i;:::-;22021:74;;22104:93;22193:3;22104:93;:::i;:::-;22222:2;22217:3;22213:12;22206:19;;21865:366;;;:::o;22237:419::-;22403:4;22441:2;22430:9;22426:18;22418:26;;22490:9;22484:4;22480:20;22476:1;22465:9;22461:17;22454:47;22518:131;22644:4;22518:131;:::i;:::-;22510:139;;22237:419;;;:::o;22662:191::-;22702:3;22721:20;22739:1;22721:20;:::i;:::-;22716:25;;22755:20;22773:1;22755:20;:::i;:::-;22750:25;;22798:1;22795;22791:9;22784:16;;22819:3;22816:1;22813:10;22810:36;;;22826:18;;:::i;:::-;22810:36;22662:191;;;;:::o;22859:176::-;22999:28;22995:1;22987:6;22983:14;22976:52;22859:176;:::o;23041:366::-;23183:3;23204:67;23268:2;23263:3;23204:67;:::i;:::-;23197:74;;23280:93;23369:3;23280:93;:::i;:::-;23398:2;23393:3;23389:12;23382:19;;23041:366;;;:::o;23413:419::-;23579:4;23617:2;23606:9;23602:18;23594:26;;23666:9;23660:4;23656:20;23652:1;23641:9;23637:17;23630:47;23694:131;23820:4;23694:131;:::i;:::-;23686:139;;23413:419;;;:::o;23838:233::-;23877:3;23900:24;23918:5;23900:24;:::i;:::-;23891:33;;23946:66;23939:5;23936:77;23933:103;;24016:18;;:::i;:::-;23933:103;24063:1;24056:5;24052:13;24045:20;;23838:233;;;:::o;24077:165::-;24217:17;24213:1;24205:6;24201:14;24194:41;24077:165;:::o;24248:366::-;24390:3;24411:67;24475:2;24470:3;24411:67;:::i;:::-;24404:74;;24487:93;24576:3;24487:93;:::i;:::-;24605:2;24600:3;24596:12;24589:19;;24248:366;;;:::o;24620:419::-;24786:4;24824:2;24813:9;24809:18;24801:26;;24873:9;24867:4;24863:20;24859:1;24848:9;24844:17;24837:47;24901:131;25027:4;24901:131;:::i;:::-;24893:139;;24620:419;;;:::o;25045:194::-;25085:4;25105:20;25123:1;25105:20;:::i;:::-;25100:25;;25139:20;25157:1;25139:20;:::i;:::-;25134:25;;25183:1;25180;25176:9;25168:17;;25207:1;25201:4;25198:11;25195:37;;;25212:18;;:::i;:::-;25195:37;25045:194;;;;:::o;25245:180::-;25293:77;25290:1;25283:88;25390:4;25387:1;25380:15;25414:4;25411:1;25404:15;25431:185;25471:1;25488:20;25506:1;25488:20;:::i;:::-;25483:25;;25522:20;25540:1;25522:20;:::i;:::-;25517:25;;25561:1;25551:35;;25566:18;;:::i;:::-;25551:35;25608:1;25605;25601:9;25596:14;;25431:185;;;;:::o;25622:220::-;25762:34;25758:1;25750:6;25746:14;25739:58;25831:3;25826:2;25818:6;25814:15;25807:28;25622:220;:::o;25848:366::-;25990:3;26011:67;26075:2;26070:3;26011:67;:::i;:::-;26004:74;;26087:93;26176:3;26087:93;:::i;:::-;26205:2;26200:3;26196:12;26189:19;;25848:366;;;:::o;26220:419::-;26386:4;26424:2;26413:9;26409:18;26401:26;;26473:9;26467:4;26463:20;26459:1;26448:9;26444:17;26437:47;26501:131;26627:4;26501:131;:::i;:::-;26493:139;;26220:419;;;:::o;26645:180::-;26693:77;26690:1;26683:88;26790:4;26787:1;26780:15;26814:4;26811:1;26804:15;26831:180;26879:77;26876:1;26869:88;26976:4;26973:1;26966:15;27000:4;26997:1;26990:15;27017:114;27084:6;27118:5;27112:12;27102:22;;27017:114;;;:::o;27137:184::-;27236:11;27270:6;27265:3;27258:19;27310:4;27305:3;27301:14;27286:29;;27137:184;;;;:::o;27327:132::-;27394:4;27417:3;27409:11;;27447:4;27442:3;27438:14;27430:22;;27327:132;;;:::o;27465:108::-;27542:24;27560:5;27542:24;:::i;:::-;27537:3;27530:37;27465:108;;:::o;27579:179::-;27648:10;27669:46;27711:3;27703:6;27669:46;:::i;:::-;27747:4;27742:3;27738:14;27724:28;;27579:179;;;;:::o;27764:113::-;27834:4;27866;27861:3;27857:14;27849:22;;27764:113;;;:::o;27913:732::-;28032:3;28061:54;28109:5;28061:54;:::i;:::-;28131:86;28210:6;28205:3;28131:86;:::i;:::-;28124:93;;28241:56;28291:5;28241:56;:::i;:::-;28320:7;28351:1;28336:284;28361:6;28358:1;28355:13;28336:284;;;28437:6;28431:13;28464:63;28523:3;28508:13;28464:63;:::i;:::-;28457:70;;28550:60;28603:6;28550:60;:::i;:::-;28540:70;;28396:224;28383:1;28380;28376:9;28371:14;;28336:284;;;28340:14;28636:3;28629:10;;28037:608;;;27913:732;;;;:::o;28651:831::-;28914:4;28952:3;28941:9;28937:19;28929:27;;28966:71;29034:1;29023:9;29019:17;29010:6;28966:71;:::i;:::-;29047:80;29123:2;29112:9;29108:18;29099:6;29047:80;:::i;:::-;29174:9;29168:4;29164:20;29159:2;29148:9;29144:18;29137:48;29202:108;29305:4;29296:6;29202:108;:::i;:::-;29194:116;;29320:72;29388:2;29377:9;29373:18;29364:6;29320:72;:::i;:::-;29402:73;29470:3;29459:9;29455:19;29446:6;29402:73;:::i;:::-;28651:831;;;;;;;;:::o;29488:177::-;29628:29;29624:1;29616:6;29612:14;29605:53;29488:177;:::o;29671:366::-;29813:3;29834:67;29898:2;29893:3;29834:67;:::i;:::-;29827:74;;29910:93;29999:3;29910:93;:::i;:::-;30028:2;30023:3;30019:12;30012:19;;29671:366;;;:::o;30043:419::-;30209:4;30247:2;30236:9;30232:18;30224:26;;30296:9;30290:4;30286:20;30282:1;30271:9;30267:17;30260:47;30324:131;30450:4;30324:131;:::i;:::-;30316:139;;30043:419;;;:::o

Swarm Source

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