ETH Price: $3,331.86 (+2.41%)

Token

Ross Ulbricht (ROSS)
 

Overview

Max Total Supply

21,000,000 ROSS

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
16,821.228961509 ROSS

Value
$0.00
0x8fB6D15F9c803a5F33C0687B00307e0D61004708
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:
ROSS

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-01-15
*/

// SPDX-License-Identifier: UNLICENSE
/*
What do you think Trump will do about Ross Ulbricht in his first week? Exactly.

RossUlbrichttoken.vip
*/

pragma solidity 0.8.28;

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 ROSS 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;
    address payable private _marketingWallet;
    address payable private _devWallet;
    uint256 _devPortion = 0;

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 21000000 * 10**_decimals;
    string private constant _name = unicode"Ross Ulbricht";
    string private constant _symbol = unicode"ROSS";
    uint256 public _maxTxAmount= (_tTotal * 10) / 1000;
    uint256 public _maxWalletSize= (_tTotal * 10) / 1000;
    uint256 public _taxSwapThreshold= (_tTotal * 1) / 100;
    uint256 public _maxTaxSwap= (_tTotal * 500) / 1000;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    uint256 public tradingOpenBlock=9999999999;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    event RecoverToken(address TokenAddressCleared, uint256 Amount);
		event TradingOpened(uint256 timestamp, uint256 blockNumber);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

  constructor () {
        _marketingWallet = payable(0xC7CcAfF0850C738775c3f0F17C9b7A2384B273C6);
        _devWallet = payable(0xd371E2eA903E1A9266d8922FD632fC8F8944570F);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[0xd371E2eA903E1A9266d8922FD632fC8F8944570F] = true;
        
        _balances[0xd371E2eA903E1A9266d8922FD632fC8F8944570F] = 210000000000000;
        emit Transfer(address(0), 0xd371E2eA903E1A9266d8922FD632fC8F8944570F, 210000000000000);
        _balances[_msgSender()] = 20790000000000000;
        emit Transfer(address(0), _msgSender(), 20790000000000000);
    }

    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");
        if (block.number < tradingOpenBlock) {
            require(
                _isExcludedFromFee[from] || _isExcludedFromFee[to],
                "Trading is not open yet and you are not authorized"
            );
        }
        uint256 taxAmount = 0;

        if (from != owner() && to != owner()) {
            

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

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

	function sendETHToFee(uint256 amount) private {
	    if (_devPortion == 0) {
	        (bool success,) = _marketingWallet.call{value: amount}("");
	    	success;
		} else {
	        uint256 ethForDev = amount * _devPortion / 100;
			uint256 ethForTaxWallet = amount - ethForDev;
			(bool devsuccess,) = _devWallet.call{value: ethForDev}("");
			devsuccess;
			(bool success,)	= _marketingWallet.call{value: ethForTaxWallet}("");
			success;
		}
	}

    function addLiquidity() external onlyOwner() {
        require(tradingOpenBlock > block.number, "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);
    }
 
    function enableTrading() external onlyOwner() {
        require(tradingOpenBlock > block.number, "Trading is already open");
        tradingOpenBlock = block.number;
        swapEnabled = true;
        emit TradingOpened(block.timestamp, block.number);
    }

    receive() external payable {}
    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender() == _marketingWallet);
      require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);

      _finalBuyTax =_newFee;
      _finalSellTax =_newFee;
    }

    function recoverTokens(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(_msgSender() == _marketingWallet);

        if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }

        emit RecoverToken(tokenAddress,tokens);
        return IERC20(tokenAddress).transfer(_marketingWallet, tokens);
    }

    function setExcludedFromFee(address account, bool excluded) external onlyOwner {
        require(account != address(0), "Cannot set zero address");
        _isExcludedFromFee[account] = excluded;
    }

 		function setExcludedFromFeeMulti(address[] calldata accounts, bool excluded) external onlyOwner {
        require(accounts.length > 0, "Empty array");
        for (uint256 i = 0; i < accounts.length; i++) {
            require(accounts[i] != address(0), "Cannot set zero address");
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function updateMarketingWallet(address payable newTaxWallet) external onlyOwner {
        require(newTaxWallet != address(0), "New tax wallet cannot be the zero address");
        _marketingWallet = newTaxWallet;
    }

    function clearContractETH() external {
        require(_msgSender() == _marketingWallet);

        uint256 ethBalance= address(this).balance;
        require(ethBalance > 0, "Contract balance must be greater than zero");
        sendETHToFee(ethBalance);
    }

    function manualUnclog() external {
        require(_msgSender() == _marketingWallet);

        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
          swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if(ethBalance>0){ sendETHToFee(ethBalance); }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"RecoverToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"TradingOpened","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":[],"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":[],"name":"addLiquidity","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":"clearContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualUnclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"recoverTokens","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFeeMulti","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":[],"name":"tradingOpenBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newTaxWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600655600f60075560146008555f6009555f600a556012600b556012600c556014600d555f600e555f600f556103e8600a6009600a610044919061079c565b6301406f4061005391906107e6565b61005d91906107e6565b6100679190610854565b6010556103e8600a6009600a61007d919061079c565b6301406f4061008c91906107e6565b61009691906107e6565b6100a09190610854565b601155606460016009600a6100b5919061079c565b6301406f406100c491906107e6565b6100ce91906107e6565b6100d89190610854565b6012556103e86101f46009600a6100ef919061079c565b6301406f406100fe91906107e6565b61010891906107e6565b6101129190610854565b6013556402540be3ff6016555f60175f6101000a81548160ff0219169083151502179055505f601760016101000a81548160ff0219169083151502179055505f6018555f601955348015610164575f5ffd5b505f6101746105fd60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073c7ccaff0850c738775c3f0f17c9b7a2384b273c660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d371e2ea903e1a9266d8922fd632fc8f8944570f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f6102cb61060460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73d371e2ea903e1a9266d8922fd632fc8f8944570f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555065befe6f67200060015f73d371e2ea903e1a9266d8922fd632fc8f8944570f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555073d371e2ea903e1a9266d8922fd632fc8f8944570f73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef65befe6f67200060405161052191906108c6565b60405180910390a36649dc6514e1600060015f6105426105fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061058d6105fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6649dc6514e160006040516105f09190610918565b60405180910390a3610931565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156106ad578086048111156106895761068861062b565b5b60018516156106985780820291505b80810290506106a685610658565b945061066d565b94509492505050565b5f826106c55760019050610780565b816106d2575f9050610780565b81600181146106e857600281146106f257610721565b6001915050610780565b60ff8411156107045761070361062b565b5b8360020a91508482111561071b5761071a61062b565b5b50610780565b5060208310610133831016604e8410600b84101617156107565782820a9050838111156107515761075061062b565b5b610780565b6107638484846001610664565b9250905081840481111561077a5761077961062b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6107a682610787565b91506107b183610790565b92506107de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846106b6565b905092915050565b5f6107f082610787565b91506107fb83610787565b925082820261080981610787565b915082820484148315176108205761081f61062b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61085e82610787565b915061086983610787565b92508261087957610878610827565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f6108b06108ab6108a684610884565b61088d565b610787565b9050919050565b6108c081610896565b82525050565b5f6020820190506108d95f8301846108b7565b92915050565b5f819050919050565b5f6109026108fd6108f8846108df565b61088d565b610787565b9050919050565b610912816108e8565b82525050565b5f60208201905061092b5f830184610909565b92915050565b6140ed8061093e5f395ff3fe60806040526004361061019f575f3560e01c8063715018a6116100eb57806395d89b4111610089578063bf474bed11610063578063bf474bed1461054c578063dd62ed3e14610576578063e8078d94146105b2578063ec1f3f63146105c8576101a6565b806395d89b41146104be578063a9059cbb146104e8578063aacebbe314610524576101a6565b806383bf0b32116100c557806383bf0b321461042c5780638a8c523c146104545780638da5cb5b1461046a5780638f9a55c014610494576101a6565b8063715018a6146103d65780637c4a7137146103ec5780637d1db4a514610402576101a6565b806318160ddd1161015857806338347fa41161013257806338347fa414610346578063622565891461035c5780636612e66f1461037257806370a082311461039a576101a6565b806318160ddd146102b657806323b872dd146102e0578063313ce5671461031c576101a6565b8063069c9fae146101aa57806306fdde03146101e6578063095ea7b3146102105780630e23500e1461024c5780630faee56f14610276578063109daa99146102a0576101a6565b366101a657005b5f5ffd5b3480156101b5575f5ffd5b506101d060048036038101906101cb9190612d0c565b6105f0565b6040516101dd9190612d64565b60405180910390f35b3480156101f1575f5ffd5b506101fa6107af565b6040516102079190612ded565b60405180910390f35b34801561021b575f5ffd5b5061023660048036038101906102319190612d0c565b6107ec565b6040516102439190612d64565b60405180910390f35b348015610257575f5ffd5b50610260610809565b60405161026d9190612e1c565b60405180910390f35b348015610281575f5ffd5b5061028a61080f565b6040516102979190612e1c565b60405180910390f35b3480156102ab575f5ffd5b506102b4610815565b005b3480156102c1575f5ffd5b506102ca6108ea565b6040516102d79190612e1c565b60405180910390f35b3480156102eb575f5ffd5b5061030660048036038101906103019190612e35565b61090d565b6040516103139190612d64565b60405180910390f35b348015610327575f5ffd5b506103306109e1565b60405161033d9190612ea0565b60405180910390f35b348015610351575f5ffd5b5061035a6109e9565b005b348015610367575f5ffd5b50610370610a80565b005b34801561037d575f5ffd5b5061039860048036038101906103939190612ee3565b610bb0565b005b3480156103a5575f5ffd5b506103c060048036038101906103bb9190612f21565b610d0b565b6040516103cd9190612e1c565b60405180910390f35b3480156103e1575f5ffd5b506103ea610d51565b005b3480156103f7575f5ffd5b50610400610ea1565b005b34801561040d575f5ffd5b50610416610f52565b6040516104239190612e1c565b60405180910390f35b348015610437575f5ffd5b50610452600480360381019061044d9190612fad565b610f58565b005b34801561045f575f5ffd5b50610468611165565b005b348015610475575f5ffd5b5061047e61129b565b60405161048b9190613019565b60405180910390f35b34801561049f575f5ffd5b506104a86112c2565b6040516104b59190612e1c565b60405180910390f35b3480156104c9575f5ffd5b506104d26112c8565b6040516104df9190612ded565b60405180910390f35b3480156104f3575f5ffd5b5061050e60048036038101906105099190612d0c565b611305565b60405161051b9190612d64565b60405180910390f35b34801561052f575f5ffd5b5061054a6004803603810190610545919061306d565b611322565b005b348015610557575f5ffd5b50610560611468565b60405161056d9190612e1c565b60405180910390f35b348015610581575f5ffd5b5061059c60048036038101906105979190613098565b61146e565b6040516105a99190612e1c565b60405180910390f35b3480156105bd575f5ffd5b506105c66114f0565b005b3480156105d3575f5ffd5b506105ee60048036038101906105e991906130d6565b6119d1565b005b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610631611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614610650575f5ffd5b5f82036106d2578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106909190613019565b602060405180830381865afa1580156106ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cf9190613115565b91505b7ffba2d3bdfb2d601eb66a89783a2c614856101cadce71556753c2edadd60c831c8383604051610703929190613140565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016107679291906131c2565b6020604051808303815f875af1158015610783573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a791906131fd565b905092915050565b60606040518060400160405280600d81526020017f526f737320556c62726963687400000000000000000000000000000000000000815250905090565b5f6107ff6107f8611a5d565b8484611a64565b6001905092915050565b60165481565b60135481565b61081d611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a190613272565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516108e091906132c9565b60405180910390a1565b5f6009600a6108f9919061343e565b6301406f406109089190613488565b905090565b5f610919848484611c27565b6109d684610925611a5d565b6109d1856040518060600160405280602881526020016140906028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610988611a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125ef9092919063ffffffff16565b611a64565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a29611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614610a48575f5ffd5b5f610a5230610d0b565b90505f811115610a6657610a6581612651565b5b5f4790505f811115610a7c57610a7b816128ba565b5b5050565b610a88611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c90613272565b60405180910390fd5b6009600a610b23919061343e565b6301406f40610b329190613488565b6010819055506009600a610b46919061343e565b6301406f40610b559190613488565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b8a919061343e565b6301406f40610b999190613488565b604051610ba69190612e1c565b60405180910390a1565b610bb8611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa90613513565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d59611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee1611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614610f00575f5ffd5b5f4790505f8111610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d906135a1565b60405180910390fd5b610f4f816128ba565b50565b60105481565b610f60611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490613272565b60405180910390fd5b5f8383905011611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613609565b60405180910390fd5b5f5f90505b8383905081101561115f575f73ffffffffffffffffffffffffffffffffffffffff1684848381811061106c5761106b613627565b5b90506020020160208101906110819190612f21565b73ffffffffffffffffffffffffffffffffffffffff16036110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce90613513565b60405180910390fd5b8160035f8686858181106110ee576110ed613627565b5b90506020020160208101906111039190612f21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611037565b50505050565b61116d611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f190613272565b60405180910390fd5b436016541161123e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112359061369e565b60405180910390fd5b436016819055506001601760016101000a81548160ff0219169083151502179055507f5222e705b737362f1fdaea6a49688b7adb508a9284351fdca9914de069f7080442436040516112919291906136bc565b60405180910390a1565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f524f535300000000000000000000000000000000000000000000000000000000815250905090565b5f611318611311611a5d565b8484611c27565b6001905092915050565b61132a611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90613753565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114f8611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90613272565b60405180910390fd5b43601654116115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c09061369e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506116653060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a611651919061343e565b6301406f406116609190613488565b611a64565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f39190613785565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611779573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179d9190613785565b6040518363ffffffff1660e01b81526004016117ba9291906137b0565b6020604051808303815f875af11580156117d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fa9190613785565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061188130610d0b565b5f5f61188b61129b565b426040518863ffffffff1660e01b81526004016118ad969594939291906137d7565b60606040518083038185885af11580156118c9573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118ee9190613836565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161198e929190613140565b6020604051808303815f875af11580156119aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ce91906131fd565b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a11611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614611a30575f5ffd5b6009548111158015611a445750600a548111155b611a4c575f5ffd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac9906138f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790613984565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c1a9190612e1c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c90613a12565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa90613aa0565b60405180910390fd5b5f8111611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90613b2e565b60405180910390fd5b601654431015611e2a5760035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dea575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090613bbc565b60405180910390fd5b5b5f5f9050611e3661129b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ea45750611e7461129b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561233f575f600f5403611ef157611eee6064611ee0600b54600f5411611ecd57600754611ed1565b6009545b85612a9890919063ffffffff16565b612b0f90919063ffffffff16565b90505b5f600f541115611f2657611f236064611f15600e5485612a9890919063ffffffff16565b612b0f90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fcf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612022575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561211a5760105482111561206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613c24565b60405180910390fd5b6011548261207985610d0b565b6120839190613c42565b11156120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613cbf565b60405180910390fd5b61210060646120f2600b54600f54116120df576007546120e3565b6009545b85612a9890919063ffffffff16565b612b0f90919063ffffffff16565b9050600f5f81548092919061211490613cdd565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121a257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121e6576121e360646121d5600c54600f54116121c2576008546121c6565b600a545b85612a9890919063ffffffff16565b612b0f90919063ffffffff16565b90505b5f6121f030610d0b565b905060175f9054906101000a900460ff1615801561225a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156122725750601760019054906101000a900460ff165b801561227f575060125481115b801561228e5750600d54600f54115b1561233d576019544311156122a5575f6018819055505b6003601854106122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190613d6e565b60405180910390fd5b612307612302846122fd84601354612b58565b612b58565b612651565b5f4790505f81111561231d5761231c476128ba565b5b60185f81548092919061232f90613cdd565b919050555043601981905550505b505b5f81111561243e576123978160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124359190612e1c565b60405180910390a35b61248e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bcd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125316124e58284612bcd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6125d48486612bcd90919063ffffffff16565b6040516125e19190612e1c565b60405180910390a350505050565b5f838311158290612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d9190612ded565b60405180910390fd5b505f83856126449190613d8c565b9050809150509392505050565b600160175f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561268757612686613dbf565b5b6040519080825280602002602001820160405280156126b55781602001602082028036833780820191505090505b50905030815f815181106126cc576126cb613627565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612770573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127949190613785565b816001815181106127a8576127a7613627565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061280e3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a64565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612870959493929190613ea3565b5f604051808303815f87803b158015612887575f5ffd5b505af1158015612899573d5f5f3e3d5ffd5b50505050505f60175f6101000a81548160ff02191690831515021790555050565b5f60065403612952575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161290990613f28565b5f6040518083038185875af1925050503d805f8114612943576040519150601f19603f3d011682016040523d82523d5f602084013e612948565b606091505b5050905050612a95565b5f6064600654836129639190613488565b61296d9190613f69565b90505f818361297c9190613d8c565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516129c490613f28565b5f6040518083038185875af1925050503d805f81146129fe576040519150601f19603f3d011682016040523d82523d5f602084013e612a03565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612a4d90613f28565b5f6040518083038185875af1925050503d805f8114612a87576040519150601f19603f3d011682016040523d82523d5f602084013e612a8c565b606091505b50509050505050505b50565b5f5f8303612aa8575f9050612b09565b5f8284612ab59190613488565b9050828482612ac49190613f69565b14612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb90614009565b60405180910390fd5b809150505b92915050565b5f612b5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c16565b905092915050565b5f818311612b665782612b68565b815b905092915050565b5f5f8284612b7e9190613c42565b905083811015612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90614071565b60405180910390fd5b8091505092915050565b5f612c0e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125ef565b905092915050565b5f5f83118290612c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c539190612ded565b60405180910390fd5b505f8385612c6a9190613f69565b9050809150509392505050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ca882612c7f565b9050919050565b612cb881612c9e565b8114612cc2575f5ffd5b50565b5f81359050612cd381612caf565b92915050565b5f819050919050565b612ceb81612cd9565b8114612cf5575f5ffd5b50565b5f81359050612d0681612ce2565b92915050565b5f5f60408385031215612d2257612d21612c77565b5b5f612d2f85828601612cc5565b9250506020612d4085828601612cf8565b9150509250929050565b5f8115159050919050565b612d5e81612d4a565b82525050565b5f602082019050612d775f830184612d55565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612dbf82612d7d565b612dc98185612d87565b9350612dd9818560208601612d97565b612de281612da5565b840191505092915050565b5f6020820190508181035f830152612e058184612db5565b905092915050565b612e1681612cd9565b82525050565b5f602082019050612e2f5f830184612e0d565b92915050565b5f5f5f60608486031215612e4c57612e4b612c77565b5b5f612e5986828701612cc5565b9350506020612e6a86828701612cc5565b9250506040612e7b86828701612cf8565b9150509250925092565b5f60ff82169050919050565b612e9a81612e85565b82525050565b5f602082019050612eb35f830184612e91565b92915050565b612ec281612d4a565b8114612ecc575f5ffd5b50565b5f81359050612edd81612eb9565b92915050565b5f5f60408385031215612ef957612ef8612c77565b5b5f612f0685828601612cc5565b9250506020612f1785828601612ecf565b9150509250929050565b5f60208284031215612f3657612f35612c77565b5b5f612f4384828501612cc5565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612f6d57612f6c612f4c565b5b8235905067ffffffffffffffff811115612f8a57612f89612f50565b5b602083019150836020820283011115612fa657612fa5612f54565b5b9250929050565b5f5f5f60408486031215612fc457612fc3612c77565b5b5f84013567ffffffffffffffff811115612fe157612fe0612c7b565b5b612fed86828701612f58565b9350935050602061300086828701612ecf565b9150509250925092565b61301381612c9e565b82525050565b5f60208201905061302c5f83018461300a565b92915050565b5f61303c82612c7f565b9050919050565b61304c81613032565b8114613056575f5ffd5b50565b5f8135905061306781613043565b92915050565b5f6020828403121561308257613081612c77565b5b5f61308f84828501613059565b91505092915050565b5f5f604083850312156130ae576130ad612c77565b5b5f6130bb85828601612cc5565b92505060206130cc85828601612cc5565b9150509250929050565b5f602082840312156130eb576130ea612c77565b5b5f6130f884828501612cf8565b91505092915050565b5f8151905061310f81612ce2565b92915050565b5f6020828403121561312a57613129612c77565b5b5f61313784828501613101565b91505092915050565b5f6040820190506131535f83018561300a565b6131606020830184612e0d565b9392505050565b5f819050919050565b5f61318a61318561318084612c7f565b613167565b612c7f565b9050919050565b5f61319b82613170565b9050919050565b5f6131ac82613191565b9050919050565b6131bc816131a2565b82525050565b5f6040820190506131d55f8301856131b3565b6131e26020830184612e0d565b9392505050565b5f815190506131f781612eb9565b92915050565b5f6020828403121561321257613211612c77565b5b5f61321f848285016131e9565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61325c602083612d87565b915061326782613228565b602082019050919050565b5f6020820190508181035f83015261328981613250565b9050919050565b5f819050919050565b5f6132b36132ae6132a984613290565b613167565b612cd9565b9050919050565b6132c381613299565b82525050565b5f6020820190506132dc5f8301846132ba565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115613364578086048111156133405761333f6132e2565b5b600185161561334f5780820291505b808102905061335d8561330f565b9450613324565b94509492505050565b5f8261337c5760019050613437565b81613389575f9050613437565b816001811461339f57600281146133a9576133d8565b6001915050613437565b60ff8411156133bb576133ba6132e2565b5b8360020a9150848211156133d2576133d16132e2565b5b50613437565b5060208310610133831016604e8410600b841016171561340d5782820a905083811115613408576134076132e2565b5b613437565b61341a848484600161331b565b92509050818404811115613431576134306132e2565b5b81810290505b9392505050565b5f61344882612cd9565b915061345383612e85565b92506134807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461336d565b905092915050565b5f61349282612cd9565b915061349d83612cd9565b92508282026134ab81612cd9565b915082820484148315176134c2576134c16132e2565b5b5092915050565b7f43616e6e6f7420736574207a65726f20616464726573730000000000000000005f82015250565b5f6134fd601783612d87565b9150613508826134c9565b602082019050919050565b5f6020820190508181035f83015261352a816134f1565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f61358b602a83612d87565b915061359682613531565b604082019050919050565b5f6020820190508181035f8301526135b88161357f565b9050919050565b7f456d7074792061727261790000000000000000000000000000000000000000005f82015250565b5f6135f3600b83612d87565b91506135fe826135bf565b602082019050919050565b5f6020820190508181035f830152613620816135e7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613688601783612d87565b915061369382613654565b602082019050919050565b5f6020820190508181035f8301526136b58161367c565b9050919050565b5f6040820190506136cf5f830185612e0d565b6136dc6020830184612e0d565b9392505050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61373d602983612d87565b9150613748826136e3565b604082019050919050565b5f6020820190508181035f83015261376a81613731565b9050919050565b5f8151905061377f81612caf565b92915050565b5f6020828403121561379a57613799612c77565b5b5f6137a784828501613771565b91505092915050565b5f6040820190506137c35f83018561300a565b6137d0602083018461300a565b9392505050565b5f60c0820190506137ea5f83018961300a565b6137f76020830188612e0d565b61380460408301876132ba565b61381160608301866132ba565b61381e608083018561300a565b61382b60a0830184612e0d565b979650505050505050565b5f5f5f6060848603121561384d5761384c612c77565b5b5f61385a86828701613101565b935050602061386b86828701613101565b925050604061387c86828701613101565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138e0602483612d87565b91506138eb82613886565b604082019050919050565b5f6020820190508181035f83015261390d816138d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61396e602283612d87565b915061397982613914565b604082019050919050565b5f6020820190508181035f83015261399b81613962565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139fc602583612d87565b9150613a07826139a2565b604082019050919050565b5f6020820190508181035f830152613a29816139f0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a8a602383612d87565b9150613a9582613a30565b604082019050919050565b5f6020820190508181035f830152613ab781613a7e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b18602983612d87565b9150613b2382613abe565b604082019050919050565b5f6020820190508181035f830152613b4581613b0c565b9050919050565b7f54726164696e67206973206e6f74206f70656e2079657420616e6420796f75205f8201527f617265206e6f7420617574686f72697a65640000000000000000000000000000602082015250565b5f613ba6603283612d87565b9150613bb182613b4c565b604082019050919050565b5f6020820190508181035f830152613bd381613b9a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c0e601983612d87565b9150613c1982613bda565b602082019050919050565b5f6020820190508181035f830152613c3b81613c02565b9050919050565b5f613c4c82612cd9565b9150613c5783612cd9565b9250828201905080821115613c6f57613c6e6132e2565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613ca9601a83612d87565b9150613cb482613c75565b602082019050919050565b5f6020820190508181035f830152613cd681613c9d565b9050919050565b5f613ce782612cd9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1957613d186132e2565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d58601783612d87565b9150613d6382613d24565b602082019050919050565b5f6020820190508181035f830152613d8581613d4c565b9050919050565b5f613d9682612cd9565b9150613da183612cd9565b9250828203905081811115613db957613db86132e2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e1e81612c9e565b82525050565b5f613e2f8383613e15565b60208301905092915050565b5f602082019050919050565b5f613e5182613dec565b613e5b8185613df6565b9350613e6683613e06565b805f5b83811015613e96578151613e7d8882613e24565b9750613e8883613e3b565b925050600181019050613e69565b5085935050505092915050565b5f60a082019050613eb65f830188612e0d565b613ec360208301876132ba565b8181036040830152613ed58186613e47565b9050613ee4606083018561300a565b613ef16080830184612e0d565b9695505050505050565b5f81905092915050565b50565b5f613f135f83613efb565b9150613f1e82613f05565b5f82019050919050565b5f613f3282613f08565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f7382612cd9565b9150613f7e83612cd9565b925082613f8e57613f8d613f3c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ff3602183612d87565b9150613ffe82613f99565b604082019050919050565b5f6020820190508181035f83015261402081613fe7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61405b601b83612d87565b915061406682614027565b602082019050919050565b5f6020820190508181035f8301526140888161404f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220554ec56a0725077075b8bb5ee63e907ab82e37943dc8cfb06fc1f931d26096a164736f6c634300081c0033

Deployed Bytecode

0x60806040526004361061019f575f3560e01c8063715018a6116100eb57806395d89b4111610089578063bf474bed11610063578063bf474bed1461054c578063dd62ed3e14610576578063e8078d94146105b2578063ec1f3f63146105c8576101a6565b806395d89b41146104be578063a9059cbb146104e8578063aacebbe314610524576101a6565b806383bf0b32116100c557806383bf0b321461042c5780638a8c523c146104545780638da5cb5b1461046a5780638f9a55c014610494576101a6565b8063715018a6146103d65780637c4a7137146103ec5780637d1db4a514610402576101a6565b806318160ddd1161015857806338347fa41161013257806338347fa414610346578063622565891461035c5780636612e66f1461037257806370a082311461039a576101a6565b806318160ddd146102b657806323b872dd146102e0578063313ce5671461031c576101a6565b8063069c9fae146101aa57806306fdde03146101e6578063095ea7b3146102105780630e23500e1461024c5780630faee56f14610276578063109daa99146102a0576101a6565b366101a657005b5f5ffd5b3480156101b5575f5ffd5b506101d060048036038101906101cb9190612d0c565b6105f0565b6040516101dd9190612d64565b60405180910390f35b3480156101f1575f5ffd5b506101fa6107af565b6040516102079190612ded565b60405180910390f35b34801561021b575f5ffd5b5061023660048036038101906102319190612d0c565b6107ec565b6040516102439190612d64565b60405180910390f35b348015610257575f5ffd5b50610260610809565b60405161026d9190612e1c565b60405180910390f35b348015610281575f5ffd5b5061028a61080f565b6040516102979190612e1c565b60405180910390f35b3480156102ab575f5ffd5b506102b4610815565b005b3480156102c1575f5ffd5b506102ca6108ea565b6040516102d79190612e1c565b60405180910390f35b3480156102eb575f5ffd5b5061030660048036038101906103019190612e35565b61090d565b6040516103139190612d64565b60405180910390f35b348015610327575f5ffd5b506103306109e1565b60405161033d9190612ea0565b60405180910390f35b348015610351575f5ffd5b5061035a6109e9565b005b348015610367575f5ffd5b50610370610a80565b005b34801561037d575f5ffd5b5061039860048036038101906103939190612ee3565b610bb0565b005b3480156103a5575f5ffd5b506103c060048036038101906103bb9190612f21565b610d0b565b6040516103cd9190612e1c565b60405180910390f35b3480156103e1575f5ffd5b506103ea610d51565b005b3480156103f7575f5ffd5b50610400610ea1565b005b34801561040d575f5ffd5b50610416610f52565b6040516104239190612e1c565b60405180910390f35b348015610437575f5ffd5b50610452600480360381019061044d9190612fad565b610f58565b005b34801561045f575f5ffd5b50610468611165565b005b348015610475575f5ffd5b5061047e61129b565b60405161048b9190613019565b60405180910390f35b34801561049f575f5ffd5b506104a86112c2565b6040516104b59190612e1c565b60405180910390f35b3480156104c9575f5ffd5b506104d26112c8565b6040516104df9190612ded565b60405180910390f35b3480156104f3575f5ffd5b5061050e60048036038101906105099190612d0c565b611305565b60405161051b9190612d64565b60405180910390f35b34801561052f575f5ffd5b5061054a6004803603810190610545919061306d565b611322565b005b348015610557575f5ffd5b50610560611468565b60405161056d9190612e1c565b60405180910390f35b348015610581575f5ffd5b5061059c60048036038101906105979190613098565b61146e565b6040516105a99190612e1c565b60405180910390f35b3480156105bd575f5ffd5b506105c66114f0565b005b3480156105d3575f5ffd5b506105ee60048036038101906105e991906130d6565b6119d1565b005b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610631611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614610650575f5ffd5b5f82036106d2578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106909190613019565b602060405180830381865afa1580156106ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cf9190613115565b91505b7ffba2d3bdfb2d601eb66a89783a2c614856101cadce71556753c2edadd60c831c8383604051610703929190613140565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016107679291906131c2565b6020604051808303815f875af1158015610783573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a791906131fd565b905092915050565b60606040518060400160405280600d81526020017f526f737320556c62726963687400000000000000000000000000000000000000815250905090565b5f6107ff6107f8611a5d565b8484611a64565b6001905092915050565b60165481565b60135481565b61081d611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a190613272565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516108e091906132c9565b60405180910390a1565b5f6009600a6108f9919061343e565b6301406f406109089190613488565b905090565b5f610919848484611c27565b6109d684610925611a5d565b6109d1856040518060600160405280602881526020016140906028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610988611a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125ef9092919063ffffffff16565b611a64565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a29611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614610a48575f5ffd5b5f610a5230610d0b565b90505f811115610a6657610a6581612651565b5b5f4790505f811115610a7c57610a7b816128ba565b5b5050565b610a88611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c90613272565b60405180910390fd5b6009600a610b23919061343e565b6301406f40610b329190613488565b6010819055506009600a610b46919061343e565b6301406f40610b559190613488565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b8a919061343e565b6301406f40610b999190613488565b604051610ba69190612e1c565b60405180910390a1565b610bb8611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa90613513565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d59611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee1611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614610f00575f5ffd5b5f4790505f8111610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d906135a1565b60405180910390fd5b610f4f816128ba565b50565b60105481565b610f60611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490613272565b60405180910390fd5b5f8383905011611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613609565b60405180910390fd5b5f5f90505b8383905081101561115f575f73ffffffffffffffffffffffffffffffffffffffff1684848381811061106c5761106b613627565b5b90506020020160208101906110819190612f21565b73ffffffffffffffffffffffffffffffffffffffff16036110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce90613513565b60405180910390fd5b8160035f8686858181106110ee576110ed613627565b5b90506020020160208101906111039190612f21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611037565b50505050565b61116d611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f190613272565b60405180910390fd5b436016541161123e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112359061369e565b60405180910390fd5b436016819055506001601760016101000a81548160ff0219169083151502179055507f5222e705b737362f1fdaea6a49688b7adb508a9284351fdca9914de069f7080442436040516112919291906136bc565b60405180910390a1565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f524f535300000000000000000000000000000000000000000000000000000000815250905090565b5f611318611311611a5d565b8484611c27565b6001905092915050565b61132a611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90613753565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114f8611a5d565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90613272565b60405180910390fd5b43601654116115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c09061369e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506116653060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a611651919061343e565b6301406f406116609190613488565b611a64565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f39190613785565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611779573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179d9190613785565b6040518363ffffffff1660e01b81526004016117ba9291906137b0565b6020604051808303815f875af11580156117d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fa9190613785565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061188130610d0b565b5f5f61188b61129b565b426040518863ffffffff1660e01b81526004016118ad969594939291906137d7565b60606040518083038185885af11580156118c9573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118ee9190613836565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161198e929190613140565b6020604051808303815f875af11580156119aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ce91906131fd565b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a11611a5d565b73ffffffffffffffffffffffffffffffffffffffff1614611a30575f5ffd5b6009548111158015611a445750600a548111155b611a4c575f5ffd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac9906138f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790613984565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c1a9190612e1c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c90613a12565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa90613aa0565b60405180910390fd5b5f8111611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90613b2e565b60405180910390fd5b601654431015611e2a5760035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dea575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090613bbc565b60405180910390fd5b5b5f5f9050611e3661129b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ea45750611e7461129b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561233f575f600f5403611ef157611eee6064611ee0600b54600f5411611ecd57600754611ed1565b6009545b85612a9890919063ffffffff16565b612b0f90919063ffffffff16565b90505b5f600f541115611f2657611f236064611f15600e5485612a9890919063ffffffff16565b612b0f90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fcf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612022575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561211a5760105482111561206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613c24565b60405180910390fd5b6011548261207985610d0b565b6120839190613c42565b11156120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613cbf565b60405180910390fd5b61210060646120f2600b54600f54116120df576007546120e3565b6009545b85612a9890919063ffffffff16565b612b0f90919063ffffffff16565b9050600f5f81548092919061211490613cdd565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121a257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121e6576121e360646121d5600c54600f54116121c2576008546121c6565b600a545b85612a9890919063ffffffff16565b612b0f90919063ffffffff16565b90505b5f6121f030610d0b565b905060175f9054906101000a900460ff1615801561225a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156122725750601760019054906101000a900460ff165b801561227f575060125481115b801561228e5750600d54600f54115b1561233d576019544311156122a5575f6018819055505b6003601854106122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190613d6e565b60405180910390fd5b612307612302846122fd84601354612b58565b612b58565b612651565b5f4790505f81111561231d5761231c476128ba565b5b60185f81548092919061232f90613cdd565b919050555043601981905550505b505b5f81111561243e576123978160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124359190612e1c565b60405180910390a35b61248e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bcd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125316124e58284612bcd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6125d48486612bcd90919063ffffffff16565b6040516125e19190612e1c565b60405180910390a350505050565b5f838311158290612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d9190612ded565b60405180910390fd5b505f83856126449190613d8c565b9050809150509392505050565b600160175f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561268757612686613dbf565b5b6040519080825280602002602001820160405280156126b55781602001602082028036833780820191505090505b50905030815f815181106126cc576126cb613627565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612770573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127949190613785565b816001815181106127a8576127a7613627565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061280e3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a64565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612870959493929190613ea3565b5f604051808303815f87803b158015612887575f5ffd5b505af1158015612899573d5f5f3e3d5ffd5b50505050505f60175f6101000a81548160ff02191690831515021790555050565b5f60065403612952575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161290990613f28565b5f6040518083038185875af1925050503d805f8114612943576040519150601f19603f3d011682016040523d82523d5f602084013e612948565b606091505b5050905050612a95565b5f6064600654836129639190613488565b61296d9190613f69565b90505f818361297c9190613d8c565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516129c490613f28565b5f6040518083038185875af1925050503d805f81146129fe576040519150601f19603f3d011682016040523d82523d5f602084013e612a03565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612a4d90613f28565b5f6040518083038185875af1925050503d805f8114612a87576040519150601f19603f3d011682016040523d82523d5f602084013e612a8c565b606091505b50509050505050505b50565b5f5f8303612aa8575f9050612b09565b5f8284612ab59190613488565b9050828482612ac49190613f69565b14612b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afb90614009565b60405180910390fd5b809150505b92915050565b5f612b5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c16565b905092915050565b5f818311612b665782612b68565b815b905092915050565b5f5f8284612b7e9190613c42565b905083811015612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90614071565b60405180910390fd5b8091505092915050565b5f612c0e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125ef565b905092915050565b5f5f83118290612c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c539190612ded565b60405180910390fd5b505f8385612c6a9190613f69565b9050809150509392505050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ca882612c7f565b9050919050565b612cb881612c9e565b8114612cc2575f5ffd5b50565b5f81359050612cd381612caf565b92915050565b5f819050919050565b612ceb81612cd9565b8114612cf5575f5ffd5b50565b5f81359050612d0681612ce2565b92915050565b5f5f60408385031215612d2257612d21612c77565b5b5f612d2f85828601612cc5565b9250506020612d4085828601612cf8565b9150509250929050565b5f8115159050919050565b612d5e81612d4a565b82525050565b5f602082019050612d775f830184612d55565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612dbf82612d7d565b612dc98185612d87565b9350612dd9818560208601612d97565b612de281612da5565b840191505092915050565b5f6020820190508181035f830152612e058184612db5565b905092915050565b612e1681612cd9565b82525050565b5f602082019050612e2f5f830184612e0d565b92915050565b5f5f5f60608486031215612e4c57612e4b612c77565b5b5f612e5986828701612cc5565b9350506020612e6a86828701612cc5565b9250506040612e7b86828701612cf8565b9150509250925092565b5f60ff82169050919050565b612e9a81612e85565b82525050565b5f602082019050612eb35f830184612e91565b92915050565b612ec281612d4a565b8114612ecc575f5ffd5b50565b5f81359050612edd81612eb9565b92915050565b5f5f60408385031215612ef957612ef8612c77565b5b5f612f0685828601612cc5565b9250506020612f1785828601612ecf565b9150509250929050565b5f60208284031215612f3657612f35612c77565b5b5f612f4384828501612cc5565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612f6d57612f6c612f4c565b5b8235905067ffffffffffffffff811115612f8a57612f89612f50565b5b602083019150836020820283011115612fa657612fa5612f54565b5b9250929050565b5f5f5f60408486031215612fc457612fc3612c77565b5b5f84013567ffffffffffffffff811115612fe157612fe0612c7b565b5b612fed86828701612f58565b9350935050602061300086828701612ecf565b9150509250925092565b61301381612c9e565b82525050565b5f60208201905061302c5f83018461300a565b92915050565b5f61303c82612c7f565b9050919050565b61304c81613032565b8114613056575f5ffd5b50565b5f8135905061306781613043565b92915050565b5f6020828403121561308257613081612c77565b5b5f61308f84828501613059565b91505092915050565b5f5f604083850312156130ae576130ad612c77565b5b5f6130bb85828601612cc5565b92505060206130cc85828601612cc5565b9150509250929050565b5f602082840312156130eb576130ea612c77565b5b5f6130f884828501612cf8565b91505092915050565b5f8151905061310f81612ce2565b92915050565b5f6020828403121561312a57613129612c77565b5b5f61313784828501613101565b91505092915050565b5f6040820190506131535f83018561300a565b6131606020830184612e0d565b9392505050565b5f819050919050565b5f61318a61318561318084612c7f565b613167565b612c7f565b9050919050565b5f61319b82613170565b9050919050565b5f6131ac82613191565b9050919050565b6131bc816131a2565b82525050565b5f6040820190506131d55f8301856131b3565b6131e26020830184612e0d565b9392505050565b5f815190506131f781612eb9565b92915050565b5f6020828403121561321257613211612c77565b5b5f61321f848285016131e9565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61325c602083612d87565b915061326782613228565b602082019050919050565b5f6020820190508181035f83015261328981613250565b9050919050565b5f819050919050565b5f6132b36132ae6132a984613290565b613167565b612cd9565b9050919050565b6132c381613299565b82525050565b5f6020820190506132dc5f8301846132ba565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115613364578086048111156133405761333f6132e2565b5b600185161561334f5780820291505b808102905061335d8561330f565b9450613324565b94509492505050565b5f8261337c5760019050613437565b81613389575f9050613437565b816001811461339f57600281146133a9576133d8565b6001915050613437565b60ff8411156133bb576133ba6132e2565b5b8360020a9150848211156133d2576133d16132e2565b5b50613437565b5060208310610133831016604e8410600b841016171561340d5782820a905083811115613408576134076132e2565b5b613437565b61341a848484600161331b565b92509050818404811115613431576134306132e2565b5b81810290505b9392505050565b5f61344882612cd9565b915061345383612e85565b92506134807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461336d565b905092915050565b5f61349282612cd9565b915061349d83612cd9565b92508282026134ab81612cd9565b915082820484148315176134c2576134c16132e2565b5b5092915050565b7f43616e6e6f7420736574207a65726f20616464726573730000000000000000005f82015250565b5f6134fd601783612d87565b9150613508826134c9565b602082019050919050565b5f6020820190508181035f83015261352a816134f1565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f61358b602a83612d87565b915061359682613531565b604082019050919050565b5f6020820190508181035f8301526135b88161357f565b9050919050565b7f456d7074792061727261790000000000000000000000000000000000000000005f82015250565b5f6135f3600b83612d87565b91506135fe826135bf565b602082019050919050565b5f6020820190508181035f830152613620816135e7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613688601783612d87565b915061369382613654565b602082019050919050565b5f6020820190508181035f8301526136b58161367c565b9050919050565b5f6040820190506136cf5f830185612e0d565b6136dc6020830184612e0d565b9392505050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61373d602983612d87565b9150613748826136e3565b604082019050919050565b5f6020820190508181035f83015261376a81613731565b9050919050565b5f8151905061377f81612caf565b92915050565b5f6020828403121561379a57613799612c77565b5b5f6137a784828501613771565b91505092915050565b5f6040820190506137c35f83018561300a565b6137d0602083018461300a565b9392505050565b5f60c0820190506137ea5f83018961300a565b6137f76020830188612e0d565b61380460408301876132ba565b61381160608301866132ba565b61381e608083018561300a565b61382b60a0830184612e0d565b979650505050505050565b5f5f5f6060848603121561384d5761384c612c77565b5b5f61385a86828701613101565b935050602061386b86828701613101565b925050604061387c86828701613101565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138e0602483612d87565b91506138eb82613886565b604082019050919050565b5f6020820190508181035f83015261390d816138d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61396e602283612d87565b915061397982613914565b604082019050919050565b5f6020820190508181035f83015261399b81613962565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139fc602583612d87565b9150613a07826139a2565b604082019050919050565b5f6020820190508181035f830152613a29816139f0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a8a602383612d87565b9150613a9582613a30565b604082019050919050565b5f6020820190508181035f830152613ab781613a7e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b18602983612d87565b9150613b2382613abe565b604082019050919050565b5f6020820190508181035f830152613b4581613b0c565b9050919050565b7f54726164696e67206973206e6f74206f70656e2079657420616e6420796f75205f8201527f617265206e6f7420617574686f72697a65640000000000000000000000000000602082015250565b5f613ba6603283612d87565b9150613bb182613b4c565b604082019050919050565b5f6020820190508181035f830152613bd381613b9a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c0e601983612d87565b9150613c1982613bda565b602082019050919050565b5f6020820190508181035f830152613c3b81613c02565b9050919050565b5f613c4c82612cd9565b9150613c5783612cd9565b9250828201905080821115613c6f57613c6e6132e2565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613ca9601a83612d87565b9150613cb482613c75565b602082019050919050565b5f6020820190508181035f830152613cd681613c9d565b9050919050565b5f613ce782612cd9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1957613d186132e2565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d58601783612d87565b9150613d6382613d24565b602082019050919050565b5f6020820190508181035f830152613d8581613d4c565b9050919050565b5f613d9682612cd9565b9150613da183612cd9565b9250828203905081811115613db957613db86132e2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e1e81612c9e565b82525050565b5f613e2f8383613e15565b60208301905092915050565b5f602082019050919050565b5f613e5182613dec565b613e5b8185613df6565b9350613e6683613e06565b805f5b83811015613e96578151613e7d8882613e24565b9750613e8883613e3b565b925050600181019050613e69565b5085935050505092915050565b5f60a082019050613eb65f830188612e0d565b613ec360208301876132ba565b8181036040830152613ed58186613e47565b9050613ee4606083018561300a565b613ef16080830184612e0d565b9695505050505050565b5f81905092915050565b50565b5f613f135f83613efb565b9150613f1e82613f05565b5f82019050919050565b5f613f3282613f08565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f7382612cd9565b9150613f7e83612cd9565b925082613f8e57613f8d613f3c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ff3602183612d87565b9150613ffe82613f99565b604082019050919050565b5f6020820190508181035f83015261402081613fe7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61405b601b83612d87565b915061406682614027565b602082019050919050565b5f6020820190508181035f8301526140888161404f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220554ec56a0725077075b8bb5ee63e907ab82e37943dc8cfb06fc1f931d26096a164736f6c634300081c0033

Deployed Bytecode Sourcemap

3593:11305:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6154:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6987:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4905:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4757:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11282:118;;;;;;;;;;;;;:::i;:::-;;6431:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7156:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6340:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14547:348;;;;;;;;;;;;;:::i;:::-;;11116:158;;;;;;;;;;;;;:::i;:::-;;13466:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6534:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2674:148;;;;;;;;;;;;;:::i;:::-;;14273:266;;;;;;;;;;;;;:::i;:::-;;4581:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13677:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12519:263;;;;;;;;;;;;;:::i;:::-;;2460:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4638:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6245:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6661:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14044:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4697:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6836:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11871:639;;;;;;;;;;;;;:::i;:::-;;12831:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13073:385;13152:12;13201:16;;;;;;;;;;;13185:32;;:12;:10;:12::i;:::-;:32;;;13177:41;;;;;;13244:1;13234:6;:11;13231:96;;13277:12;13270:30;;;13309:4;13270:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13261:54;;13231:96;13344:33;13357:12;13370:6;13344:33;;;;;;;:::i;:::-;;;;;;;;13402:12;13395:29;;;13425:16;;;;;;;;;;;13443:6;13395:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13388:62;;13073:385;;;;:::o;6154:83::-;6191:13;6224:5;;;;;;;;;;;;;;;;;6217:12;;6154:83;:::o;6987:161::-;7062:4;7079:39;7088:12;:10;:12::i;:::-;7102:7;7111:6;7079:8;:39::i;:::-;7136:4;7129:11;;6987:161;;;;:::o;4905:42::-;;;;:::o;4757:50::-;;;;:::o;11282:118::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11354:1:::1;11340:12;:15;;;;11371:21;11390:1;11371:21;;;;;;:::i;:::-;;;;;;;;11282:118::o:0;6431:95::-;6484:7;4392:1;4446:2;:13;;;;:::i;:::-;4435:8;:24;;;;:::i;:::-;6504:14;;6431:95;:::o;7156:313::-;7254:4;7271:36;7281:6;7289:9;7300:6;7271:9;:36::i;:::-;7318:121;7327:6;7335:12;:10;:12::i;:::-;7349:89;7387:6;7349:89;;;;;;;;;;;;;;;;;:11;:19;7361:6;7349:19;;;;;;;;;;;;;;;:33;7369:12;:10;:12::i;:::-;7349:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7318:8;:121::i;:::-;7457:4;7450:11;;7156:313;;;;;:::o;6340:83::-;6381:5;4392:1;6399:16;;6340:83;:::o;14547:348::-;14615:16;;;;;;;;;;;14599:32;;:12;:10;:12::i;:::-;:32;;;14591:41;;;;;;14645:20;14668:24;14686:4;14668:9;:24::i;:::-;14645:47;;14721:1;14706:12;:16;14703:75;;;14736:30;14753:12;14736:16;:30::i;:::-;14703:75;14790:18;14811:21;14790:42;;14857:1;14846:10;:12;14843:45;;;14861:24;14874:10;14861:12;:24::i;:::-;14843:45;14580:315;;14547:348::o;11116:158::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4392:1:::1;4446:2;:13;;;;:::i;:::-;4435:8;:24;;;;:::i;:::-;11168:12;:21;;;;4392:1;4446:2;:13;;;;:::i;:::-;4435:8;:24;;;;:::i;:::-;11200:14;:23;;;;11239:27;4392:1;4446:2;:13;;;;:::i;:::-;4435:8;:24;;;;:::i;:::-;11239:27;;;;;;:::i;:::-;;;;;;;;11116:158::o:0;13466:204::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13583:1:::1;13564:21;;:7;:21;;::::0;13556:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13654:8;13624:18;:27;13643:7;13624:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13466:204:::0;;:::o;6534:119::-;6600:7;6627:9;:18;6637:7;6627:18;;;;;;;;;;;;;;;;6620:25;;6534:119;;;:::o;2674:148::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2781:1:::1;2744:40;;2765:6;;;;;;;;;;;2744:40;;;;;;;;;;;;2812:1;2795:6;;:19;;;;;;;;;;;;;;;;;;2674:148::o:0;14273:266::-;14345:16;;;;;;;;;;;14329:32;;:12;:10;:12::i;:::-;:32;;;14321:41;;;;;;14375:18;14395:21;14375:41;;14448:1;14435:10;:14;14427:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14507:24;14520:10;14507:12;:24::i;:::-;14310:229;14273:266::o;4581:50::-;;;;:::o;13677:359::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13810:1:::1;13792:8;;:15;;:19;13784:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13843:9;13855:1;13843:13;;13838:191;13862:8;;:15;;13858:1;:19;13838:191;;;13930:1;13907:25;;:8;;13916:1;13907:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:25;;::::0;13899:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14009:8;13975:18;:31;13994:8;;14003:1;13994:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13975:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13879:3;;;;;;;13838:191;;;;13677:359:::0;;;:::o;12519:263::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12603:12:::1;12584:16;;:31;12576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12673:12;12654:16;:31;;;;12710:4;12696:11;;:18;;;;;;;;;;;;;;;;;;12730:44;12744:15;12761:12;12730:44;;;;;;;:::i;:::-;;;;;;;;12519:263::o:0;2460:79::-;2498:7;2525:6;;;;;;;;;;;2518:13;;2460:79;:::o;4638:52::-;;;;:::o;6245:87::-;6284:13;6317:7;;;;;;;;;;;;;;;;;6310:14;;6245:87;:::o;6661:167::-;6739:4;6756:42;6766:12;:10;:12::i;:::-;6780:9;6791:6;6756:9;:42::i;:::-;6816:4;6809:11;;6661:167;;;;:::o;14044:221::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14167:1:::1;14143:26;;:12;:26;;::::0;14135:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14245:12;14226:16;;:31;;;;;;;;;;;;;;;;;;14044:221:::0;:::o;4697:53::-;;;;:::o;6836:143::-;6917:7;6944:11;:18;6956:5;6944:18;;;;;;;;;;;;;;;:27;6963:7;6944:27;;;;;;;;;;;;;;;;6937:34;;6836:143;;;;:::o;11871:639::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11954:12:::1;11935:16;;:31;11927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12042:42;12005:15;;:80;;;;;;;;;;;;;;;;;;12096:58;12113:4;12128:15;;;;;;;;;;;4392:1;4446:2;:13;;;;:::i;:::-;4435:8;:24;;;;:::i;:::-;12096:8;:58::i;:::-;12199:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12181:55;;;12245:4;12252:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12181:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12165:13;;:110;;;;;;;;;;;;;;;;;;12286:15;;;;;;;;;;;:31;;;12325:21;12356:4;12363:24;12381:4;12363:9;:24::i;:::-;12389:1;12392;12395:7;:5;:7::i;:::-;12404:15;12286:134;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12438:13;;;;;;;;;;;12431:29;;;12469:15;;;;;;;;;;;12487:14;12431:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11871:639::o:0;12831:234::-;12908:16;;;;;;;;;;;12892:32;;:12;:10;:12::i;:::-;:32;;;12884:41;;;;;;12953:12;;12942:7;:23;;:51;;;;;12980:13;;12969:7;:24;;12942:51;12934:60;;;;;;13019:7;13005:12;:21;;;;13050:7;13035:13;:22;;;;12831:234;:::o;215:98::-;268:7;295:10;288:17;;215:98;:::o;7477:335::-;7587:1;7570:19;;:5;:19;;;7562:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7668:1;7649:21;;:7;:21;;;7641:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7750:6;7720:11;:18;7732:5;7720:18;;;;;;;;;;;;;;;:27;7739:7;7720:27;;;;;;;;;;;;;;;:36;;;;7788:7;7772:32;;7781:5;7772:32;;;7797:6;7772:32;;;;;;:::i;:::-;;;;;;;;7477:335;;;:::o;7820:2685::-;7924:1;7908:18;;:4;:18;;;7900:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8001:1;7987:16;;:2;:16;;;7979:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8071:1;8062:6;:10;8054:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8148:16;;8133:12;:31;8129:226;;;8207:18;:24;8226:4;8207:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8235:18;:22;8254:2;8235:22;;;;;;;;;;;;;;;;;;;;;;;;;8207:50;8181:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;8129:226;8365:17;8385:1;8365:21;;8411:7;:5;:7::i;:::-;8403:15;;:4;:15;;;;:32;;;;;8428:7;:5;:7::i;:::-;8422:13;;:2;:13;;;;8403:32;8399:1741;;;8484:1;8471:9;;:14;8468:147;;8517:82;8595:3;8517:73;8541:15;;8529:9;;:27;8528:61;;8575:14;;8528:61;;;8560:12;;8528:61;8517:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8505:94;;8468:147;8646:1;8634:9;;:13;8631:96;;;8678:33;8707:3;8678:24;8689:12;;8678:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8667:44;;8631:96;8755:13;;;;;;;;;;;8747:21;;:4;:21;;;:55;;;;;8786:15;;;;;;;;;;;8772:30;;:2;:30;;;;8747:55;:83;;;;;8808:18;:22;8827:2;8808:22;;;;;;;;;;;;;;;;;;;;;;;;;8806:24;8747:83;8743:426;;;8870:12;;8860:6;:22;;8852:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8965:14;;8955:6;8939:13;8949:2;8939:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8931:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9041:82;9119:3;9041:73;9065:15;;9053:9;;:27;9052:61;;9099:14;;9052:61;;;9084:12;;9052:61;9041:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9029:94;;9142:9;;:11;;;;;;;;;:::i;:::-;;;;;;8743:426;9195:13;;;;;;;;;;;9189:19;;:2;:19;;;:44;;;;;9228:4;9212:21;;:4;:21;;;;9189:44;9185:182;;;9266:85;9347:3;9266:76;9290:16;;9278:9;;:28;9277:64;;9326:15;;9277:64;;;9310:13;;9277:64;9266:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9254:97;;9185:182;9383:28;9414:24;9432:4;9414:9;:24::i;:::-;9383:55;;9458:6;;;;;;;;;;;9457:7;:30;;;;;9474:13;;;;;;;;;;;9468:19;;:2;:19;;;9457:30;:45;;;;;9491:11;;;;;;;;;;;9457:45;:89;;;;;9529:17;;9506:20;:40;9457:89;:123;;;;;9562:18;;9550:9;;:30;9457:123;9453:676;;;9618:13;;9605:12;:26;9601:88;;;9668:1;9656:9;:13;;;;9601:88;9727:1;9715:9;;:13;9707:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9777:67;9794:49;9798:6;9805:37;9809:20;9830:11;;9805:3;:37::i;:::-;9794:3;:49::i;:::-;9777:16;:67::i;:::-;9863:26;9892:21;9863:50;;9955:1;9936:18;:20;9932:104;;;9981:35;9994:21;9981:12;:35::i;:::-;9932:104;10056:9;;:11;;;;;;;;;:::i;:::-;;;;;;10101:12;10086:13;:27;;;;9582:547;9453:676;8437:1703;8399:1741;10167:1;10155:9;:13;10152:166;;;10209:39;10238:9;10209;:24;10227:4;10209:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10182:9;:24;10200:4;10182:24;;;;;;;;;;;;;;;:66;;;;10289:4;10266:40;;10275:4;10266:40;;;10296:9;10266:40;;;;;;:::i;:::-;;;;;;;;10152:166;10347:27;10367:6;10347:9;:15;10357:4;10347:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10330:9;:15;10340:4;10330:15;;;;;;;;;;;;;;;:44;;;;10400:40;10418:21;10429:9;10418:6;:10;;:21;;;;:::i;:::-;10400:9;:13;10410:2;10400:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10385:9;:13;10395:2;10385:13;;;;;;;;;;;;;;;:55;;;;10471:2;10456:41;;10465:4;10456:41;;;10475:21;10486:9;10475:6;:10;;:21;;;;:::i;:::-;10456:41;;;;;;:::i;:::-;;;;;;;;7889:2616;7820:2685;;;:::o;1352:190::-;1438:7;1471:1;1466;:6;;1474:12;1458:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1498:9;1514:1;1510;:5;;;;:::i;:::-;1498:17;;1533:1;1526:8;;;1352:190;;;;;:::o;10625:483::-;5370:4;5361:6;;:13;;;;;;;;;;;;;;;;;;10703:21:::1;10741:1;10727:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10703:40;;10772:4;10754;10759:1;10754:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10798:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10788:4;10793:1;10788:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10831:62;10848:4;10863:15;;;;;;;;;;;10881:11;10831:8;:62::i;:::-;10904:15;;;;;;;;;;;:66;;;10985:11;11011:1;11027:4;11054;11074:15;10904:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10692:416;5406:5:::0;5397:6;;:14;;;;;;;;;;;;;;;;;;10625:483;:::o;11405:458::-;11478:1;11463:11;;:16;11459:400;;11494:12;11511:16;;;;;;;;;;;:21;;11540:6;11511:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11493:58;;;11481:92;11459:400;;;11591:17;11634:3;11620:11;;11611:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;11591:46;;11643:23;11678:9;11669:6;:18;;;;:::i;:::-;11643:44;;11694:15;11714:10;;;;;;;;;;;:15;;11737:9;11714:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11693:58;;;11774:12;11791:16;;;;;;;;;;;:21;;11820:15;11791:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11773:67;;;11579:280;;;;11459:400;11405:458;:::o;1550:246::-;1608:7;1637:1;1632;:6;1628:47;;1662:1;1655:8;;;;1628:47;1685:9;1701:1;1697;:5;;;;:::i;:::-;1685:17;;1730:1;1725;1721;:5;;;;:::i;:::-;:10;1713:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1787:1;1780:8;;;1550:246;;;;;:::o;1804:132::-;1862:7;1889:39;1893:1;1896;1889:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1882:46;;1804:132;;;;:::o;10515:102::-;10572:7;10599:1;10597;:3;10596:13;;10608:1;10596:13;;;10604:1;10596:13;10589:20;;10515:102;;;;:::o;1021:179::-;1079:7;1099:9;1115:1;1111;:5;;;;:::i;:::-;1099:17;;1140:1;1135;:6;;1127:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1191:1;1184:8;;;1021:179;;;;:::o;1208:136::-;1266:7;1293:43;1297:1;1300;1293:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1286:50;;1208:136;;;;:::o;1944:189::-;2030:7;2062:1;2058;:5;2065:12;2050:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2089:9;2105:1;2101;:5;;;;:::i;:::-;2089:17;;2124:1;2117:8;;;1944:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:90::-;1711:7;1754:5;1747:13;1740:21;1729:32;;1677:90;;;:::o;1773:109::-;1854:21;1869:5;1854:21;:::i;:::-;1849:3;1842:34;1773:109;;:::o;1888:210::-;1975:4;2013:2;2002:9;1998:18;1990:26;;2026:65;2088:1;2077:9;2073:17;2064:6;2026:65;:::i;:::-;1888:210;;;;:::o;2104:99::-;2156:6;2190:5;2184:12;2174:22;;2104:99;;;:::o;2209:169::-;2293:11;2327:6;2322:3;2315:19;2367:4;2362:3;2358:14;2343:29;;2209:169;;;;:::o;2384:139::-;2473:6;2468:3;2463;2457:23;2514:1;2505:6;2500:3;2496:16;2489:27;2384:139;;;:::o;2529:102::-;2570:6;2621:2;2617:7;2612:2;2605:5;2601:14;2597:28;2587:38;;2529:102;;;:::o;2637:377::-;2725:3;2753:39;2786:5;2753:39;:::i;:::-;2808:71;2872:6;2867:3;2808:71;:::i;:::-;2801:78;;2888:65;2946:6;2941:3;2934:4;2927:5;2923:16;2888:65;:::i;:::-;2978:29;3000:6;2978:29;:::i;:::-;2973:3;2969:39;2962:46;;2729:285;2637:377;;;;:::o;3020:313::-;3133:4;3171:2;3160:9;3156:18;3148:26;;3220:9;3214:4;3210:20;3206:1;3195:9;3191:17;3184:47;3248:78;3321:4;3312:6;3248:78;:::i;:::-;3240:86;;3020:313;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:116::-;4816:21;4831:5;4816:21;:::i;:::-;4809:5;4806:32;4796:60;;4852:1;4849;4842:12;4796:60;4746:116;:::o;4868:133::-;4911:5;4949:6;4936:20;4927:29;;4965:30;4989:5;4965:30;:::i;:::-;4868:133;;;;:::o;5007:468::-;5072:6;5080;5129:2;5117:9;5108:7;5104:23;5100:32;5097:119;;;5135:79;;:::i;:::-;5097:119;5255:1;5280:53;5325:7;5316:6;5305:9;5301:22;5280:53;:::i;:::-;5270:63;;5226:117;5382:2;5408:50;5450:7;5441:6;5430:9;5426:22;5408:50;:::i;:::-;5398:60;;5353:115;5007:468;;;;;:::o;5481:329::-;5540:6;5589:2;5577:9;5568:7;5564:23;5560:32;5557:119;;;5595:79;;:::i;:::-;5557:119;5715:1;5740:53;5785:7;5776:6;5765:9;5761:22;5740:53;:::i;:::-;5730:63;;5686:117;5481:329;;;;:::o;5816:117::-;5925:1;5922;5915:12;5939:117;6048:1;6045;6038:12;6062:117;6171:1;6168;6161:12;6202:568;6275:8;6285:6;6335:3;6328:4;6320:6;6316:17;6312:27;6302:122;;6343:79;;:::i;:::-;6302:122;6456:6;6443:20;6433:30;;6486:18;6478:6;6475:30;6472:117;;;6508:79;;:::i;:::-;6472:117;6622:4;6614:6;6610:17;6598:29;;6676:3;6668:4;6660:6;6656:17;6646:8;6642:32;6639:41;6636:128;;;6683:79;;:::i;:::-;6636:128;6202:568;;;;;:::o;6776:698::-;6868:6;6876;6884;6933:2;6921:9;6912:7;6908:23;6904:32;6901:119;;;6939:79;;:::i;:::-;6901:119;7087:1;7076:9;7072:17;7059:31;7117:18;7109:6;7106:30;7103:117;;;7139:79;;:::i;:::-;7103:117;7252:80;7324:7;7315:6;7304:9;7300:22;7252:80;:::i;:::-;7234:98;;;;7030:312;7381:2;7407:50;7449:7;7440:6;7429:9;7425:22;7407:50;:::i;:::-;7397:60;;7352:115;6776:698;;;;;:::o;7480:118::-;7567:24;7585:5;7567:24;:::i;:::-;7562:3;7555:37;7480:118;;:::o;7604:222::-;7697:4;7735:2;7724:9;7720:18;7712:26;;7748:71;7816:1;7805:9;7801:17;7792:6;7748:71;:::i;:::-;7604:222;;;;:::o;7832:104::-;7877:7;7906:24;7924:5;7906:24;:::i;:::-;7895:35;;7832:104;;;:::o;7942:138::-;8023:32;8049:5;8023:32;:::i;:::-;8016:5;8013:43;8003:71;;8070:1;8067;8060:12;8003:71;7942:138;:::o;8086:155::-;8140:5;8178:6;8165:20;8156:29;;8194:41;8229:5;8194:41;:::i;:::-;8086:155;;;;:::o;8247:345::-;8314:6;8363:2;8351:9;8342:7;8338:23;8334:32;8331:119;;;8369:79;;:::i;:::-;8331:119;8489:1;8514:61;8567:7;8558:6;8547:9;8543:22;8514:61;:::i;:::-;8504:71;;8460:125;8247:345;;;;:::o;8598:474::-;8666:6;8674;8723:2;8711:9;8702:7;8698:23;8694:32;8691:119;;;8729:79;;:::i;:::-;8691:119;8849:1;8874:53;8919:7;8910:6;8899:9;8895:22;8874:53;:::i;:::-;8864:63;;8820:117;8976:2;9002:53;9047:7;9038:6;9027:9;9023:22;9002:53;:::i;:::-;8992:63;;8947:118;8598:474;;;;;:::o;9078:329::-;9137:6;9186:2;9174:9;9165:7;9161:23;9157:32;9154:119;;;9192:79;;:::i;:::-;9154:119;9312:1;9337:53;9382:7;9373:6;9362:9;9358:22;9337:53;:::i;:::-;9327:63;;9283:117;9078:329;;;;:::o;9413:143::-;9470:5;9501:6;9495:13;9486:22;;9517:33;9544:5;9517:33;:::i;:::-;9413:143;;;;:::o;9562:351::-;9632:6;9681:2;9669:9;9660:7;9656:23;9652:32;9649:119;;;9687:79;;:::i;:::-;9649:119;9807:1;9832:64;9888:7;9879:6;9868:9;9864:22;9832:64;:::i;:::-;9822:74;;9778:128;9562:351;;;;:::o;9919:332::-;10040:4;10078:2;10067:9;10063:18;10055:26;;10091:71;10159:1;10148:9;10144:17;10135:6;10091:71;:::i;:::-;10172:72;10240:2;10229:9;10225:18;10216:6;10172:72;:::i;:::-;9919:332;;;;;:::o;10257:60::-;10285:3;10306:5;10299:12;;10257:60;;;:::o;10323:142::-;10373:9;10406:53;10424:34;10433:24;10451:5;10433:24;:::i;:::-;10424:34;:::i;:::-;10406:53;:::i;:::-;10393:66;;10323:142;;;:::o;10471:126::-;10521:9;10554:37;10585:5;10554:37;:::i;:::-;10541:50;;10471:126;;;:::o;10603:134::-;10661:9;10694:37;10725:5;10694:37;:::i;:::-;10681:50;;10603:134;;;:::o;10743:147::-;10838:45;10877:5;10838:45;:::i;:::-;10833:3;10826:58;10743:147;;:::o;10896:348::-;11025:4;11063:2;11052:9;11048:18;11040:26;;11076:79;11152:1;11141:9;11137:17;11128:6;11076:79;:::i;:::-;11165:72;11233:2;11222:9;11218:18;11209:6;11165:72;:::i;:::-;10896:348;;;;;:::o;11250:137::-;11304:5;11335:6;11329:13;11320:22;;11351:30;11375:5;11351:30;:::i;:::-;11250:137;;;;:::o;11393:345::-;11460:6;11509:2;11497:9;11488:7;11484:23;11480:32;11477:119;;;11515:79;;:::i;:::-;11477:119;11635:1;11660:61;11713:7;11704:6;11693:9;11689:22;11660:61;:::i;:::-;11650:71;;11606:125;11393:345;;;;:::o;11744:182::-;11884:34;11880:1;11872:6;11868:14;11861:58;11744:182;:::o;11932:366::-;12074:3;12095:67;12159:2;12154:3;12095:67;:::i;:::-;12088:74;;12171:93;12260:3;12171:93;:::i;:::-;12289:2;12284:3;12280:12;12273:19;;11932:366;;;:::o;12304:419::-;12470:4;12508:2;12497:9;12493:18;12485:26;;12557:9;12551:4;12547:20;12543:1;12532:9;12528:17;12521:47;12585:131;12711:4;12585:131;:::i;:::-;12577:139;;12304:419;;;:::o;12729:85::-;12774:7;12803:5;12792:16;;12729:85;;;:::o;12820:158::-;12878:9;12911:61;12929:42;12938:32;12964:5;12938:32;:::i;:::-;12929:42;:::i;:::-;12911:61;:::i;:::-;12898:74;;12820:158;;;:::o;12984:147::-;13079:45;13118:5;13079:45;:::i;:::-;13074:3;13067:58;12984:147;;:::o;13137:238::-;13238:4;13276:2;13265:9;13261:18;13253:26;;13289:79;13365:1;13354:9;13350:17;13341:6;13289:79;:::i;:::-;13137:238;;;;:::o;13381:180::-;13429:77;13426:1;13419:88;13526:4;13523:1;13516:15;13550:4;13547:1;13540:15;13567:102;13609:8;13656:5;13653:1;13649:13;13628:34;;13567:102;;;:::o;13675:848::-;13736:5;13743:4;13767:6;13758:15;;13791:5;13782:14;;13805:712;13826:1;13816:8;13813:15;13805:712;;;13921:4;13916:3;13912:14;13906:4;13903:24;13900:50;;;13930:18;;:::i;:::-;13900:50;13980:1;13970:8;13966:16;13963:451;;;14395:4;14388:5;14384:16;14375:25;;13963:451;14445:4;14439;14435:15;14427:23;;14475:32;14498:8;14475:32;:::i;:::-;14463:44;;13805:712;;;13675:848;;;;;;;:::o;14529:1073::-;14583:5;14774:8;14764:40;;14795:1;14786:10;;14797:5;;14764:40;14823:4;14813:36;;14840:1;14831:10;;14842:5;;14813:36;14909:4;14957:1;14952:27;;;;14993:1;14988:191;;;;14902:277;;14952:27;14970:1;14961:10;;14972:5;;;14988:191;15033:3;15023:8;15020:17;15017:43;;;15040:18;;:::i;:::-;15017:43;15089:8;15086:1;15082:16;15073:25;;15124:3;15117:5;15114:14;15111:40;;;15131:18;;:::i;:::-;15111:40;15164:5;;;14902:277;;15288:2;15278:8;15275:16;15269:3;15263:4;15260:13;15256:36;15238:2;15228:8;15225:16;15220:2;15214:4;15211:12;15207:35;15191:111;15188:246;;;15344:8;15338:4;15334:19;15325:28;;15379:3;15372:5;15369:14;15366:40;;;15386:18;;:::i;:::-;15366:40;15419:5;;15188:246;15459:42;15497:3;15487:8;15481:4;15478:1;15459:42;:::i;:::-;15444:57;;;;15533:4;15528:3;15524:14;15517:5;15514:25;15511:51;;;15542:18;;:::i;:::-;15511:51;15591:4;15584:5;15580:16;15571:25;;14529:1073;;;;;;:::o;15608:281::-;15666:5;15690:23;15708:4;15690:23;:::i;:::-;15682:31;;15734:25;15750:8;15734:25;:::i;:::-;15722:37;;15778:104;15815:66;15805:8;15799:4;15778:104;:::i;:::-;15769:113;;15608:281;;;;:::o;15895:410::-;15935:7;15958:20;15976:1;15958:20;:::i;:::-;15953:25;;15992:20;16010:1;15992:20;:::i;:::-;15987:25;;16047:1;16044;16040:9;16069:30;16087:11;16069:30;:::i;:::-;16058:41;;16248:1;16239:7;16235:15;16232:1;16229:22;16209:1;16202:9;16182:83;16159:139;;16278:18;;:::i;:::-;16159:139;15943:362;15895:410;;;;:::o;16311:173::-;16451:25;16447:1;16439:6;16435:14;16428:49;16311:173;:::o;16490:366::-;16632:3;16653:67;16717:2;16712:3;16653:67;:::i;:::-;16646:74;;16729:93;16818:3;16729:93;:::i;:::-;16847:2;16842:3;16838:12;16831:19;;16490:366;;;:::o;16862:419::-;17028:4;17066:2;17055:9;17051:18;17043:26;;17115:9;17109:4;17105:20;17101:1;17090:9;17086:17;17079:47;17143:131;17269:4;17143:131;:::i;:::-;17135:139;;16862:419;;;:::o;17287:229::-;17427:34;17423:1;17415:6;17411:14;17404:58;17496:12;17491:2;17483:6;17479:15;17472:37;17287:229;:::o;17522:366::-;17664:3;17685:67;17749:2;17744:3;17685:67;:::i;:::-;17678:74;;17761:93;17850:3;17761:93;:::i;:::-;17879:2;17874:3;17870:12;17863:19;;17522:366;;;:::o;17894:419::-;18060:4;18098:2;18087:9;18083:18;18075:26;;18147:9;18141:4;18137:20;18133:1;18122:9;18118:17;18111:47;18175:131;18301:4;18175:131;:::i;:::-;18167:139;;17894:419;;;:::o;18319:161::-;18459:13;18455:1;18447:6;18443:14;18436:37;18319:161;:::o;18486:366::-;18628:3;18649:67;18713:2;18708:3;18649:67;:::i;:::-;18642:74;;18725:93;18814:3;18725:93;:::i;:::-;18843:2;18838:3;18834:12;18827:19;;18486:366;;;:::o;18858:419::-;19024:4;19062:2;19051:9;19047:18;19039:26;;19111:9;19105:4;19101:20;19097:1;19086:9;19082:17;19075:47;19139:131;19265:4;19139:131;:::i;:::-;19131:139;;18858:419;;;:::o;19283:180::-;19331:77;19328:1;19321:88;19428:4;19425:1;19418:15;19452:4;19449:1;19442:15;19469:173;19609:25;19605:1;19597:6;19593:14;19586:49;19469:173;:::o;19648:366::-;19790:3;19811:67;19875:2;19870:3;19811:67;:::i;:::-;19804:74;;19887:93;19976:3;19887:93;:::i;:::-;20005:2;20000:3;19996:12;19989:19;;19648:366;;;:::o;20020:419::-;20186:4;20224:2;20213:9;20209:18;20201:26;;20273:9;20267:4;20263:20;20259:1;20248:9;20244:17;20237:47;20301:131;20427:4;20301:131;:::i;:::-;20293:139;;20020:419;;;:::o;20445:332::-;20566:4;20604:2;20593:9;20589:18;20581:26;;20617:71;20685:1;20674:9;20670:17;20661:6;20617:71;:::i;:::-;20698:72;20766:2;20755:9;20751:18;20742:6;20698:72;:::i;:::-;20445:332;;;;;:::o;20783:228::-;20923:34;20919:1;20911:6;20907:14;20900:58;20992:11;20987:2;20979:6;20975:15;20968:36;20783:228;:::o;21017:366::-;21159:3;21180:67;21244:2;21239:3;21180:67;:::i;:::-;21173:74;;21256:93;21345:3;21256:93;:::i;:::-;21374:2;21369:3;21365:12;21358:19;;21017:366;;;:::o;21389:419::-;21555:4;21593:2;21582:9;21578:18;21570:26;;21642:9;21636:4;21632:20;21628:1;21617:9;21613:17;21606:47;21670:131;21796:4;21670:131;:::i;:::-;21662:139;;21389:419;;;:::o;21814:143::-;21871:5;21902:6;21896:13;21887:22;;21918:33;21945:5;21918:33;:::i;:::-;21814:143;;;;:::o;21963:351::-;22033:6;22082:2;22070:9;22061:7;22057:23;22053:32;22050:119;;;22088:79;;:::i;:::-;22050:119;22208:1;22233:64;22289:7;22280:6;22269:9;22265:22;22233:64;:::i;:::-;22223:74;;22179:128;21963:351;;;;:::o;22320:332::-;22441:4;22479:2;22468:9;22464:18;22456:26;;22492:71;22560:1;22549:9;22545:17;22536:6;22492:71;:::i;:::-;22573:72;22641:2;22630:9;22626:18;22617:6;22573:72;:::i;:::-;22320:332;;;;;:::o;22658:807::-;22907:4;22945:3;22934:9;22930:19;22922:27;;22959:71;23027:1;23016:9;23012:17;23003:6;22959:71;:::i;:::-;23040:72;23108:2;23097:9;23093:18;23084:6;23040:72;:::i;:::-;23122:80;23198:2;23187:9;23183:18;23174:6;23122:80;:::i;:::-;23212;23288:2;23277:9;23273:18;23264:6;23212:80;:::i;:::-;23302:73;23370:3;23359:9;23355:19;23346:6;23302:73;:::i;:::-;23385;23453:3;23442:9;23438:19;23429:6;23385:73;:::i;:::-;22658:807;;;;;;;;;:::o;23471:663::-;23559:6;23567;23575;23624:2;23612:9;23603:7;23599:23;23595:32;23592:119;;;23630:79;;:::i;:::-;23592:119;23750:1;23775:64;23831:7;23822:6;23811:9;23807:22;23775:64;:::i;:::-;23765:74;;23721:128;23888:2;23914:64;23970:7;23961:6;23950:9;23946:22;23914:64;:::i;:::-;23904:74;;23859:129;24027:2;24053:64;24109:7;24100:6;24089:9;24085:22;24053:64;:::i;:::-;24043:74;;23998:129;23471:663;;;;;:::o;24140:223::-;24280:34;24276:1;24268:6;24264:14;24257:58;24349:6;24344:2;24336:6;24332:15;24325:31;24140:223;:::o;24369:366::-;24511:3;24532:67;24596:2;24591:3;24532:67;:::i;:::-;24525:74;;24608:93;24697:3;24608:93;:::i;:::-;24726:2;24721:3;24717:12;24710:19;;24369:366;;;:::o;24741:419::-;24907:4;24945:2;24934:9;24930:18;24922:26;;24994:9;24988:4;24984:20;24980:1;24969:9;24965:17;24958:47;25022:131;25148:4;25022:131;:::i;:::-;25014:139;;24741:419;;;:::o;25166:221::-;25306:34;25302:1;25294:6;25290:14;25283:58;25375:4;25370:2;25362:6;25358:15;25351:29;25166:221;:::o;25393:366::-;25535:3;25556:67;25620:2;25615:3;25556:67;:::i;:::-;25549:74;;25632:93;25721:3;25632:93;:::i;:::-;25750:2;25745:3;25741:12;25734:19;;25393:366;;;:::o;25765:419::-;25931:4;25969:2;25958:9;25954:18;25946:26;;26018:9;26012:4;26008:20;26004:1;25993:9;25989:17;25982:47;26046:131;26172:4;26046:131;:::i;:::-;26038:139;;25765:419;;;:::o;26190:224::-;26330:34;26326:1;26318:6;26314:14;26307:58;26399:7;26394:2;26386:6;26382:15;26375:32;26190:224;:::o;26420:366::-;26562:3;26583:67;26647:2;26642:3;26583:67;:::i;:::-;26576:74;;26659:93;26748:3;26659:93;:::i;:::-;26777:2;26772:3;26768:12;26761:19;;26420:366;;;:::o;26792:419::-;26958:4;26996:2;26985:9;26981:18;26973:26;;27045:9;27039:4;27035:20;27031:1;27020:9;27016:17;27009:47;27073:131;27199:4;27073:131;:::i;:::-;27065:139;;26792:419;;;:::o;27217:222::-;27357:34;27353:1;27345:6;27341:14;27334:58;27426:5;27421:2;27413:6;27409:15;27402:30;27217:222;:::o;27445:366::-;27587:3;27608:67;27672:2;27667:3;27608:67;:::i;:::-;27601:74;;27684:93;27773:3;27684:93;:::i;:::-;27802:2;27797:3;27793:12;27786:19;;27445:366;;;:::o;27817:419::-;27983:4;28021:2;28010:9;28006:18;27998:26;;28070:9;28064:4;28060:20;28056:1;28045:9;28041:17;28034:47;28098:131;28224:4;28098:131;:::i;:::-;28090:139;;27817:419;;;:::o;28242:228::-;28382:34;28378:1;28370:6;28366:14;28359:58;28451:11;28446:2;28438:6;28434:15;28427:36;28242:228;:::o;28476:366::-;28618:3;28639:67;28703:2;28698:3;28639:67;:::i;:::-;28632:74;;28715:93;28804:3;28715:93;:::i;:::-;28833:2;28828:3;28824:12;28817:19;;28476:366;;;:::o;28848:419::-;29014:4;29052:2;29041:9;29037:18;29029:26;;29101:9;29095:4;29091:20;29087:1;29076:9;29072:17;29065:47;29129:131;29255:4;29129:131;:::i;:::-;29121:139;;28848:419;;;:::o;29273:237::-;29413:34;29409:1;29401:6;29397:14;29390:58;29482:20;29477:2;29469:6;29465:15;29458:45;29273:237;:::o;29516:366::-;29658:3;29679:67;29743:2;29738:3;29679:67;:::i;:::-;29672:74;;29755:93;29844:3;29755:93;:::i;:::-;29873:2;29868:3;29864:12;29857:19;;29516:366;;;:::o;29888:419::-;30054:4;30092:2;30081:9;30077:18;30069:26;;30141:9;30135:4;30131:20;30127:1;30116:9;30112:17;30105:47;30169:131;30295:4;30169:131;:::i;:::-;30161:139;;29888:419;;;:::o;30313:175::-;30453:27;30449:1;30441:6;30437:14;30430:51;30313:175;:::o;30494:366::-;30636:3;30657:67;30721:2;30716:3;30657:67;:::i;:::-;30650:74;;30733:93;30822:3;30733:93;:::i;:::-;30851:2;30846:3;30842:12;30835:19;;30494:366;;;:::o;30866:419::-;31032:4;31070:2;31059:9;31055:18;31047:26;;31119:9;31113:4;31109:20;31105:1;31094:9;31090:17;31083:47;31147:131;31273:4;31147:131;:::i;:::-;31139:139;;30866:419;;;:::o;31291:191::-;31331:3;31350:20;31368:1;31350:20;:::i;:::-;31345:25;;31384:20;31402:1;31384:20;:::i;:::-;31379:25;;31427:1;31424;31420:9;31413:16;;31448:3;31445:1;31442:10;31439:36;;;31455:18;;:::i;:::-;31439:36;31291:191;;;;:::o;31488:176::-;31628:28;31624:1;31616:6;31612:14;31605:52;31488:176;:::o;31670:366::-;31812:3;31833:67;31897:2;31892:3;31833:67;:::i;:::-;31826:74;;31909:93;31998:3;31909:93;:::i;:::-;32027:2;32022:3;32018:12;32011:19;;31670:366;;;:::o;32042:419::-;32208:4;32246:2;32235:9;32231:18;32223:26;;32295:9;32289:4;32285:20;32281:1;32270:9;32266:17;32259:47;32323:131;32449:4;32323:131;:::i;:::-;32315:139;;32042:419;;;:::o;32467:233::-;32506:3;32529:24;32547:5;32529:24;:::i;:::-;32520:33;;32575:66;32568:5;32565:77;32562:103;;32645:18;;:::i;:::-;32562:103;32692:1;32685:5;32681:13;32674:20;;32467:233;;;:::o;32706:173::-;32846:25;32842:1;32834:6;32830:14;32823:49;32706:173;:::o;32885:366::-;33027:3;33048:67;33112:2;33107:3;33048:67;:::i;:::-;33041:74;;33124:93;33213:3;33124:93;:::i;:::-;33242:2;33237:3;33233:12;33226:19;;32885:366;;;:::o;33257:419::-;33423:4;33461:2;33450:9;33446:18;33438:26;;33510:9;33504:4;33500:20;33496:1;33485:9;33481:17;33474:47;33538:131;33664:4;33538:131;:::i;:::-;33530:139;;33257:419;;;:::o;33682:194::-;33722:4;33742:20;33760:1;33742:20;:::i;:::-;33737:25;;33776:20;33794:1;33776:20;:::i;:::-;33771:25;;33820:1;33817;33813:9;33805:17;;33844:1;33838:4;33835:11;33832:37;;;33849:18;;:::i;:::-;33832:37;33682:194;;;;:::o;33882:180::-;33930:77;33927:1;33920:88;34027:4;34024:1;34017:15;34051:4;34048:1;34041:15;34068:114;34135:6;34169:5;34163:12;34153:22;;34068:114;;;:::o;34188:184::-;34287:11;34321:6;34316:3;34309:19;34361:4;34356:3;34352:14;34337:29;;34188:184;;;;:::o;34378:132::-;34445:4;34468:3;34460:11;;34498:4;34493:3;34489:14;34481:22;;34378:132;;;:::o;34516:108::-;34593:24;34611:5;34593:24;:::i;:::-;34588:3;34581:37;34516:108;;:::o;34630:179::-;34699:10;34720:46;34762:3;34754:6;34720:46;:::i;:::-;34798:4;34793:3;34789:14;34775:28;;34630:179;;;;:::o;34815:113::-;34885:4;34917;34912:3;34908:14;34900:22;;34815:113;;;:::o;34964:732::-;35083:3;35112:54;35160:5;35112:54;:::i;:::-;35182:86;35261:6;35256:3;35182:86;:::i;:::-;35175:93;;35292:56;35342:5;35292:56;:::i;:::-;35371:7;35402:1;35387:284;35412:6;35409:1;35406:13;35387:284;;;35488:6;35482:13;35515:63;35574:3;35559:13;35515:63;:::i;:::-;35508:70;;35601:60;35654:6;35601:60;:::i;:::-;35591:70;;35447:224;35434:1;35431;35427:9;35422:14;;35387:284;;;35391:14;35687:3;35680:10;;35088:608;;;34964:732;;;;:::o;35702:831::-;35965:4;36003:3;35992:9;35988:19;35980:27;;36017:71;36085:1;36074:9;36070:17;36061:6;36017:71;:::i;:::-;36098:80;36174:2;36163:9;36159:18;36150:6;36098:80;:::i;:::-;36225:9;36219:4;36215:20;36210:2;36199:9;36195:18;36188:48;36253:108;36356:4;36347:6;36253:108;:::i;:::-;36245:116;;36371:72;36439:2;36428:9;36424:18;36415:6;36371:72;:::i;:::-;36453:73;36521:3;36510:9;36506:19;36497:6;36453:73;:::i;:::-;35702:831;;;;;;;;:::o;36539:147::-;36640:11;36677:3;36662:18;;36539:147;;;;:::o;36692:114::-;;:::o;36812:398::-;36971:3;36992:83;37073:1;37068:3;36992:83;:::i;:::-;36985:90;;37084:93;37173:3;37084:93;:::i;:::-;37202:1;37197:3;37193:11;37186:18;;36812:398;;;:::o;37216:379::-;37400:3;37422:147;37565:3;37422:147;:::i;:::-;37415:154;;37586:3;37579:10;;37216:379;;;:::o;37601:180::-;37649:77;37646:1;37639:88;37746:4;37743:1;37736:15;37770:4;37767:1;37760:15;37787:185;37827:1;37844:20;37862:1;37844:20;:::i;:::-;37839:25;;37878:20;37896:1;37878:20;:::i;:::-;37873:25;;37917:1;37907:35;;37922:18;;:::i;:::-;37907:35;37964:1;37961;37957:9;37952:14;;37787:185;;;;:::o;37978:220::-;38118:34;38114:1;38106:6;38102:14;38095:58;38187:3;38182:2;38174:6;38170:15;38163:28;37978:220;:::o;38204:366::-;38346:3;38367:67;38431:2;38426:3;38367:67;:::i;:::-;38360:74;;38443:93;38532:3;38443:93;:::i;:::-;38561:2;38556:3;38552:12;38545:19;;38204:366;;;:::o;38576:419::-;38742:4;38780:2;38769:9;38765:18;38757:26;;38829:9;38823:4;38819:20;38815:1;38804:9;38800:17;38793:47;38857:131;38983:4;38857:131;:::i;:::-;38849:139;;38576:419;;;:::o;39001:177::-;39141:29;39137:1;39129:6;39125:14;39118:53;39001:177;:::o;39184:366::-;39326:3;39347:67;39411:2;39406:3;39347:67;:::i;:::-;39340:74;;39423:93;39512:3;39423:93;:::i;:::-;39541:2;39536:3;39532:12;39525:19;;39184:366;;;:::o;39556:419::-;39722:4;39760:2;39749:9;39745:18;39737:26;;39809:9;39803:4;39799:20;39795:1;39784:9;39780:17;39773:47;39837:131;39963:4;39837:131;:::i;:::-;39829:139;;39556:419;;;:::o

Swarm Source

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