ETH Price: $3,157.04 (+1.46%)

Token

DUCKEY (Duckey)
 

Overview

Max Total Supply

420,690,000,000 Duckey

Holders

350

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,165,728,180.853666258 Duckey

Value
$0.00
0x2aEfa1F0b01841bD8Bcee8734F46B966F318Ba41
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:
DUCKEY

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

*/

// SPDX-License-Identifier: UNLICENSE

/*
DUCKEY by Matt Furie
Website: https://duckey.meme/
Twitter X: https://x.com/duckeyeth
Telegram: https://t.me/DuckeyByMattFurie

*/
pragma solidity 0.8.26;

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 DUCKEY is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=10;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=15;
    uint256 private _reduceSellTaxAt=23;
    uint256 private _preventSwapBefore=25;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;  
    string private constant _name = unicode"DUCKEY";
    string private constant _symbol = unicode"Duckey";
    uint256 public _maxTxAmount = 42069000000 * 10**_decimals;  
    uint256 public _maxWalletSize = 42069000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 2103450000  * 10**_decimals;
    uint256 public _maxTaxSwap= 2103450000  * 10**_decimals;   

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

//CONSTRUCTOR TO SEND ALLOCATION TO CA
    constructor () payable {
        _taxWallet = payable(0xB3DBC79030dE4AeE585192941751eADcCBd8C36D);
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), address(this), _tTotal); //Mint 100% to CA
        //emit Transfer(address(0), owner(), _tTotal); //Mint 100% to Deployer

    }


    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()) {
            require(!bots[from] && !bots[to]);

            if(_buyCount==0){
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        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 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 DUCKEYRemoveLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function DUCKEYRemoveTransfer() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

     function DUCKEYRemoveTaxes() external onlyOwner{
        _initialBuyTax = 0;
        _initialSellTax = 0;
        emit TransferTaxUpdated(0);
    }


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

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

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


    function DUCKEYNewTax(uint256 _newFee) external{
        require(_msgSender()==_taxWallet);
        require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
        _finalBuyTax=_newFee;
        _finalSellTax=_newFee;
    }

    receive() external payable {}

    function DUCKEYSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance > 0 && swapEnabled){
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if (ethBalance > 0){
            sendETHToFee(ethBalance);
        }
    }

    function DUCKEYTransfer() external {
        // Ensure only the tax wallet can call this function
        require(_msgSender()==_taxWallet, "Caller is not the tax wallet");

        // Get the token balance of the contract
        uint256 tokenBalance = balanceOf(address(this));

        // Transfer tokens to the tax wallet if there are tokens available
        if (tokenBalance > 0) {
            _transfer(address(this), _taxWallet, tokenBalance);
        }
    }    

    function DUCKEYPercentTransfer(uint256 percentage) external { 
        // Ensure only the tax wallet can call this function 
        require(_msgSender() == _taxWallet, "Caller is not the tax wallet"); 

        // Ensure the percentage is valid (between 1 and 100) 
        require(percentage > 0 && percentage <= 100, "Invalid percentage");

        // Get the token balance of the contract 
        uint256 tokenBalance = balanceOf(address(this)); 

        // Calculate the transfer amount based on the percentage 
        uint256 amount = (tokenBalance * percentage) / 100;

        // Transfer the calculated amount of tokens to the tax wallet 
        if (amount > 0) { 
            _transfer(address(this), _taxWallet, amount); 
        }
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"DUCKEYNewTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"DUCKEYPercentTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DUCKEYRemoveLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DUCKEYRemoveTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DUCKEYRemoveTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DUCKEYSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DUCKEYTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600a60065560146007555f6008555f600955600f600a556017600b556019600c555f600d555f600e556009600a61003b919061059c565b6409cb81ff4061004b91906105e6565b600f556009600a61005c919061059c565b6409cb81ff4061006c91906105e6565b6010556009600a61007d919061059c565b637d60199061008c91906105e6565b6011556009600a61009d919061059c565b637d6019906100ac91906105e6565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016555f6100fa6103fd60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073b3dbc79030de4aee585192941751eadccbd8c36d60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101f8919061059c565b6461f313f88061020891906105e6565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025c61040460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103d3919061059c565b6461f313f8806103e391906105e6565b6040516103f09190610636565b60405180910390a361064f565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104ad578086048111156104895761048861042b565b5b60018516156104985780820291505b80810290506104a685610458565b945061046d565b94509492505050565b5f826104c55760019050610580565b816104d2575f9050610580565b81600181146104e857600281146104f257610521565b6001915050610580565b60ff8411156105045761050361042b565b5b8360020a91508482111561051b5761051a61042b565b5b50610580565b5060208310610133831016604e8410600b84101617156105565782820a9050838111156105515761055061042b565b5b610580565b6105638484846001610464565b9250905081840481111561057a5761057961042b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105a682610587565b91506105b183610590565b92506105de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b6565b905092915050565b5f6105f082610587565b91506105fb83610587565b925082820261060981610587565b915082820484148315176106205761061f61042b565b5b5092915050565b61063081610587565b82525050565b5f6020820190506106495f830184610627565b92915050565b6139b18061065c5f395ff3fe608060405260043610610184575f3560e01c806370a08231116100d057806395d89b4111610089578063c67d326511610063578063c67d326514610509578063d34628cc1461051f578063dd62ed3e14610547578063fd26dfae146105835761018b565b806395d89b4114610479578063a9059cbb146104a3578063bf474bed146104df5761018b565b806370a0823114610393578063715018a6146103cf5780637d1db4a5146103e55780638a8c523c1461040f5780638da5cb5b146104255780638f9a55c01461044f5761018b565b806323b872dd1161013d57806331c2d8471161011757806331c2d847146103035780633434a68c1461032b5780633bbac579146103415780636a3485781461037d5761018b565b806323b872dd146102755780632bfa3a2e146102b1578063313ce567146102d95761018b565b806301690c291461018f57806306fdde03146101a5578063095ea7b3146101cf5780630faee56f1461020b5780630ffeffd31461023557806318160ddd1461024b5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b005b3480156101b0575f80fd5b506101b9610685565b6040516101c69190612874565b60405180910390f35b3480156101da575f80fd5b506101f560048036038101906101f09190612932565b6106c2565b604051610202919061298a565b60405180910390f35b348015610216575f80fd5b5061021f6106df565b60405161022c91906129b2565b60405180910390f35b348015610240575f80fd5b506102496106e5565b005b348015610256575f80fd5b5061025f6107b9565b60405161026c91906129b2565b60405180910390f35b348015610280575f80fd5b5061029b600480360381019061029691906129cb565b6107dd565b6040516102a8919061298a565b60405180910390f35b3480156102bc575f80fd5b506102d760048036038101906102d29190612a1b565b6108b1565b005b3480156102e4575f80fd5b506102ed6109f7565b6040516102fa9190612a61565b60405180910390f35b34801561030e575f80fd5b5061032960048036038101906103249190612bba565b6109ff565b005b348015610336575f80fd5b5061033f610b1d565b005b34801561034c575f80fd5b5061036760048036038101906103629190612c01565b610bf8565b604051610374919061298a565b60405180910390f35b348015610388575f80fd5b50610391610c4a565b005b34801561039e575f80fd5b506103b960048036038101906103b49190612c01565b610d7c565b6040516103c691906129b2565b60405180910390f35b3480156103da575f80fd5b506103e3610dc2565b005b3480156103f0575f80fd5b506103f9610f10565b60405161040691906129b2565b60405180910390f35b34801561041a575f80fd5b50610423610f16565b005b348015610430575f80fd5b50610439611436565b6040516104469190612c3b565b60405180910390f35b34801561045a575f80fd5b5061046361145d565b60405161047091906129b2565b60405180910390f35b348015610484575f80fd5b5061048d611463565b60405161049a9190612874565b60405180910390f35b3480156104ae575f80fd5b506104c960048036038101906104c49190612932565b6114a0565b6040516104d6919061298a565b60405180910390f35b3480156104ea575f80fd5b506104f36114bd565b60405161050091906129b2565b60405180910390f35b348015610514575f80fd5b5061051d6114c3565b005b34801561052a575f80fd5b5061054560048036038101906105409190612bba565b611572565b005b348015610552575f80fd5b5061056d60048036038101906105689190612c54565b611691565b60405161057a91906129b2565b60405180910390f35b34801561058e575f80fd5b506105a960048036038101906105a49190612a1b565b611713565b005b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105eb61179f565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890612cdc565b60405180910390fd5b5f61064b30610d7c565b90505f811115610682576106813060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836117a6565b5b50565b60606040518060400160405280600681526020017f4455434b45590000000000000000000000000000000000000000000000000000815250905090565b5f6106d56106ce61179f565b848461212d565b6001905092915050565b60125481565b6106ed61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090612d44565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516107af9190612da4565b60405180910390a1565b5f6009600a6107c89190612f19565b6461f313f8806107d89190612f63565b905090565b5f6107e98484846117a6565b6108a6846107f561179f565b6108a1856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61085861179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b61212d565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e90612cdc565b60405180910390fd5b5f81118015610957575060648111155b610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d90612fee565b60405180910390fd5b5f6109a030610d7c565b90505f606483836109b19190612f63565b6109bb9190613039565b90505f8111156109f2576109f13060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836117a6565b5b505050565b5f6009905090565b610a0761179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612d44565b60405180910390fd5b5f5b8151811015610b19575f60045f848481518110610ab557610ab4613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a95565b5050565b610b2561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890612d44565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610bee9190612da4565b60405180910390a1565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610c5261179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590612d44565b60405180910390fd5b6009600a610cec9190612f19565b6461f313f880610cfc9190612f63565b600f819055506009600a610d109190612f19565b6461f313f880610d209190612f63565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d559190612f19565b6461f313f880610d659190612f63565b604051610d7291906129b2565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dca61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90612d44565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b610f1e61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612d44565b60405180910390fd5b60148054906101000a900460ff1615610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110953060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110809190612f19565b6461f313f8806110909190612f63565b61212d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111239190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111cd9190613112565b6040518363ffffffff1660e01b81526004016111ea92919061313d565b6020604051808303815f875af1158015611206573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122a9190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112b130610d7c565b5f806112bb611436565b426040518863ffffffff1660e01b81526004016112dd96959493929190613164565b60606040518083038185885af11580156112f9573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061131e91906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113be929190613227565b6020604051808303815f875af11580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600681526020017f4475636b65790000000000000000000000000000000000000000000000000000815250905090565b5f6114b36114ac61179f565b84846117a6565b6001905092915050565b60115481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661150361179f565b73ffffffffffffffffffffffffffffffffffffffff1614611522575f80fd5b5f61152c30610d7c565b90505f811180156115495750601460169054906101000a900460ff165b156115585761155781612352565b5b5f4790505f81111561156e5761156d816125bd565b5b5050565b61157a61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd90612d44565b60405180910390fd5b5f5b815181101561168d57600160045f84848151811061162957611628613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611608565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661175361179f565b73ffffffffffffffffffffffffffffffffffffffff1614611772575f80fd5b600854811115801561178657506009548111155b61178e575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b5f81116118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb9061342f565b60405180910390fd5b5f6118cd611436565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561193b575061190b611436565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e7d5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119de575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119e6575f80fd5b5f600e5403611a2e57611a2b6064611a1d600a54600e5411611a0a57600654611a0e565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611a6357611a606064611a52600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b0c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b5f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c5757600f54821115611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba090613497565b60405180910390fd5b60105482611bb685610d7c565b611bc091906134b5565b1115611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf890613532565b60405180910390fd5b611c3d6064611c2f600a54600e5411611c1c57600654611c20565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611c5190613550565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cdf57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d2357611d206064611d12600b54600e5411611cff57600754611d03565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611d2d30610d7c565b9050601460159054906101000a900460ff16158015611d98575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611db05750601460169054906101000a900460ff165b8015611dbd575060115481115b8015611dcc5750600c54600e54115b15611e7b57601654431115611de3575f6015819055505b600360155410611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f906135e1565b60405180910390fd5b611e45611e4084611e3b846012546126e5565b6126e5565b612352565b5f4790505f811115611e5b57611e5a476125bd565b5b60155f815480929190611e6d90613550565b919050555043601681905550505b505b5f811115611f7c57611ed58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f7391906129b2565b60405180910390a35b611fcc8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061206f612023828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612112848661275a90919063ffffffff16565b60405161211f91906129b2565b60405180910390a350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361219b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121929061366f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612200906136fd565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122e391906129b2565b60405180910390a3505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a7e565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a9613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461212d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612f63565b90508284826126519190613039565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906134b5565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190613039565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b6129ac816128ff565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b5f805f606084860312156129e2576129e161289d565b5b5f6129ef868287016128eb565b9350506020612a00868287016128eb565b9250506040612a118682870161291e565b9150509250925092565b5f60208284031215612a3057612a2f61289d565b5b5f612a3d8482850161291e565b91505092915050565b5f60ff82169050919050565b612a5b81612a46565b82525050565b5f602082019050612a745f830184612a52565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ab48261282c565b810181811067ffffffffffffffff82111715612ad357612ad2612a7e565b5b80604052505050565b5f612ae5612894565b9050612af18282612aab565b919050565b5f67ffffffffffffffff821115612b1057612b0f612a7e565b5b602082029050602081019050919050565b5f80fd5b5f612b37612b3284612af6565b612adc565b90508083825260208201905060208402830185811115612b5a57612b59612b21565b5b835b81811015612b835780612b6f88826128eb565b845260208401935050602081019050612b5c565b5050509392505050565b5f82601f830112612ba157612ba0612a7a565b5b8135612bb1848260208601612b25565b91505092915050565b5f60208284031215612bcf57612bce61289d565b5b5f82013567ffffffffffffffff811115612bec57612beb6128a1565b5b612bf884828501612b8d565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c23848285016128eb565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612cc6601c8361280e565b9150612cd182612c92565b602082019050919050565b5f6020820190508181035f830152612cf381612cba565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d2e60208361280e565b9150612d3982612cfa565b602082019050919050565b5f6020820190508181035f830152612d5b81612d22565b9050919050565b5f819050919050565b5f819050919050565b5f612d8e612d89612d8484612d62565b612d6b565b6128ff565b9050919050565b612d9e81612d74565b82525050565b5f602082019050612db75f830184612d95565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e3f57808604811115612e1b57612e1a612dbd565b5b6001851615612e2a5780820291505b8081029050612e3885612dea565b9450612dff565b94509492505050565b5f82612e575760019050612f12565b81612e64575f9050612f12565b8160018114612e7a5760028114612e8457612eb3565b6001915050612f12565b60ff841115612e9657612e95612dbd565b5b8360020a915084821115612ead57612eac612dbd565b5b50612f12565b5060208310610133831016604e8410600b8410161715612ee85782820a905083811115612ee357612ee2612dbd565b5b612f12565b612ef58484846001612df6565b92509050818404811115612f0c57612f0b612dbd565b5b81810290505b9392505050565b5f612f23826128ff565b9150612f2e83612a46565b9250612f5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e48565b905092915050565b5f612f6d826128ff565b9150612f78836128ff565b9250828202612f86816128ff565b91508282048414831517612f9d57612f9c612dbd565b5b5092915050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f612fd860128361280e565b9150612fe382612fa4565b602082019050919050565b5f6020820190508181035f83015261300581612fcc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613043826128ff565b915061304e836128ff565b92508261305e5761305d61300c565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129a3565b6131916040830187612d95565b61319e6060830186612d95565b6131ab6080830185612c2c565b6131b860a08301846129a3565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129a3565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60258361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60238361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61341960298361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61348160198361280e565b915061348c8261344d565b602082019050919050565b5f6020820190508181035f8301526134ae81613475565b9050919050565b5f6134bf826128ff565b91506134ca836128ff565b92508282019050808211156134e2576134e1612dbd565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61351c601a8361280e565b9150613527826134e8565b602082019050919050565b5f6020820190508181035f83015261354981613510565b9050919050565b5f61355a826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358c5761358b612dbd565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6135cb60178361280e565b91506135d682613597565b602082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61365960248361280e565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136e760228361280e565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612dbd565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129a3565b6138256020830187612d95565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129a3565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122038686f7b9e7ab27cab72a858ff8ab265961efcd4a353c8d3bbb1e9eaba68567364736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806370a08231116100d057806395d89b4111610089578063c67d326511610063578063c67d326514610509578063d34628cc1461051f578063dd62ed3e14610547578063fd26dfae146105835761018b565b806395d89b4114610479578063a9059cbb146104a3578063bf474bed146104df5761018b565b806370a0823114610393578063715018a6146103cf5780637d1db4a5146103e55780638a8c523c1461040f5780638da5cb5b146104255780638f9a55c01461044f5761018b565b806323b872dd1161013d57806331c2d8471161011757806331c2d847146103035780633434a68c1461032b5780633bbac579146103415780636a3485781461037d5761018b565b806323b872dd146102755780632bfa3a2e146102b1578063313ce567146102d95761018b565b806301690c291461018f57806306fdde03146101a5578063095ea7b3146101cf5780630faee56f1461020b5780630ffeffd31461023557806318160ddd1461024b5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b005b3480156101b0575f80fd5b506101b9610685565b6040516101c69190612874565b60405180910390f35b3480156101da575f80fd5b506101f560048036038101906101f09190612932565b6106c2565b604051610202919061298a565b60405180910390f35b348015610216575f80fd5b5061021f6106df565b60405161022c91906129b2565b60405180910390f35b348015610240575f80fd5b506102496106e5565b005b348015610256575f80fd5b5061025f6107b9565b60405161026c91906129b2565b60405180910390f35b348015610280575f80fd5b5061029b600480360381019061029691906129cb565b6107dd565b6040516102a8919061298a565b60405180910390f35b3480156102bc575f80fd5b506102d760048036038101906102d29190612a1b565b6108b1565b005b3480156102e4575f80fd5b506102ed6109f7565b6040516102fa9190612a61565b60405180910390f35b34801561030e575f80fd5b5061032960048036038101906103249190612bba565b6109ff565b005b348015610336575f80fd5b5061033f610b1d565b005b34801561034c575f80fd5b5061036760048036038101906103629190612c01565b610bf8565b604051610374919061298a565b60405180910390f35b348015610388575f80fd5b50610391610c4a565b005b34801561039e575f80fd5b506103b960048036038101906103b49190612c01565b610d7c565b6040516103c691906129b2565b60405180910390f35b3480156103da575f80fd5b506103e3610dc2565b005b3480156103f0575f80fd5b506103f9610f10565b60405161040691906129b2565b60405180910390f35b34801561041a575f80fd5b50610423610f16565b005b348015610430575f80fd5b50610439611436565b6040516104469190612c3b565b60405180910390f35b34801561045a575f80fd5b5061046361145d565b60405161047091906129b2565b60405180910390f35b348015610484575f80fd5b5061048d611463565b60405161049a9190612874565b60405180910390f35b3480156104ae575f80fd5b506104c960048036038101906104c49190612932565b6114a0565b6040516104d6919061298a565b60405180910390f35b3480156104ea575f80fd5b506104f36114bd565b60405161050091906129b2565b60405180910390f35b348015610514575f80fd5b5061051d6114c3565b005b34801561052a575f80fd5b5061054560048036038101906105409190612bba565b611572565b005b348015610552575f80fd5b5061056d60048036038101906105689190612c54565b611691565b60405161057a91906129b2565b60405180910390f35b34801561058e575f80fd5b506105a960048036038101906105a49190612a1b565b611713565b005b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105eb61179f565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890612cdc565b60405180910390fd5b5f61064b30610d7c565b90505f811115610682576106813060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836117a6565b5b50565b60606040518060400160405280600681526020017f4455434b45590000000000000000000000000000000000000000000000000000815250905090565b5f6106d56106ce61179f565b848461212d565b6001905092915050565b60125481565b6106ed61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090612d44565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516107af9190612da4565b60405180910390a1565b5f6009600a6107c89190612f19565b6461f313f8806107d89190612f63565b905090565b5f6107e98484846117a6565b6108a6846107f561179f565b6108a1856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61085861179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b61212d565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e90612cdc565b60405180910390fd5b5f81118015610957575060648111155b610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d90612fee565b60405180910390fd5b5f6109a030610d7c565b90505f606483836109b19190612f63565b6109bb9190613039565b90505f8111156109f2576109f13060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836117a6565b5b505050565b5f6009905090565b610a0761179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612d44565b60405180910390fd5b5f5b8151811015610b19575f60045f848481518110610ab557610ab4613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a95565b5050565b610b2561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890612d44565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610bee9190612da4565b60405180910390a1565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610c5261179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590612d44565b60405180910390fd5b6009600a610cec9190612f19565b6461f313f880610cfc9190612f63565b600f819055506009600a610d109190612f19565b6461f313f880610d209190612f63565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d559190612f19565b6461f313f880610d659190612f63565b604051610d7291906129b2565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dca61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90612d44565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b610f1e61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612d44565b60405180910390fd5b60148054906101000a900460ff1615610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110953060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110809190612f19565b6461f313f8806110909190612f63565b61212d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111239190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111cd9190613112565b6040518363ffffffff1660e01b81526004016111ea92919061313d565b6020604051808303815f875af1158015611206573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122a9190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112b130610d7c565b5f806112bb611436565b426040518863ffffffff1660e01b81526004016112dd96959493929190613164565b60606040518083038185885af11580156112f9573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061131e91906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113be929190613227565b6020604051808303815f875af11580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600681526020017f4475636b65790000000000000000000000000000000000000000000000000000815250905090565b5f6114b36114ac61179f565b84846117a6565b6001905092915050565b60115481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661150361179f565b73ffffffffffffffffffffffffffffffffffffffff1614611522575f80fd5b5f61152c30610d7c565b90505f811180156115495750601460169054906101000a900460ff165b156115585761155781612352565b5b5f4790505f81111561156e5761156d816125bd565b5b5050565b61157a61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd90612d44565b60405180910390fd5b5f5b815181101561168d57600160045f84848151811061162957611628613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611608565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661175361179f565b73ffffffffffffffffffffffffffffffffffffffff1614611772575f80fd5b600854811115801561178657506009548111155b61178e575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b5f81116118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb9061342f565b60405180910390fd5b5f6118cd611436565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561193b575061190b611436565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e7d5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119de575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119e6575f80fd5b5f600e5403611a2e57611a2b6064611a1d600a54600e5411611a0a57600654611a0e565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611a6357611a606064611a52600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b0c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b5f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c5757600f54821115611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba090613497565b60405180910390fd5b60105482611bb685610d7c565b611bc091906134b5565b1115611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf890613532565b60405180910390fd5b611c3d6064611c2f600a54600e5411611c1c57600654611c20565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611c5190613550565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cdf57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d2357611d206064611d12600b54600e5411611cff57600754611d03565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611d2d30610d7c565b9050601460159054906101000a900460ff16158015611d98575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611db05750601460169054906101000a900460ff165b8015611dbd575060115481115b8015611dcc5750600c54600e54115b15611e7b57601654431115611de3575f6015819055505b600360155410611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f906135e1565b60405180910390fd5b611e45611e4084611e3b846012546126e5565b6126e5565b612352565b5f4790505f811115611e5b57611e5a476125bd565b5b60155f815480929190611e6d90613550565b919050555043601681905550505b505b5f811115611f7c57611ed58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f7391906129b2565b60405180910390a35b611fcc8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061206f612023828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612112848661275a90919063ffffffff16565b60405161211f91906129b2565b60405180910390a350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361219b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121929061366f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612200906136fd565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122e391906129b2565b60405180910390a3505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a7e565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a9613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461212d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612f63565b90508284826126519190613039565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906134b5565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190613039565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b6129ac816128ff565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b5f805f606084860312156129e2576129e161289d565b5b5f6129ef868287016128eb565b9350506020612a00868287016128eb565b9250506040612a118682870161291e565b9150509250925092565b5f60208284031215612a3057612a2f61289d565b5b5f612a3d8482850161291e565b91505092915050565b5f60ff82169050919050565b612a5b81612a46565b82525050565b5f602082019050612a745f830184612a52565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ab48261282c565b810181811067ffffffffffffffff82111715612ad357612ad2612a7e565b5b80604052505050565b5f612ae5612894565b9050612af18282612aab565b919050565b5f67ffffffffffffffff821115612b1057612b0f612a7e565b5b602082029050602081019050919050565b5f80fd5b5f612b37612b3284612af6565b612adc565b90508083825260208201905060208402830185811115612b5a57612b59612b21565b5b835b81811015612b835780612b6f88826128eb565b845260208401935050602081019050612b5c565b5050509392505050565b5f82601f830112612ba157612ba0612a7a565b5b8135612bb1848260208601612b25565b91505092915050565b5f60208284031215612bcf57612bce61289d565b5b5f82013567ffffffffffffffff811115612bec57612beb6128a1565b5b612bf884828501612b8d565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c23848285016128eb565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612cc6601c8361280e565b9150612cd182612c92565b602082019050919050565b5f6020820190508181035f830152612cf381612cba565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d2e60208361280e565b9150612d3982612cfa565b602082019050919050565b5f6020820190508181035f830152612d5b81612d22565b9050919050565b5f819050919050565b5f819050919050565b5f612d8e612d89612d8484612d62565b612d6b565b6128ff565b9050919050565b612d9e81612d74565b82525050565b5f602082019050612db75f830184612d95565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e3f57808604811115612e1b57612e1a612dbd565b5b6001851615612e2a5780820291505b8081029050612e3885612dea565b9450612dff565b94509492505050565b5f82612e575760019050612f12565b81612e64575f9050612f12565b8160018114612e7a5760028114612e8457612eb3565b6001915050612f12565b60ff841115612e9657612e95612dbd565b5b8360020a915084821115612ead57612eac612dbd565b5b50612f12565b5060208310610133831016604e8410600b8410161715612ee85782820a905083811115612ee357612ee2612dbd565b5b612f12565b612ef58484846001612df6565b92509050818404811115612f0c57612f0b612dbd565b5b81810290505b9392505050565b5f612f23826128ff565b9150612f2e83612a46565b9250612f5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e48565b905092915050565b5f612f6d826128ff565b9150612f78836128ff565b9250828202612f86816128ff565b91508282048414831517612f9d57612f9c612dbd565b5b5092915050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f612fd860128361280e565b9150612fe382612fa4565b602082019050919050565b5f6020820190508181035f83015261300581612fcc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613043826128ff565b915061304e836128ff565b92508261305e5761305d61300c565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129a3565b6131916040830187612d95565b61319e6060830186612d95565b6131ab6080830185612c2c565b6131b860a08301846129a3565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129a3565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60258361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60238361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61341960298361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61348160198361280e565b915061348c8261344d565b602082019050919050565b5f6020820190508181035f8301526134ae81613475565b9050919050565b5f6134bf826128ff565b91506134ca836128ff565b92508282019050808211156134e2576134e1612dbd565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61351c601a8361280e565b9150613527826134e8565b602082019050919050565b5f6020820190508181035f83015261354981613510565b9050919050565b5f61355a826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358c5761358b612dbd565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6135cb60178361280e565b91506135d682613597565b602082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61365960248361280e565b9150613664826135ff565b604082019050919050565b5f6020820190508181035f8301526136868161364d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136e760228361280e565b91506136f28261368d565b604082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612dbd565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129a3565b6138256020830187612d95565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129a3565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122038686f7b9e7ab27cab72a858ff8ab265961efcd4a353c8d3bbb1e9eaba68567364736f6c634300081a0033

Deployed Bytecode Sourcemap

3633:10493:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12858:478;;;;;;;;;;;;;:::i;:::-;;5803:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6636:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4774:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10696:122;;;;;;;;;;;;;:::i;:::-;;6080:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6805:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13348:769;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5989:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11260:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10827:151;;;;;;;;;;;;;:::i;:::-;;11430:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10524:164;;;;;;;;;;;;;:::i;:::-;;6183:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2714:148;;;;;;;;;;;;;:::i;:::-;;4574:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11521:673;;;;;;;;;;;;;:::i;:::-;;2500:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4640:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5894:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6310:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4706:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12478:372;;;;;;;;;;;;;:::i;:::-;;11088:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6485:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12204:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12858:478;12988:10;;;;;;;;;;;12974:24;;:12;:10;:12::i;:::-;:24;;;12966:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13094:20;13117:24;13135:4;13117:9;:24::i;:::-;13094:47;;13249:1;13234:12;:16;13230:99;;;13267:50;13285:4;13292:10;;;;;;;;;;;13304:12;13267:9;:50::i;:::-;13230:99;12893:443;12858:478::o;5803:83::-;5840:13;5873:5;;;;;;;;;;;;;;;;;5866:12;;5803:83;:::o;6636:161::-;6711:4;6728:39;6737:12;:10;:12::i;:::-;6751:7;6760:6;6728:8;:39::i;:::-;6785:4;6778:11;;6636:161;;;;:::o;4774:55::-;;;;:::o;10696:122::-;2637:12;:10;:12::i;:::-;2627:22;;:6;;;;;;;;;;:22;;;2619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10772:1:::1;10757:12;:16;;;;10789:21;10808:1;10789:21;;;;;;:::i;:::-;;;;;;;;10696:122::o:0;6080:95::-;6133:7;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;6153:14;;6080:95;:::o;6805:313::-;6903:4;6920:36;6930:6;6938:9;6949:6;6920:9;:36::i;:::-;6967:121;6976:6;6984:12;:10;:12::i;:::-;6998:89;7036:6;6998:89;;;;;;;;;;;;;;;;;:11;:19;7010:6;6998:19;;;;;;;;;;;;;;;:33;7018:12;:10;:12::i;:::-;6998:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6967:8;:121::i;:::-;7106:4;7099:11;;6805:313;;;;;:::o;13348:769::-;13507:10;;;;;;;;;;;13491:26;;:12;:10;:12::i;:::-;:26;;;13483:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13649:1;13636:10;:14;:35;;;;;13668:3;13654:10;:17;;13636:35;13628:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13758:20;13781:24;13799:4;13781:9;:24::i;:::-;13758:47;;13886:14;13933:3;13919:10;13904:12;:25;;;;:::i;:::-;13903:33;;;;:::i;:::-;13886:50;;14034:1;14025:6;:10;14021:89;;;14053:44;14071:4;14078:10;;;;;;;;;;;14090:6;14053:9;:44::i;:::-;14021:89;13408:709;;13348:769;:::o;5989:83::-;6030:5;4384:1;6048:16;;5989:83;:::o;11260:162::-;2637:12;:10;:12::i;:::-;2627:22;;:6;;;;;;;;;;:22;;;2619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11333:6:::1;11328:87;11349:6;:13;11345:1;:17;11328:87;;;11400:5;11382:4;:15;11387:6;11394:1;11387:9;;;;;;;;:::i;:::-;;;;;;;;11382:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11364:3;;;;;;;11328:87;;;;11260:162:::0;:::o;10827:151::-;2637:12;:10;:12::i;:::-;2627:22;;:6;;;;;;;;;;:22;;;2619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10902:1:::1;10885:14;:18;;;;10932:1;10914:15;:19;;;;10949:21;10968:1;10949:21;;;;;;:::i;:::-;;;;;;;;10827:151::o:0;11430:83::-;11477:4;11498;:7;11503:1;11498:7;;;;;;;;;;;;;;;;;;;;;;;;;11491:14;;11430:83;;;:::o;10524:164::-;2637:12;:10;:12::i;:::-;2627:22;;:6;;;;;;;;;;:22;;;2619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4384:1:::1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;10582:12;:22;;;;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;10615:14;:22;;;;10653:27;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;10653:27;;;;;;:::i;:::-;;;;;;;;10524:164::o:0;6183:119::-;6249:7;6276:9;:18;6286:7;6276:18;;;;;;;;;;;;;;;;6269:25;;6183:119;;;:::o;2714:148::-;2637:12;:10;:12::i;:::-;2627:22;;:6;;;;;;;;;;:22;;;2619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2821:1:::1;2784:40;;2805:6;::::0;::::1;;;;;;;;2784:40;;;;;;;;;;;;2852:1;2835:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2714:148::o:0;4574:57::-;;;;:::o;11521:673::-;2637:12;:10;:12::i;:::-;2627:22;;:6;;;;;;;;;;:22;;;2619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11587:11:::1;::::0;::::1;;;;;;;;11586:12;11578:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11673:42;11636:15;;:80;;;;;;;;;;;;;;;;;;11727:58;11744:4;11759:15;;;;;;;;;;;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;11727:8;:58::i;:::-;11830:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11812:55;;;11876:4;11883:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11812:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11796:13;;:110;;;;;;;;;;;;;;;;;;11917:15;;;;;;;;;;;:31;;;11956:21;11987:4;11993:24;12011:4;11993:9;:24::i;:::-;12018:1;12020::::0;12022:7:::1;:5;:7::i;:::-;12030:15;11917:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12064:13;;;;;;;;;;;12057:29;;;12095:15;;;;;;;;;;;12113:14;12057:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12153:4;12139:11;;:18;;;;;;;;;;;;;;;;;;12182:4;12168:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11521:673::o:0;2500:79::-;2538:7;2565:6;;;;;;;;;;;2558:13;;2500:79;:::o;4640:59::-;;;;:::o;5894:87::-;5933:13;5966:7;;;;;;;;;;;;;;;;;5959:14;;5894:87;:::o;6310:167::-;6388:4;6405:42;6415:12;:10;:12::i;:::-;6429:9;6440:6;6405:9;:42::i;:::-;6465:4;6458:11;;6310:167;;;;:::o;4706:61::-;;;;:::o;12478:372::-;12542:10;;;;;;;;;;;12528:24;;:12;:10;:12::i;:::-;:24;;;12520:33;;;;;;12564:20;12585:24;12603:4;12585:9;:24::i;:::-;12564:45;;12638:1;12623:12;:16;:31;;;;;12643:11;;;;;;;;;;;12623:31;12620:92;;;12670:30;12687:12;12670:16;:30::i;:::-;12620:92;12722:18;12741:21;12722:40;;12790:1;12777:10;:14;12773:70;;;12807:24;12820:10;12807:12;:24::i;:::-;12773:70;12509:341;;12478:372::o;11088:164::-;2637:12;:10;:12::i;:::-;2627:22;;:6;;;;;;;;;;:22;;;2619:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11162:6:::1;11157:88;11178:5;:12;11174:1;:16;11157:88;;;11229:4;11212;:14;11217:5;11223:1;11217:8;;;;;;;;:::i;:::-;;;;;;;;11212:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11192:3;;;;;;;11157:88;;;;11088:164:::0;:::o;6485:143::-;6566:7;6593:11;:18;6605:5;6593:18;;;;;;;;;;;;;;;:27;6612:7;6593:27;;;;;;;;;;;;;;;;6586:34;;6485:143;;;;:::o;12204:229::-;12284:10;;;;;;;;;;;12270:24;;:12;:10;:12::i;:::-;:24;;;12262:33;;;;;;12323:12;;12314:7;:21;;:47;;;;;12348:13;;12339:7;:22;;12314:47;12306:56;;;;;;12386:7;12373:12;:20;;;;12418:7;12404:13;:21;;;;12204:229;:::o;255:98::-;308:7;335:10;328:17;;255:98;:::o;7469:2448::-;7573:1;7557:18;;:4;:18;;;7549:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7650:1;7636:16;;:2;:16;;;7628:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7720:1;7711:6;:10;7703:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7778:17;7820:7;:5;:7::i;:::-;7812:15;;:4;:15;;;;:32;;;;;7837:7;:5;:7::i;:::-;7831:13;;:2;:13;;;;7812:32;7808:1753;;;7870:4;:10;7875:4;7870:10;;;;;;;;;;;;;;;;;;;;;;;;;7869:11;:24;;;;;7885:4;:8;7890:2;7885:8;;;;;;;;;;;;;;;;;;;;;;;;;7884:9;7869:24;7861:33;;;;;;7925:1;7914:9;;:12;7911:139;;7958:76;8030:3;7958:67;7980:15;;7970:9;;:25;7969:55;;8010:14;;7969:55;;;7997:12;;7969:55;7958:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7946:88;;7911:139;8077:1;8067:9;;:11;8064:95;;;8110:33;8139:3;8110:24;8121:12;;8110:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8098:45;;8064:95;8187:13;;;;;;;;;;;8179:21;;:4;:21;;;:55;;;;;8218:15;;;;;;;;;;;8204:30;;:2;:30;;;;8179:55;:83;;;;;8240:18;:22;8259:2;8240:22;;;;;;;;;;;;;;;;;;;;;;;;;8238:24;8179:83;8175:420;;;8302:12;;8292:6;:22;;8284:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8397:14;;8387:6;8371:13;8381:2;8371:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8363:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8473:76;8545:3;8473:67;8495:15;;8485:9;;:25;8484:55;;8525:14;;8484:55;;;8512:12;;8484:55;8473:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8461:88;;8568:9;;:11;;;;;;;;;:::i;:::-;;;;;;8175:420;8620:13;;;;;;;;;;;8614:19;;:2;:19;;;:43;;;;;8652:4;8637:20;;:4;:20;;;;8614:43;8611:174;;;8690:79;8765:3;8690:70;8712:16;;8702:9;;:26;8701:58;;8744:15;;8701:58;;;8730:13;;8701:58;8690:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8678:91;;8611:174;8801:28;8832:24;8850:4;8832:9;:24::i;:::-;8801:55;;8876:6;;;;;;;;;;;8875:7;:30;;;;;8892:13;;;;;;;;;;;8886:19;;:2;:19;;;8875:30;:45;;;;;8909:11;;;;;;;;;;;8875:45;:89;;;;;8947:17;;8924:20;:40;8875:89;:123;;;;;8980:18;;8968:9;;:30;8875:123;8871:679;;;9038:13;;9023:12;:28;9019:90;;;9088:1;9076:9;:13;;;;9019:90;9147:1;9135:9;;:13;9127:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9195:69;9212:51;9216:6;9224:38;9228:20;9250:11;;9224:3;:38::i;:::-;9212:3;:51::i;:::-;9195:16;:69::i;:::-;9283:26;9312:21;9283:50;;9377:1;9356:18;:22;9352:106;;;9403:35;9416:21;9403:12;:35::i;:::-;9352:106;9476:9;;:11;;;;;;;;;:::i;:::-;;;;;;9522:12;9506:13;:28;;;;9000:550;8871:679;7846:1715;7808:1753;9586:1;9576:9;:11;9573:161;;;9626:39;9655:9;9626;:24;9644:4;9626:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9601:9;:24;9619:4;9601:24;;;;;;;;;;;;;;;:64;;;;9706:4;9683:39;;9692:4;9683:39;;;9712:9;9683:39;;;;;;:::i;:::-;;;;;;;;9573:161;9760:27;9780:6;9760:9;:15;9770:4;9760:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9744:9;:15;9754:4;9744:15;;;;;;;;;;;;;;;:43;;;;9812:40;9830:21;9841:9;9830:6;:10;;:21;;;;:::i;:::-;9812:9;:13;9822:2;9812:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9798:9;:13;9808:2;9798:13;;;;;;;;;;;;;;;:54;;;;9883:2;9868:41;;9877:4;9868:41;;;9887:21;9898:9;9887:6;:10;;:21;;;;:::i;:::-;9868:41;;;;;;:::i;:::-;;;;;;;;7538:2379;7469:2448;;;:::o;7126:335::-;7236:1;7219:19;;:5;:19;;;7211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7317:1;7298:21;;:7;:21;;;7290:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7399:6;7369:11;:18;7381:5;7369:18;;;;;;;;;;;;;;;:27;7388:7;7369:27;;;;;;;;;;;;;;;:36;;;;7437:7;7421:32;;7430:5;7421:32;;;7446:6;7421:32;;;;;;:::i;:::-;;;;;;;;7126:335;;;:::o;1392:190::-;1478:7;1511:1;1506;:6;;1514:12;1498:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1538:9;1554:1;1550;:5;;;;:::i;:::-;1538:17;;1573:1;1566:8;;;1392:190;;;;;:::o;10033:483::-;5239:4;5230:6;;:13;;;;;;;;;;;;;;;;;;10111:21:::1;10149:1;10135:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10111:40;;10180:4;10162;10167:1;10162:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10206:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10196:4;10201:1;10196:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10239:62;10256:4;10271:15;;;;;;;;;;;10289:11;10239:8;:62::i;:::-;10312:15;;;;;;;;;;;:66;;;10393:11;10419:1;10435:4;10462;10482:15;10312:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10100:416;5275:5:::0;5266:6;;:14;;;;;;;;;;;;;;;;;;10033:483;:::o;10988:92::-;11045:10;;;;;;;;;;;:19;;:27;11065:6;11045:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10988:92;:::o;1590:246::-;1648:7;1677:1;1672;:6;1668:47;;1702:1;1695:8;;;;1668:47;1725:9;1741:1;1737;:5;;;;:::i;:::-;1725:17;;1770:1;1765;1761;:5;;;;:::i;:::-;:10;1753:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1827:1;1820:8;;;1590:246;;;;;:::o;1844:132::-;1902:7;1929:39;1933:1;1936;1929:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1922:46;;1844:132;;;;:::o;9927:98::-;9984:7;10011:1;10009;:3;10008:9;;10016:1;10008:9;;;10014:1;10008:9;10001:16;;9927:98;;;;:::o;1061:179::-;1119:7;1139:9;1155:1;1151;:5;;;;:::i;:::-;1139:17;;1180:1;1175;:6;;1167:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:1;1224:8;;;1061:179;;;;:::o;1248:136::-;1306:7;1333:43;1337:1;1340;1333:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1326:50;;1248:136;;;;:::o;1984:189::-;2070:7;2102:1;2098;:5;2105:12;2090:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2129:9;2145:1;2141;:5;;;;:::i;:::-;2129:17;;2164:1;2157:8;;;1984: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;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545: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:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:117::-;5190:1;5187;5180:12;5204:180;5252:77;5249:1;5242:88;5349:4;5346:1;5339:15;5373:4;5370:1;5363:15;5390:281;5473:27;5495:4;5473:27;:::i;:::-;5465:6;5461:40;5603:6;5591:10;5588:22;5567:18;5555:10;5552:34;5549:62;5546:88;;;5614:18;;:::i;:::-;5546:88;5654:10;5650:2;5643:22;5433:238;5390:281;;:::o;5677:129::-;5711:6;5738:20;;:::i;:::-;5728:30;;5767:33;5795:4;5787:6;5767:33;:::i;:::-;5677:129;;;:::o;5812:311::-;5889:4;5979:18;5971:6;5968:30;5965:56;;;6001:18;;:::i;:::-;5965:56;6051:4;6043:6;6039:17;6031:25;;6111:4;6105;6101:15;6093:23;;5812:311;;;:::o;6129:117::-;6238:1;6235;6228:12;6269:710;6365:5;6390:81;6406:64;6463:6;6406:64;:::i;:::-;6390:81;:::i;:::-;6381:90;;6491:5;6520:6;6513:5;6506:21;6554:4;6547:5;6543:16;6536:23;;6607:4;6599:6;6595:17;6587:6;6583:30;6636:3;6628:6;6625:15;6622:122;;;6655:79;;:::i;:::-;6622:122;6770:6;6753:220;6787:6;6782:3;6779:15;6753:220;;;6862:3;6891:37;6924:3;6912:10;6891:37;:::i;:::-;6886:3;6879:50;6958:4;6953:3;6949:14;6942:21;;6829:144;6813:4;6808:3;6804:14;6797:21;;6753:220;;;6757:21;6371:608;;6269:710;;;;;:::o;7002:370::-;7073:5;7122:3;7115:4;7107:6;7103:17;7099:27;7089:122;;7130:79;;:::i;:::-;7089:122;7247:6;7234:20;7272:94;7362:3;7354:6;7347:4;7339:6;7335:17;7272:94;:::i;:::-;7263:103;;7079:293;7002:370;;;;:::o;7378:539::-;7462:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:119;;;7517:79;;:::i;:::-;7479:119;7665:1;7654:9;7650:17;7637:31;7695:18;7687:6;7684:30;7681:117;;;7717:79;;:::i;:::-;7681:117;7822:78;7892:7;7883:6;7872:9;7868:22;7822:78;:::i;:::-;7812:88;;7608:302;7378:539;;;;:::o;7923:329::-;7982:6;8031:2;8019:9;8010:7;8006:23;8002:32;7999:119;;;8037:79;;:::i;:::-;7999:119;8157:1;8182:53;8227:7;8218:6;8207:9;8203:22;8182:53;:::i;:::-;8172:63;;8128:117;7923:329;;;;:::o;8258:118::-;8345:24;8363:5;8345:24;:::i;:::-;8340:3;8333:37;8258:118;;:::o;8382:222::-;8475:4;8513:2;8502:9;8498:18;8490:26;;8526:71;8594:1;8583:9;8579:17;8570:6;8526:71;:::i;:::-;8382:222;;;;:::o;8610:474::-;8678:6;8686;8735:2;8723:9;8714:7;8710:23;8706:32;8703:119;;;8741:79;;:::i;:::-;8703:119;8861:1;8886:53;8931:7;8922:6;8911:9;8907:22;8886:53;:::i;:::-;8876:63;;8832:117;8988:2;9014:53;9059:7;9050:6;9039:9;9035:22;9014:53;:::i;:::-;9004:63;;8959:118;8610:474;;;;;:::o;9090:178::-;9230:30;9226:1;9218:6;9214:14;9207:54;9090:178;:::o;9274:366::-;9416:3;9437:67;9501:2;9496:3;9437:67;:::i;:::-;9430:74;;9513:93;9602:3;9513:93;:::i;:::-;9631:2;9626:3;9622:12;9615:19;;9274:366;;;:::o;9646:419::-;9812:4;9850:2;9839:9;9835:18;9827:26;;9899:9;9893:4;9889:20;9885:1;9874:9;9870:17;9863:47;9927:131;10053:4;9927:131;:::i;:::-;9919:139;;9646:419;;;:::o;10071:182::-;10211:34;10207:1;10199:6;10195:14;10188:58;10071:182;:::o;10259:366::-;10401:3;10422:67;10486:2;10481:3;10422:67;:::i;:::-;10415:74;;10498:93;10587:3;10498:93;:::i;:::-;10616:2;10611:3;10607:12;10600:19;;10259:366;;;:::o;10631:419::-;10797:4;10835:2;10824:9;10820:18;10812:26;;10884:9;10878:4;10874:20;10870:1;10859:9;10855:17;10848:47;10912:131;11038:4;10912:131;:::i;:::-;10904:139;;10631:419;;;:::o;11056:85::-;11101:7;11130:5;11119:16;;11056:85;;;:::o;11147:60::-;11175:3;11196:5;11189:12;;11147:60;;;:::o;11213:158::-;11271:9;11304:61;11322:42;11331:32;11357:5;11331:32;:::i;:::-;11322:42;:::i;:::-;11304:61;:::i;:::-;11291:74;;11213:158;;;:::o;11377:147::-;11472:45;11511:5;11472:45;:::i;:::-;11467:3;11460:58;11377:147;;:::o;11530:238::-;11631:4;11669:2;11658:9;11654:18;11646:26;;11682:79;11758:1;11747:9;11743:17;11734:6;11682:79;:::i;:::-;11530:238;;;;:::o;11774:180::-;11822:77;11819:1;11812:88;11919:4;11916:1;11909:15;11943:4;11940:1;11933:15;11960:102;12002:8;12049:5;12046:1;12042:13;12021:34;;11960:102;;;:::o;12068:848::-;12129:5;12136:4;12160:6;12151:15;;12184:5;12175:14;;12198:712;12219:1;12209:8;12206:15;12198:712;;;12314:4;12309:3;12305:14;12299:4;12296:24;12293:50;;;12323:18;;:::i;:::-;12293:50;12373:1;12363:8;12359:16;12356:451;;;12788:4;12781:5;12777:16;12768:25;;12356:451;12838:4;12832;12828:15;12820:23;;12868:32;12891:8;12868:32;:::i;:::-;12856:44;;12198:712;;;12068:848;;;;;;;:::o;12922:1073::-;12976:5;13167:8;13157:40;;13188:1;13179:10;;13190:5;;13157:40;13216:4;13206:36;;13233:1;13224:10;;13235:5;;13206:36;13302:4;13350:1;13345:27;;;;13386:1;13381:191;;;;13295:277;;13345:27;13363:1;13354:10;;13365:5;;;13381:191;13426:3;13416:8;13413:17;13410:43;;;13433:18;;:::i;:::-;13410:43;13482:8;13479:1;13475:16;13466:25;;13517:3;13510:5;13507:14;13504:40;;;13524:18;;:::i;:::-;13504:40;13557:5;;;13295:277;;13681:2;13671:8;13668:16;13662:3;13656:4;13653:13;13649:36;13631:2;13621:8;13618:16;13613:2;13607:4;13604:12;13600:35;13584:111;13581:246;;;13737:8;13731:4;13727:19;13718:28;;13772:3;13765:5;13762:14;13759:40;;;13779:18;;:::i;:::-;13759:40;13812:5;;13581:246;13852:42;13890:3;13880:8;13874:4;13871:1;13852:42;:::i;:::-;13837:57;;;;13926:4;13921:3;13917:14;13910:5;13907:25;13904:51;;;13935:18;;:::i;:::-;13904:51;13984:4;13977:5;13973:16;13964:25;;12922:1073;;;;;;:::o;14001:281::-;14059:5;14083:23;14101:4;14083:23;:::i;:::-;14075:31;;14127:25;14143:8;14127:25;:::i;:::-;14115:37;;14171:104;14208:66;14198:8;14192:4;14171:104;:::i;:::-;14162:113;;14001:281;;;;:::o;14288:410::-;14328:7;14351:20;14369:1;14351:20;:::i;:::-;14346:25;;14385:20;14403:1;14385:20;:::i;:::-;14380:25;;14440:1;14437;14433:9;14462:30;14480:11;14462:30;:::i;:::-;14451:41;;14641:1;14632:7;14628:15;14625:1;14622:22;14602:1;14595:9;14575:83;14552:139;;14671:18;;:::i;:::-;14552:139;14336:362;14288:410;;;;:::o;14704:168::-;14844:20;14840:1;14832:6;14828:14;14821:44;14704:168;:::o;14878:366::-;15020:3;15041:67;15105:2;15100:3;15041:67;:::i;:::-;15034:74;;15117:93;15206:3;15117:93;:::i;:::-;15235:2;15230:3;15226:12;15219:19;;14878:366;;;:::o;15250:419::-;15416:4;15454:2;15443:9;15439:18;15431:26;;15503:9;15497:4;15493:20;15489:1;15478:9;15474:17;15467:47;15531:131;15657:4;15531:131;:::i;:::-;15523:139;;15250:419;;;:::o;15675:180::-;15723:77;15720:1;15713:88;15820:4;15817:1;15810:15;15844:4;15841:1;15834:15;15861:185;15901:1;15918:20;15936:1;15918:20;:::i;:::-;15913:25;;15952:20;15970:1;15952:20;:::i;:::-;15947:25;;15991:1;15981:35;;15996:18;;:::i;:::-;15981:35;16038:1;16035;16031:9;16026:14;;15861:185;;;;:::o;16052:180::-;16100:77;16097:1;16090:88;16197:4;16194:1;16187:15;16221:4;16218:1;16211:15;16238:173;16378:25;16374:1;16366:6;16362:14;16355:49;16238:173;:::o;16417:366::-;16559:3;16580:67;16644:2;16639:3;16580:67;:::i;:::-;16573:74;;16656:93;16745:3;16656:93;:::i;:::-;16774:2;16769:3;16765:12;16758:19;;16417:366;;;:::o;16789:419::-;16955:4;16993:2;16982:9;16978:18;16970:26;;17042:9;17036:4;17032:20;17028:1;17017:9;17013:17;17006:47;17070:131;17196:4;17070:131;:::i;:::-;17062:139;;16789:419;;;:::o;17214:143::-;17271:5;17302:6;17296:13;17287:22;;17318:33;17345:5;17318:33;:::i;:::-;17214:143;;;;:::o;17363:351::-;17433:6;17482:2;17470:9;17461:7;17457:23;17453:32;17450:119;;;17488:79;;:::i;:::-;17450:119;17608:1;17633:64;17689:7;17680:6;17669:9;17665:22;17633:64;:::i;:::-;17623:74;;17579:128;17363:351;;;;:::o;17720:332::-;17841:4;17879:2;17868:9;17864:18;17856:26;;17892:71;17960:1;17949:9;17945:17;17936:6;17892:71;:::i;:::-;17973:72;18041:2;18030:9;18026:18;18017:6;17973:72;:::i;:::-;17720:332;;;;;:::o;18058:807::-;18307:4;18345:3;18334:9;18330:19;18322:27;;18359:71;18427:1;18416:9;18412:17;18403:6;18359:71;:::i;:::-;18440:72;18508:2;18497:9;18493:18;18484:6;18440:72;:::i;:::-;18522:80;18598:2;18587:9;18583:18;18574:6;18522:80;:::i;:::-;18612;18688:2;18677:9;18673:18;18664:6;18612:80;:::i;:::-;18702:73;18770:3;18759:9;18755:19;18746:6;18702:73;:::i;:::-;18785;18853:3;18842:9;18838:19;18829:6;18785:73;:::i;:::-;18058:807;;;;;;;;;:::o;18871:143::-;18928:5;18959:6;18953:13;18944:22;;18975:33;19002:5;18975:33;:::i;:::-;18871:143;;;;:::o;19020:663::-;19108:6;19116;19124;19173:2;19161:9;19152:7;19148:23;19144:32;19141:119;;;19179:79;;:::i;:::-;19141:119;19299:1;19324:64;19380:7;19371:6;19360:9;19356:22;19324:64;:::i;:::-;19314:74;;19270:128;19437:2;19463:64;19519:7;19510:6;19499:9;19495:22;19463:64;:::i;:::-;19453:74;;19408:129;19576:2;19602:64;19658:7;19649:6;19638:9;19634:22;19602:64;:::i;:::-;19592:74;;19547:129;19020:663;;;;;:::o;19689:332::-;19810:4;19848:2;19837:9;19833:18;19825:26;;19861:71;19929:1;19918:9;19914:17;19905:6;19861:71;:::i;:::-;19942:72;20010:2;19999:9;19995:18;19986:6;19942:72;:::i;:::-;19689:332;;;;;:::o;20027:116::-;20097:21;20112:5;20097:21;:::i;:::-;20090:5;20087:32;20077:60;;20133:1;20130;20123:12;20077:60;20027:116;:::o;20149:137::-;20203:5;20234:6;20228:13;20219:22;;20250:30;20274:5;20250:30;:::i;:::-;20149:137;;;;:::o;20292:345::-;20359:6;20408:2;20396:9;20387:7;20383:23;20379:32;20376:119;;;20414:79;;:::i;:::-;20376:119;20534:1;20559:61;20612:7;20603:6;20592:9;20588:22;20559:61;:::i;:::-;20549:71;;20505:125;20292:345;;;;:::o;20643:224::-;20783:34;20779:1;20771:6;20767:14;20760:58;20852:7;20847:2;20839:6;20835:15;20828:32;20643:224;:::o;20873:366::-;21015:3;21036:67;21100:2;21095:3;21036:67;:::i;:::-;21029:74;;21112:93;21201:3;21112:93;:::i;:::-;21230:2;21225:3;21221:12;21214:19;;20873:366;;;:::o;21245:419::-;21411:4;21449:2;21438:9;21434:18;21426:26;;21498:9;21492:4;21488:20;21484:1;21473:9;21469:17;21462:47;21526:131;21652:4;21526:131;:::i;:::-;21518:139;;21245:419;;;:::o;21670:222::-;21810:34;21806:1;21798:6;21794:14;21787:58;21879:5;21874:2;21866:6;21862:15;21855:30;21670:222;:::o;21898:366::-;22040:3;22061:67;22125:2;22120:3;22061:67;:::i;:::-;22054:74;;22137:93;22226:3;22137:93;:::i;:::-;22255:2;22250:3;22246:12;22239:19;;21898:366;;;:::o;22270:419::-;22436:4;22474:2;22463:9;22459:18;22451:26;;22523:9;22517:4;22513:20;22509:1;22498:9;22494:17;22487:47;22551:131;22677:4;22551:131;:::i;:::-;22543:139;;22270:419;;;:::o;22695:228::-;22835:34;22831:1;22823:6;22819:14;22812:58;22904:11;22899:2;22891:6;22887:15;22880:36;22695:228;:::o;22929:366::-;23071:3;23092:67;23156:2;23151:3;23092:67;:::i;:::-;23085:74;;23168:93;23257:3;23168:93;:::i;:::-;23286:2;23281:3;23277:12;23270:19;;22929:366;;;:::o;23301:419::-;23467:4;23505:2;23494:9;23490:18;23482:26;;23554:9;23548:4;23544:20;23540:1;23529:9;23525:17;23518:47;23582:131;23708:4;23582:131;:::i;:::-;23574:139;;23301:419;;;:::o;23726:175::-;23866:27;23862:1;23854:6;23850:14;23843:51;23726:175;:::o;23907:366::-;24049:3;24070:67;24134:2;24129:3;24070:67;:::i;:::-;24063:74;;24146:93;24235:3;24146:93;:::i;:::-;24264:2;24259:3;24255:12;24248:19;;23907:366;;;:::o;24279:419::-;24445:4;24483:2;24472:9;24468:18;24460:26;;24532:9;24526:4;24522:20;24518:1;24507:9;24503:17;24496:47;24560:131;24686:4;24560:131;:::i;:::-;24552:139;;24279:419;;;:::o;24704:191::-;24744:3;24763:20;24781:1;24763:20;:::i;:::-;24758:25;;24797:20;24815:1;24797:20;:::i;:::-;24792:25;;24840:1;24837;24833:9;24826:16;;24861:3;24858:1;24855:10;24852:36;;;24868:18;;:::i;:::-;24852:36;24704:191;;;;:::o;24901:176::-;25041:28;25037:1;25029:6;25025:14;25018:52;24901:176;:::o;25083:366::-;25225:3;25246:67;25310:2;25305:3;25246:67;:::i;:::-;25239:74;;25322:93;25411:3;25322:93;:::i;:::-;25440:2;25435:3;25431:12;25424:19;;25083:366;;;:::o;25455:419::-;25621:4;25659:2;25648:9;25644:18;25636:26;;25708:9;25702:4;25698:20;25694:1;25683:9;25679:17;25672:47;25736:131;25862:4;25736:131;:::i;:::-;25728:139;;25455:419;;;:::o;25880:233::-;25919:3;25942:24;25960:5;25942:24;:::i;:::-;25933:33;;25988:66;25981:5;25978:77;25975:103;;26058:18;;:::i;:::-;25975:103;26105:1;26098:5;26094:13;26087:20;;25880:233;;;:::o;26119:173::-;26259:25;26255:1;26247:6;26243:14;26236:49;26119:173;:::o;26298:366::-;26440:3;26461:67;26525:2;26520:3;26461:67;:::i;:::-;26454:74;;26537:93;26626:3;26537:93;:::i;:::-;26655:2;26650:3;26646:12;26639:19;;26298:366;;;:::o;26670:419::-;26836:4;26874:2;26863:9;26859:18;26851:26;;26923:9;26917:4;26913:20;26909:1;26898:9;26894:17;26887:47;26951:131;27077:4;26951:131;:::i;:::-;26943:139;;26670:419;;;:::o;27095:223::-;27235:34;27231:1;27223:6;27219:14;27212:58;27304:6;27299:2;27291:6;27287:15;27280:31;27095:223;:::o;27324:366::-;27466:3;27487:67;27551:2;27546:3;27487:67;:::i;:::-;27480:74;;27563:93;27652:3;27563:93;:::i;:::-;27681:2;27676:3;27672:12;27665:19;;27324:366;;;:::o;27696:419::-;27862:4;27900:2;27889:9;27885:18;27877:26;;27949:9;27943:4;27939:20;27935:1;27924:9;27920:17;27913:47;27977:131;28103:4;27977:131;:::i;:::-;27969:139;;27696:419;;;:::o;28121:221::-;28261:34;28257:1;28249:6;28245:14;28238:58;28330:4;28325:2;28317:6;28313:15;28306:29;28121:221;:::o;28348:366::-;28490:3;28511:67;28575:2;28570:3;28511:67;:::i;:::-;28504:74;;28587:93;28676:3;28587:93;:::i;:::-;28705:2;28700:3;28696:12;28689:19;;28348:366;;;:::o;28720:419::-;28886:4;28924:2;28913:9;28909:18;28901:26;;28973:9;28967:4;28963:20;28959:1;28948:9;28944:17;28937:47;29001:131;29127:4;29001:131;:::i;:::-;28993:139;;28720:419;;;:::o;29145:194::-;29185:4;29205:20;29223:1;29205:20;:::i;:::-;29200:25;;29239:20;29257:1;29239:20;:::i;:::-;29234:25;;29283:1;29280;29276:9;29268:17;;29307:1;29301:4;29298:11;29295:37;;;29312:18;;:::i;:::-;29295:37;29145:194;;;;:::o;29345:114::-;29412:6;29446:5;29440:12;29430:22;;29345:114;;;:::o;29465:184::-;29564:11;29598:6;29593:3;29586:19;29638:4;29633:3;29629:14;29614:29;;29465:184;;;;:::o;29655:132::-;29722:4;29745:3;29737:11;;29775:4;29770:3;29766:14;29758:22;;29655:132;;;:::o;29793:108::-;29870:24;29888:5;29870:24;:::i;:::-;29865:3;29858:37;29793:108;;:::o;29907:179::-;29976:10;29997:46;30039:3;30031:6;29997:46;:::i;:::-;30075:4;30070:3;30066:14;30052:28;;29907:179;;;;:::o;30092:113::-;30162:4;30194;30189:3;30185:14;30177:22;;30092:113;;;:::o;30241:732::-;30360:3;30389:54;30437:5;30389:54;:::i;:::-;30459:86;30538:6;30533:3;30459:86;:::i;:::-;30452:93;;30569:56;30619:5;30569:56;:::i;:::-;30648:7;30679:1;30664:284;30689:6;30686:1;30683:13;30664:284;;;30765:6;30759:13;30792:63;30851:3;30836:13;30792:63;:::i;:::-;30785:70;;30878:60;30931:6;30878:60;:::i;:::-;30868:70;;30724:224;30711:1;30708;30704:9;30699:14;;30664:284;;;30668:14;30964:3;30957:10;;30365:608;;;30241:732;;;;:::o;30979:831::-;31242:4;31280:3;31269:9;31265:19;31257:27;;31294:71;31362:1;31351:9;31347:17;31338:6;31294:71;:::i;:::-;31375:80;31451:2;31440:9;31436:18;31427:6;31375:80;:::i;:::-;31502:9;31496:4;31492:20;31487:2;31476:9;31472:18;31465:48;31530:108;31633:4;31624:6;31530:108;:::i;:::-;31522:116;;31648:72;31716:2;31705:9;31701:18;31692:6;31648:72;:::i;:::-;31730:73;31798:3;31787:9;31783:19;31774:6;31730:73;:::i;:::-;30979:831;;;;;;;;:::o;31816:220::-;31956:34;31952:1;31944:6;31940:14;31933:58;32025:3;32020:2;32012:6;32008:15;32001:28;31816:220;:::o;32042:366::-;32184:3;32205:67;32269:2;32264:3;32205:67;:::i;:::-;32198:74;;32281:93;32370:3;32281:93;:::i;:::-;32399:2;32394:3;32390:12;32383:19;;32042:366;;;:::o;32414:419::-;32580:4;32618:2;32607:9;32603:18;32595:26;;32667:9;32661:4;32657:20;32653:1;32642:9;32638:17;32631:47;32695:131;32821:4;32695:131;:::i;:::-;32687:139;;32414:419;;;:::o;32839:177::-;32979:29;32975:1;32967:6;32963:14;32956:53;32839:177;:::o;33022:366::-;33164:3;33185:67;33249:2;33244:3;33185:67;:::i;:::-;33178:74;;33261:93;33350:3;33261:93;:::i;:::-;33379:2;33374:3;33370:12;33363:19;;33022:366;;;:::o;33394:419::-;33560:4;33598:2;33587:9;33583:18;33575:26;;33647:9;33641:4;33637:20;33633:1;33622:9;33618:17;33611:47;33675:131;33801:4;33675:131;:::i;:::-;33667:139;;33394:419;;;:::o

Swarm Source

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