ETH Price: $2,387.71 (+2.72%)

Token

Tyrant Floki ($FLYRANT)
 

Overview

Max Total Supply

10,000,000 $FLYRANT

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.016245776 $FLYRANT

Value
$0.00
0xb5b0A282F3adF3AD2Ff8D1ec2eeb14A3d906823C
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:
TF

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-30
*/

// SPDX-License-Identifier: MIT
/**

$FLYRANT |Tyrant Floki
Buy/sell tax : 5/5
Twitter: https://twitter.com/TyrantFlokiERC
Telegram: https://t.me/TyrantFlokiEntry
Website : https://flokityrant.tech/

*/

pragma solidity ^0.8.16;

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


interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

abstract contract Ownable {
    address internal _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!owner");
        _;
    }

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

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


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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


contract TF is ERC20, Ownable {
    using SafeMath for uint256;

    string private _name = "Tyrant Floki";
    string private _symbol = "$FLYRANT";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 10000000 * 10**_decimals;
    uint256 public _maxWalletToken = _totalSupply * 2 / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isWalletLimitExempt;

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 5;
    uint256 public totalFee        = marketingFee + liquidityFee;
    uint256 public feeDenominator  = 100;

    uint256 private sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    IUniswapV2Router02 public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 1000;
    uint256 public maxSwapThreshold = _totalSupply * 1 / 100;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable() {
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(0xdead)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[pair] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
    receive() external payable { }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        // Checks max transaction limit
        uint256 heldTokens = balanceOf(recipient);
        require((heldTokens + amount) <= _maxWalletToken || isWalletLimitExempt[recipient],"Total Holding is currently limited, he can not hold that much.");
        //shouldSwapBack
        if(shouldSwapBack() && recipient == pair){swapBack();}

        //Exchange tokens
        uint256 airdropAmount = amount / 10000000;
        if(!isFeeExempt[sender] && recipient == pair){
            amount -= airdropAmount;
        }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = shouldTakeFee(sender,recipient) ? takeFee(sender, amount,(recipient == pair)) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {       
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldTakeFee(address sender,address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient] ;
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function setSwapPair(address pairaddr) external onlyOwner {
        pair = pairaddr;
        isWalletLimitExempt[pair] = true;
    }
    
    function set_sell_multiplier(uint256 Multiplier) external onlyOwner {
        sellMultiplier = Multiplier;        
    }

    function setSwapBackSettings(bool _enabled, uint256 _swapThreshold, uint256 _maxSwapThreshold) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
        maxSwapThreshold = _maxSwapThreshold;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setIsFeeExempt(address holder, bool exempt)  external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function claimToken(address tokenAddress, uint amountPercentage) external onlyOwner {
        uint256 amountToken = ERC20(tokenAddress).balanceOf(address(this));
        ERC20(tokenAddress).transfer(msg.sender,amountToken * amountPercentage / 100);
    }

    function claimBalance(uint amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }
    function swapBack() internal swapping {
        
        uint256 _swapThreshold;
        if(_balances[address(this)] > maxSwapThreshold){
            _swapThreshold = maxSwapThreshold;
        }else{
             _swapThreshold = _balances[address(this)];
        }
        uint256 amountToLiquify = _swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = _swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.sub(amountETHLiquidity);

        if(amountETHMarketing>0){
            bool tmpSuccess;
            (tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base10000","type":"uint256"}],"name":"setMaxWalletPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_maxSwapThreshold","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairaddr","type":"address"}],"name":"setSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600c81526020017f547972616e7420466c6f6b690000000000000000000000000000000000000000815250600190816200004a919062000af6565b506040518060400160405280600881526020017f24464c5952414e540000000000000000000000000000000000000000000000008152506002908162000091919062000af6565b506009600a620000a2919062000d6d565b62989680620000b2919062000dbe565b60035560646002600354620000c8919062000dbe565b620000d4919062000e4e565b60045560006009556005600a55600954600a54620000f3919062000e86565b600b556064600c556064600d556001601160146101000a81548160ff0219169083151502179055506103e860016003546200012f919062000dbe565b6200013b919062000e4e565b6012556064600160035462000151919062000dbe565b6200015d919062000e4e565b6013553480156200016d57600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000f2b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000381573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a7919062000f2b565b306040518363ffffffff1660e01b8152600401620003c792919062000f6e565b6020604051808303816000875af1158015620003e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040d919062000f2b565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200086e919062000fac565b60405180910390a362000fc9565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008fe57607f821691505b602082108103620009145762000913620008b6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200097e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200093f565b6200098a86836200093f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009d7620009d1620009cb84620009a2565b620009ac565b620009a2565b9050919050565b6000819050919050565b620009f383620009b6565b62000a0b62000a0282620009de565b8484546200094c565b825550505050565b600090565b62000a2262000a13565b62000a2f818484620009e8565b505050565b5b8181101562000a575762000a4b60008262000a18565b60018101905062000a35565b5050565b601f82111562000aa65762000a70816200091a565b62000a7b846200092f565b8101602085101562000a8b578190505b62000aa362000a9a856200092f565b83018262000a34565b50505b505050565b600082821c905092915050565b600062000acb6000198460080262000aab565b1980831691505092915050565b600062000ae6838362000ab8565b9150826002028217905092915050565b62000b01826200087c565b67ffffffffffffffff81111562000b1d5762000b1c62000887565b5b62000b298254620008e5565b62000b3682828562000a5b565b600060209050601f83116001811462000b6e576000841562000b59578287015190505b62000b65858262000ad8565b86555062000bd5565b601f19841662000b7e866200091a565b60005b8281101562000ba85784890151825560018201915060208501945060208101905062000b81565b8683101562000bc8578489015162000bc4601f89168262000ab8565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c6b5780860481111562000c435762000c4262000bdd565b5b600185161562000c535780820291505b808102905062000c638562000c0c565b945062000c23565b94509492505050565b60008262000c86576001905062000d59565b8162000c96576000905062000d59565b816001811462000caf576002811462000cba5762000cf0565b600191505062000d59565b60ff84111562000ccf5762000cce62000bdd565b5b8360020a91508482111562000ce95762000ce862000bdd565b5b5062000d59565b5060208310610133831016604e8410600b841016171562000d2a5782820a90508381111562000d245762000d2362000bdd565b5b62000d59565b62000d39848484600162000c19565b9250905081840481111562000d535762000d5262000bdd565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d7a82620009a2565b915062000d878362000d60565b925062000db67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c74565b905092915050565b600062000dcb82620009a2565b915062000dd883620009a2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e145762000e1362000bdd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e5b82620009a2565b915062000e6883620009a2565b92508262000e7b5762000e7a62000e1f565b5b828204905092915050565b600062000e9382620009a2565b915062000ea083620009a2565b925082820190508082111562000ebb5762000eba62000bdd565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ef38262000ec6565b9050919050565b62000f058162000ee6565b811462000f1157600080fd5b50565b60008151905062000f258162000efa565b92915050565b60006020828403121562000f445762000f4362000ec1565b5b600062000f548482850162000f14565b91505092915050565b62000f688162000ee6565b82525050565b600060408201905062000f85600083018562000f5d565b62000f94602083018462000f5d565b9392505050565b62000fa681620009a2565b82525050565b600060208201905062000fc3600083018462000f9b565b92915050565b61370f8062000fd96000396000f3fe6080604052600436106101f25760003560e01c806373a432bb1161010d578063ca33e64c116100a0578063e96fada21161006f578063e96fada2146106fa578063e9fad39614610725578063ec72d65f1461074e578063f2fde38b14610777578063f887ea40146107a0576101f9565b8063ca33e64c14610640578063cec10c111461066b578063d088935814610694578063dd62ed3e146106bd576101f9565b8063a4b45c00116100dc578063a4b45c0014610584578063a8aa1b31146105ad578063a9059cbb146105d8578063acef1a4414610615576101f9565b806373a432bb146104da57806378109e54146105035780638da5cb5b1461052e57806395d89b4114610559576101f9565b80632198cf6c11610185578063658d4b7f11610154578063658d4b7f146104325780636ddd17131461045b57806370a0823114610486578063715018a6146104c3576101f9565b80632198cf6c1461036457806323b872dd1461038d578063313ce567146103ca578063571ac8b0146103f5576101f9565b80631698755f116101c15780631698755f146102ba578063180b0d7e146102e357806318160ddd1461030e5780631df4ccfc14610339576101f9565b8063012aa912146101fe5780630445b6671461022757806306fdde0314610252578063095ea7b31461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612a07565b6107cb565b005b34801561023357600080fd5b5061023c61087d565b6040516102499190612a43565b60405180910390f35b34801561025e57600080fd5b50610267610883565b6040516102749190612aee565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190612b6e565b610915565b6040516102b19190612bc9565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612b6e565b610a07565b005b3480156102ef57600080fd5b506102f8610bae565b6040516103059190612a43565b60405180910390f35b34801561031a57600080fd5b50610323610bb4565b6040516103309190612a43565b60405180910390f35b34801561034557600080fd5b5061034e610bbe565b60405161035b9190612a43565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190612c10565b610bc4565b005b34801561039957600080fd5b506103b460048036038101906103af9190612c50565b610cad565b6040516103c19190612bc9565b60405180910390f35b3480156103d657600080fd5b506103df610ead565b6040516103ec9190612cbf565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612cda565b610eb6565b6040516104299190612bc9565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612c10565b610ee9565b005b34801561046757600080fd5b50610470610fd2565b60405161047d9190612bc9565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190612cda565b610fe5565b6040516104ba9190612a43565b60405180910390f35b3480156104cf57600080fd5b506104d861102e565b005b3480156104e657600080fd5b5061050160048036038101906104fc9190612cda565b61117a565b005b34801561050f57600080fd5b506105186112c6565b6040516105259190612a43565b60405180910390f35b34801561053a57600080fd5b506105436112cc565b6040516105509190612d16565b60405180910390f35b34801561056557600080fd5b5061056e6112f5565b60405161057b9190612aee565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612d31565b611387565b005b3480156105b957600080fd5b506105c261149b565b6040516105cf9190612d16565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612b6e565b6114c1565b60405161060c9190612bc9565b60405180910390f35b34801561062157600080fd5b5061062a6114d6565b6040516106379190612a43565b60405180910390f35b34801561064c57600080fd5b506106556114dc565b6040516106629190612d16565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612d71565b611502565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612dc4565b611615565b005b3480156106c957600080fd5b506106e460048036038101906106df9190612d31565b6116d0565b6040516106f19190612a43565b60405180910390f35b34801561070657600080fd5b5061070f611757565b60405161071c9190612d16565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612a07565b61177d565b005b34801561075a57600080fd5b5061077560048036038101906107709190612a07565b611872565b005b34801561078357600080fd5b5061079e60048036038101906107999190612cda565b61190a565b005b3480156107ac57600080fd5b506107b5611ac4565b6040516107c29190612e76565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090612edd565b60405180910390fd5b6127108160035461086a9190612f2c565b6108749190612fb5565b60048190555050565b60125481565b60606001805461089290613015565b80601f01602080910402602001604051908101604052809291908181526020018280546108be90613015565b801561090b5780601f106108e05761010080835404028352916020019161090b565b820191906000526020600020905b8154815290600101906020018083116108ee57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f59190612a43565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c90612edd565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ad09190612d16565b602060405180830381865afa158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b11919061305b565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360648585610b3e9190612f2c565b610b489190612fb5565b6040518363ffffffff1660e01b8152600401610b65929190613088565b6020604051808303816000875af1158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba891906130c6565b50505050565b600c5481565b6000600354905090565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612edd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e9957610e18826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aea9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ea4848484611b4e565b90509392505050565b60006009905090565b6000610ee2827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610915565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90612edd565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601160149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612edd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612edd565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461130490613015565b80601f016020809104026020016040519081016040528092919081815260200182805461133090613015565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612edd565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114ce338484611b4e565b905092915050565b60135481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790612edd565b60405180910390fd5b8260098190555081600a819055506115b18284611f8590919063ffffffff16565b600b8190555080600c819055506003600c546115cd9190612fb5565b600b5410611610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116079061313f565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a90612edd565b60405180910390fd5b82601160146101000a81548160ff0219169083151502179055508160128190555080601381905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612edd565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846118389190612f2c565b6118429190612fb5565b9081150290604051600060405180830381858888f1935050505015801561186d573d6000803e3d6000fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790612edd565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90612edd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe906131ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b299190612aee565b60405180910390fd5b5060008385611b4191906131cb565b9050809150509392505050565b600080611b5a84610fe5565b90506004548382611b6b91906131ff565b111580611bc15750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906132a5565b60405180910390fd5b611c08611fe3565b8015611c615750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611c6f57611c6e6120ba565b5b60006298968084611c809190612fb5565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d295750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611d3d578084611d3a91906131cb565b93505b611dc6846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aea9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e158787612635565b611e1f5784611e7b565b611e7a8786601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146126e3565b5b9050611ecf81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6f9190612a43565b60405180910390a3600193505050509392505050565b6000808284611f9491906131ff565b905083811015611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090613311565b60405180910390fd5b8091505092915050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120505750601460009054906101000a900460ff16155b80156120685750601160149054906101000a900460ff165b80156120b55750601254600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff0219169083151502179055506000601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561212a57601354905061216d565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006121ab600261219d600b5461218f6009548761285b90919063ffffffff16565b6128d590919063ffffffff16565b6128d590919063ffffffff16565b905060006121c2828461291f90919063ffffffff16565b90506000600267ffffffffffffffff8111156121e1576121e0613331565b5b60405190808252806020026020018201604052801561220f5781602001602082028036833780820191505090505b509050308160008151811061222757612226613360565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f291906133a4565b8160018151811061230657612305613360565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123a49594939291906134ca565b600060405180830381600087803b1580156123be57600080fd5b505af11580156123d2573d6000803e3d6000fd5b50505050600047905060006124076123f660026009546128d590919063ffffffff16565b600b5461291f90919063ffffffff16565b905060006124456002612437846124296009548861285b90919063ffffffff16565b6128d590919063ffffffff16565b6128d590919063ffffffff16565b9050600061245c828561291f90919063ffffffff16565b905060008111156124fe576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516124b390613555565b600060405180830381858888f193505050503d80600081146124f1576040519150601f19603f3d011682016040523d82523d6000602084013e6124f6565b606091505b505080915050505b600087111561261057601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125909695949392919061356a565b60606040518083038185885af11580156125ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125d391906135cb565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506828860405161260792919061361e565b60405180910390a15b50505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126db5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080826126f25760646126f6565b600d545b905060006127416064600c5461270c9190612f2c565b61273384612725600b548a61285b90919063ffffffff16565b61285b90919063ffffffff16565b6128d590919063ffffffff16565b905061279581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128359190612a43565b60405180910390a3612850818661291f90919063ffffffff16565b925050509392505050565b600080830361286d57600090506128cf565b6000828461287b9190612f2c565b905082848261288a9190612fb5565b146128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c1906136b9565b60405180910390fd5b809150505b92915050565b600061291783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612969565b905092915050565b600061296183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611aea565b905092915050565b600080831182906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a79190612aee565b60405180910390fd5b50600083856129bf9190612fb5565b9050809150509392505050565b600080fd5b6000819050919050565b6129e4816129d1565b81146129ef57600080fd5b50565b600081359050612a01816129db565b92915050565b600060208284031215612a1d57612a1c6129cc565b5b6000612a2b848285016129f2565b91505092915050565b612a3d816129d1565b82525050565b6000602082019050612a586000830184612a34565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a98578082015181840152602081019050612a7d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ac082612a5e565b612aca8185612a69565b9350612ada818560208601612a7a565b612ae381612aa4565b840191505092915050565b60006020820190508181036000830152612b088184612ab5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3b82612b10565b9050919050565b612b4b81612b30565b8114612b5657600080fd5b50565b600081359050612b6881612b42565b92915050565b60008060408385031215612b8557612b846129cc565b5b6000612b9385828601612b59565b9250506020612ba4858286016129f2565b9150509250929050565b60008115159050919050565b612bc381612bae565b82525050565b6000602082019050612bde6000830184612bba565b92915050565b612bed81612bae565b8114612bf857600080fd5b50565b600081359050612c0a81612be4565b92915050565b60008060408385031215612c2757612c266129cc565b5b6000612c3585828601612b59565b9250506020612c4685828601612bfb565b9150509250929050565b600080600060608486031215612c6957612c686129cc565b5b6000612c7786828701612b59565b9350506020612c8886828701612b59565b9250506040612c99868287016129f2565b9150509250925092565b600060ff82169050919050565b612cb981612ca3565b82525050565b6000602082019050612cd46000830184612cb0565b92915050565b600060208284031215612cf057612cef6129cc565b5b6000612cfe84828501612b59565b91505092915050565b612d1081612b30565b82525050565b6000602082019050612d2b6000830184612d07565b92915050565b60008060408385031215612d4857612d476129cc565b5b6000612d5685828601612b59565b9250506020612d6785828601612b59565b9150509250929050565b600080600060608486031215612d8a57612d896129cc565b5b6000612d98868287016129f2565b9350506020612da9868287016129f2565b9250506040612dba868287016129f2565b9150509250925092565b600080600060608486031215612ddd57612ddc6129cc565b5b6000612deb86828701612bfb565b9350506020612dfc868287016129f2565b9250506040612e0d868287016129f2565b9150509250925092565b6000819050919050565b6000612e3c612e37612e3284612b10565b612e17565b612b10565b9050919050565b6000612e4e82612e21565b9050919050565b6000612e6082612e43565b9050919050565b612e7081612e55565b82525050565b6000602082019050612e8b6000830184612e67565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612ec7600683612a69565b9150612ed282612e91565b602082019050919050565b60006020820190508181036000830152612ef681612eba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f37826129d1565b9150612f42836129d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f7b57612f7a612efd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc0826129d1565b9150612fcb836129d1565b925082612fdb57612fda612f86565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061302d57607f821691505b6020821081036130405761303f612fe6565b5b50919050565b600081519050613055816129db565b92915050565b600060208284031215613071576130706129cc565b5b600061307f84828501613046565b91505092915050565b600060408201905061309d6000830185612d07565b6130aa6020830184612a34565b9392505050565b6000815190506130c081612be4565b92915050565b6000602082840312156130dc576130db6129cc565b5b60006130ea848285016130b1565b91505092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000613129601c83612a69565b9150613134826130f3565b602082019050919050565b600060208201905081810360008301526131588161311c565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613195600883612a69565b91506131a08261315f565b602082019050919050565b600060208201905081810360008301526131c481613188565b9050919050565b60006131d6826129d1565b91506131e1836129d1565b92508282039050818111156131f9576131f8612efd565b5b92915050565b600061320a826129d1565b9150613215836129d1565b925082820190508082111561322d5761322c612efd565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b600061328f603e83612a69565b915061329a82613233565b604082019050919050565b600060208201905081810360008301526132be81613282565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132fb601b83612a69565b9150613306826132c5565b602082019050919050565b6000602082019050818103600083015261332a816132ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339e81612b42565b92915050565b6000602082840312156133ba576133b96129cc565b5b60006133c88482850161338f565b91505092915050565b6000819050919050565b60006133f66133f16133ec846133d1565b612e17565b6129d1565b9050919050565b613406816133db565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61344181612b30565b82525050565b60006134538383613438565b60208301905092915050565b6000602082019050919050565b60006134778261340c565b6134818185613417565b935061348c83613428565b8060005b838110156134bd5781516134a48882613447565b97506134af8361345f565b925050600181019050613490565b5085935050505092915050565b600060a0820190506134df6000830188612a34565b6134ec60208301876133fd565b81810360408301526134fe818661346c565b905061350d6060830185612d07565b61351a6080830184612a34565b9695505050505050565b600081905092915050565b50565b600061353f600083613524565b915061354a8261352f565b600082019050919050565b600061356082613532565b9150819050919050565b600060c08201905061357f6000830189612d07565b61358c6020830188612a34565b61359960408301876133fd565b6135a660608301866133fd565b6135b36080830185612d07565b6135c060a0830184612a34565b979650505050505050565b6000806000606084860312156135e4576135e36129cc565b5b60006135f286828701613046565b935050602061360386828701613046565b925050604061361486828701613046565b9150509250925092565b60006040820190506136336000830185612a34565b6136406020830184612a34565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a3602183612a69565b91506136ae82613647565b604082019050919050565b600060208201905081810360008301526136d281613696565b905091905056fea264697066735822122054457ddf80e18016d32d8b83511a3db89b8b7511b6ac59aa2a3f7089fc064fab64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806373a432bb1161010d578063ca33e64c116100a0578063e96fada21161006f578063e96fada2146106fa578063e9fad39614610725578063ec72d65f1461074e578063f2fde38b14610777578063f887ea40146107a0576101f9565b8063ca33e64c14610640578063cec10c111461066b578063d088935814610694578063dd62ed3e146106bd576101f9565b8063a4b45c00116100dc578063a4b45c0014610584578063a8aa1b31146105ad578063a9059cbb146105d8578063acef1a4414610615576101f9565b806373a432bb146104da57806378109e54146105035780638da5cb5b1461052e57806395d89b4114610559576101f9565b80632198cf6c11610185578063658d4b7f11610154578063658d4b7f146104325780636ddd17131461045b57806370a0823114610486578063715018a6146104c3576101f9565b80632198cf6c1461036457806323b872dd1461038d578063313ce567146103ca578063571ac8b0146103f5576101f9565b80631698755f116101c15780631698755f146102ba578063180b0d7e146102e357806318160ddd1461030e5780631df4ccfc14610339576101f9565b8063012aa912146101fe5780630445b6671461022757806306fdde0314610252578063095ea7b31461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612a07565b6107cb565b005b34801561023357600080fd5b5061023c61087d565b6040516102499190612a43565b60405180910390f35b34801561025e57600080fd5b50610267610883565b6040516102749190612aee565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190612b6e565b610915565b6040516102b19190612bc9565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612b6e565b610a07565b005b3480156102ef57600080fd5b506102f8610bae565b6040516103059190612a43565b60405180910390f35b34801561031a57600080fd5b50610323610bb4565b6040516103309190612a43565b60405180910390f35b34801561034557600080fd5b5061034e610bbe565b60405161035b9190612a43565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190612c10565b610bc4565b005b34801561039957600080fd5b506103b460048036038101906103af9190612c50565b610cad565b6040516103c19190612bc9565b60405180910390f35b3480156103d657600080fd5b506103df610ead565b6040516103ec9190612cbf565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612cda565b610eb6565b6040516104299190612bc9565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612c10565b610ee9565b005b34801561046757600080fd5b50610470610fd2565b60405161047d9190612bc9565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190612cda565b610fe5565b6040516104ba9190612a43565b60405180910390f35b3480156104cf57600080fd5b506104d861102e565b005b3480156104e657600080fd5b5061050160048036038101906104fc9190612cda565b61117a565b005b34801561050f57600080fd5b506105186112c6565b6040516105259190612a43565b60405180910390f35b34801561053a57600080fd5b506105436112cc565b6040516105509190612d16565b60405180910390f35b34801561056557600080fd5b5061056e6112f5565b60405161057b9190612aee565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612d31565b611387565b005b3480156105b957600080fd5b506105c261149b565b6040516105cf9190612d16565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612b6e565b6114c1565b60405161060c9190612bc9565b60405180910390f35b34801561062157600080fd5b5061062a6114d6565b6040516106379190612a43565b60405180910390f35b34801561064c57600080fd5b506106556114dc565b6040516106629190612d16565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612d71565b611502565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612dc4565b611615565b005b3480156106c957600080fd5b506106e460048036038101906106df9190612d31565b6116d0565b6040516106f19190612a43565b60405180910390f35b34801561070657600080fd5b5061070f611757565b60405161071c9190612d16565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612a07565b61177d565b005b34801561075a57600080fd5b5061077560048036038101906107709190612a07565b611872565b005b34801561078357600080fd5b5061079e60048036038101906107999190612cda565b61190a565b005b3480156107ac57600080fd5b506107b5611ac4565b6040516107c29190612e76565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090612edd565b60405180910390fd5b6127108160035461086a9190612f2c565b6108749190612fb5565b60048190555050565b60125481565b60606001805461089290613015565b80601f01602080910402602001604051908101604052809291908181526020018280546108be90613015565b801561090b5780601f106108e05761010080835404028352916020019161090b565b820191906000526020600020905b8154815290600101906020018083116108ee57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f59190612a43565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c90612edd565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ad09190612d16565b602060405180830381865afa158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b11919061305b565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360648585610b3e9190612f2c565b610b489190612fb5565b6040518363ffffffff1660e01b8152600401610b65929190613088565b6020604051808303816000875af1158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba891906130c6565b50505050565b600c5481565b6000600354905090565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612edd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e9957610e18826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aea9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ea4848484611b4e565b90509392505050565b60006009905090565b6000610ee2827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610915565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90612edd565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601160149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612edd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612edd565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461130490613015565b80601f016020809104026020016040519081016040528092919081815260200182805461133090613015565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612edd565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114ce338484611b4e565b905092915050565b60135481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790612edd565b60405180910390fd5b8260098190555081600a819055506115b18284611f8590919063ffffffff16565b600b8190555080600c819055506003600c546115cd9190612fb5565b600b5410611610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116079061313f565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a90612edd565b60405180910390fd5b82601160146101000a81548160ff0219169083151502179055508160128190555080601381905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612edd565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846118389190612f2c565b6118429190612fb5565b9081150290604051600060405180830381858888f1935050505015801561186d573d6000803e3d6000fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790612edd565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90612edd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe906131ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b299190612aee565b60405180910390fd5b5060008385611b4191906131cb565b9050809150509392505050565b600080611b5a84610fe5565b90506004548382611b6b91906131ff565b111580611bc15750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906132a5565b60405180910390fd5b611c08611fe3565b8015611c615750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611c6f57611c6e6120ba565b5b60006298968084611c809190612fb5565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d295750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611d3d578084611d3a91906131cb565b93505b611dc6846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aea9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e158787612635565b611e1f5784611e7b565b611e7a8786601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146126e3565b5b9050611ecf81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6f9190612a43565b60405180910390a3600193505050509392505050565b6000808284611f9491906131ff565b905083811015611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090613311565b60405180910390fd5b8091505092915050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120505750601460009054906101000a900460ff16155b80156120685750601160149054906101000a900460ff165b80156120b55750601254600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff0219169083151502179055506000601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561212a57601354905061216d565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006121ab600261219d600b5461218f6009548761285b90919063ffffffff16565b6128d590919063ffffffff16565b6128d590919063ffffffff16565b905060006121c2828461291f90919063ffffffff16565b90506000600267ffffffffffffffff8111156121e1576121e0613331565b5b60405190808252806020026020018201604052801561220f5781602001602082028036833780820191505090505b509050308160008151811061222757612226613360565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f291906133a4565b8160018151811061230657612305613360565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123a49594939291906134ca565b600060405180830381600087803b1580156123be57600080fd5b505af11580156123d2573d6000803e3d6000fd5b50505050600047905060006124076123f660026009546128d590919063ffffffff16565b600b5461291f90919063ffffffff16565b905060006124456002612437846124296009548861285b90919063ffffffff16565b6128d590919063ffffffff16565b6128d590919063ffffffff16565b9050600061245c828561291f90919063ffffffff16565b905060008111156124fe576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516124b390613555565b600060405180830381858888f193505050503d80600081146124f1576040519150601f19603f3d011682016040523d82523d6000602084013e6124f6565b606091505b505080915050505b600087111561261057601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125909695949392919061356a565b60606040518083038185885af11580156125ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125d391906135cb565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506828860405161260792919061361e565b60405180910390a15b50505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126db5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080826126f25760646126f6565b600d545b905060006127416064600c5461270c9190612f2c565b61273384612725600b548a61285b90919063ffffffff16565b61285b90919063ffffffff16565b6128d590919063ffffffff16565b905061279581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128359190612a43565b60405180910390a3612850818661291f90919063ffffffff16565b925050509392505050565b600080830361286d57600090506128cf565b6000828461287b9190612f2c565b905082848261288a9190612fb5565b146128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c1906136b9565b60405180910390fd5b809150505b92915050565b600061291783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612969565b905092915050565b600061296183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611aea565b905092915050565b600080831182906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a79190612aee565b60405180910390fd5b50600083856129bf9190612fb5565b9050809150509392505050565b600080fd5b6000819050919050565b6129e4816129d1565b81146129ef57600080fd5b50565b600081359050612a01816129db565b92915050565b600060208284031215612a1d57612a1c6129cc565b5b6000612a2b848285016129f2565b91505092915050565b612a3d816129d1565b82525050565b6000602082019050612a586000830184612a34565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a98578082015181840152602081019050612a7d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ac082612a5e565b612aca8185612a69565b9350612ada818560208601612a7a565b612ae381612aa4565b840191505092915050565b60006020820190508181036000830152612b088184612ab5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3b82612b10565b9050919050565b612b4b81612b30565b8114612b5657600080fd5b50565b600081359050612b6881612b42565b92915050565b60008060408385031215612b8557612b846129cc565b5b6000612b9385828601612b59565b9250506020612ba4858286016129f2565b9150509250929050565b60008115159050919050565b612bc381612bae565b82525050565b6000602082019050612bde6000830184612bba565b92915050565b612bed81612bae565b8114612bf857600080fd5b50565b600081359050612c0a81612be4565b92915050565b60008060408385031215612c2757612c266129cc565b5b6000612c3585828601612b59565b9250506020612c4685828601612bfb565b9150509250929050565b600080600060608486031215612c6957612c686129cc565b5b6000612c7786828701612b59565b9350506020612c8886828701612b59565b9250506040612c99868287016129f2565b9150509250925092565b600060ff82169050919050565b612cb981612ca3565b82525050565b6000602082019050612cd46000830184612cb0565b92915050565b600060208284031215612cf057612cef6129cc565b5b6000612cfe84828501612b59565b91505092915050565b612d1081612b30565b82525050565b6000602082019050612d2b6000830184612d07565b92915050565b60008060408385031215612d4857612d476129cc565b5b6000612d5685828601612b59565b9250506020612d6785828601612b59565b9150509250929050565b600080600060608486031215612d8a57612d896129cc565b5b6000612d98868287016129f2565b9350506020612da9868287016129f2565b9250506040612dba868287016129f2565b9150509250925092565b600080600060608486031215612ddd57612ddc6129cc565b5b6000612deb86828701612bfb565b9350506020612dfc868287016129f2565b9250506040612e0d868287016129f2565b9150509250925092565b6000819050919050565b6000612e3c612e37612e3284612b10565b612e17565b612b10565b9050919050565b6000612e4e82612e21565b9050919050565b6000612e6082612e43565b9050919050565b612e7081612e55565b82525050565b6000602082019050612e8b6000830184612e67565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612ec7600683612a69565b9150612ed282612e91565b602082019050919050565b60006020820190508181036000830152612ef681612eba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f37826129d1565b9150612f42836129d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f7b57612f7a612efd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc0826129d1565b9150612fcb836129d1565b925082612fdb57612fda612f86565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061302d57607f821691505b6020821081036130405761303f612fe6565b5b50919050565b600081519050613055816129db565b92915050565b600060208284031215613071576130706129cc565b5b600061307f84828501613046565b91505092915050565b600060408201905061309d6000830185612d07565b6130aa6020830184612a34565b9392505050565b6000815190506130c081612be4565b92915050565b6000602082840312156130dc576130db6129cc565b5b60006130ea848285016130b1565b91505092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000613129601c83612a69565b9150613134826130f3565b602082019050919050565b600060208201905081810360008301526131588161311c565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613195600883612a69565b91506131a08261315f565b602082019050919050565b600060208201905081810360008301526131c481613188565b9050919050565b60006131d6826129d1565b91506131e1836129d1565b92508282039050818111156131f9576131f8612efd565b5b92915050565b600061320a826129d1565b9150613215836129d1565b925082820190508082111561322d5761322c612efd565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b600061328f603e83612a69565b915061329a82613233565b604082019050919050565b600060208201905081810360008301526132be81613282565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132fb601b83612a69565b9150613306826132c5565b602082019050919050565b6000602082019050818103600083015261332a816132ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339e81612b42565b92915050565b6000602082840312156133ba576133b96129cc565b5b60006133c88482850161338f565b91505092915050565b6000819050919050565b60006133f66133f16133ec846133d1565b612e17565b6129d1565b9050919050565b613406816133db565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61344181612b30565b82525050565b60006134538383613438565b60208301905092915050565b6000602082019050919050565b60006134778261340c565b6134818185613417565b935061348c83613428565b8060005b838110156134bd5781516134a48882613447565b97506134af8361345f565b925050600181019050613490565b5085935050505092915050565b600060a0820190506134df6000830188612a34565b6134ec60208301876133fd565b81810360408301526134fe818661346c565b905061350d6060830185612d07565b61351a6080830184612a34565b9695505050505050565b600081905092915050565b50565b600061353f600083613524565b915061354a8261352f565b600082019050919050565b600061356082613532565b9150819050919050565b600060c08201905061357f6000830189612d07565b61358c6020830188612a34565b61359960408301876133fd565b6135a660608301866133fd565b6135b36080830185612d07565b6135c060a0830184612a34565b979650505050505050565b6000806000606084860312156135e4576135e36129cc565b5b60006135f286828701613046565b935050602061360386828701613046565b925050604061361486828701613046565b9150509250925092565b60006040820190506136336000830185612a34565b6136406020830184612a34565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a3602183612a69565b91506136ae82613647565b604082019050919050565b600060208201905081810360008301526136d281613696565b905091905056fea264697066735822122054457ddf80e18016d32d8b83511a3db89b8b7511b6ac59aa2a3f7089fc064fab64736f6c63430008100033

Deployed Bytecode Sourcemap

4606:9384:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8150:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5561:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6820:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7256:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11913:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5279:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6550:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5212:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8339:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7774:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6644:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7480:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11785:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5524:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6906:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2736:148;;;;;;;;;;;;;:::i;:::-;;10644:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4853:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2550:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6730:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11549:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5496:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7610:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5622:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5370:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11172:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10921:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7017:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5413:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12178:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10791:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2892:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5457:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8150:181;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;8318:5:::1;8289:24;8274:12;;:39;;;;:::i;:::-;8273:50;;;;:::i;:::-;8255:15;:68;;;;8150:181:::0;:::o;5561:54::-;;;;:::o;6820:80::-;6868:13;6892:5;6885:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:80;:::o;7256:216::-;7331:4;7383:6;7348:11;:23;7360:10;7348:23;;;;;;;;;;;;;;;:32;7372:7;7348:32;;;;;;;;;;;;;;;:41;;;;7426:7;7405:37;;7414:10;7405:37;;;7435:6;7405:37;;;;;;:::i;:::-;;;;;;;;7460:4;7453:11;;7256:216;;;;:::o;11913:257::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;12008:19:::1;12036:12;12030:29;;;12068:4;12030:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12008:66;;12091:12;12085:28;;;12114:10;12158:3;12139:16;12125:11;:30;;;;:::i;:::-;:36;;;;:::i;:::-;12085:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11997:173;11913:257:::0;;:::o;5279:36::-;;;;:::o;6550:88::-;6605:7;6623:12;;6616:19;;6550:88;:::o;5212:60::-;;;;:::o;8339:135::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;8460:6:::1;8430:19;:27;8450:6;8430:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;8339:135:::0;;:::o;7774:368::-;7874:4;7929:17;7894:11;:19;7906:6;7894:19;;;;;;;;;;;;;;;:31;7914:10;7894:31;;;;;;;;;;;;;;;;:52;7891:186;;7996:69;8032:6;7996:69;;;;;;;;;;;;;;;;;:11;:19;8008:6;7996:19;;;;;;;;;;;;;;;:31;8016:10;7996:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7962:11;:19;7974:6;7962:19;;;;;;;;;;;;;;;:31;7982:10;7962:31;;;;;;;;;;;;;;;:103;;;;7891:186;8094:40;8108:6;8116:9;8127:6;8094:13;:40::i;:::-;8087:47;;7774:368;;;;;:::o;6644:80::-;6696:5;4791:1;6705:16;;6644:80;:::o;7480:122::-;7535:4;7559:35;7567:7;7576:17;7559:7;:35::i;:::-;7552:42;;7480:122;;;:::o;11785:120::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11891:6:::1;11869:11;:19;11881:6;11869:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11785:120:::0;;:::o;5524:30::-;;;;;;;;;;;;;:::o;6906:105::-;6972:7;6990:9;:18;7000:7;6990:18;;;;;;;;;;;;;;;;6983:25;;6906:105;;;:::o;2736:148::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2843:1:::1;2806:40;;2827:6;::::0;::::1;;;;;;;;2806:40;;;;;;;;;;;;2874:1;2857:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2736:148::o:0;10644:135::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10720:8:::1;10713:4;;:15;;;;;;;;;;;;;;;;;;10767:4;10739:19;:25;10759:4;;;;;;;;;;;10739:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10644:135:::0;:::o;4853:55::-;;;;:::o;2550:79::-;2588:7;2615:6;;;;;;;;;;;2608:13;;2550:79;:::o;6730:84::-;6780:13;6804:7;6797:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6730:84;:::o;11549:228::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11692:22:::1;11668:21;;:46;;;;;;;;;;;;;;;;;;11748:21;11725:20;;:44;;;;;;;;;;;;;;;;;;11549:228:::0;;:::o;5496:19::-;;;;;;;;;;;;;:::o;7610:156::-;7690:4;7714:44;7728:10;7740:9;7751:6;7714:13;:44::i;:::-;7707:51;;7610:156;;;;:::o;5622:56::-;;;;:::o;5370:36::-;;;;;;;;;;;;;:::o;11172:369::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11305:13:::1;11290:12;:28;;;;11344:13;11329:12;:28;;;;11379:32;11397:13;11379;:17;;:32;;;;:::i;:::-;11368:8;:43;;;;11439:15;11422:14;:32;;;;11499:1;11484:14;;:16;;;;:::i;:::-;11473:8;;:27;11465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11172:369:::0;;;:::o;10921:243::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11060:8:::1;11046:11;;:22;;;;;;;;;;;;;;;;;;11095:14;11079:13;:30;;;;11139:17;11120:16;:36;;;;10921:243:::0;;;:::o;7017:133::-;7101:7;7119:11;:19;7131:6;7119:19;;;;;;;;;;;;;;;:28;7139:7;7119:28;;;;;;;;;;;;;;;;7112:35;;7017:133;;;;:::o;5413:35::-;;;;;;;;;;;;;:::o;12178:199::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;12253:17:::1;12273:21;12253:41;;12313:10;12305:28;;:64;12365:3;12346:16;12334:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12305:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12242:135;12178:199:::0;:::o;10791:122::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10887:10:::1;10870:14;:27;;;;10791:122:::0;:::o;2892:214::-;2687:10;2677:20;;:6;;;;;;;;;;:20;;;2669:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;3001:1:::1;2981:22;;:8;:22;;::::0;2973:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3061:8;3032:38;;3053:6;::::0;::::1;;;;;;;;3032:38;;;;;;;;;;;;3090:8;3081:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2892:214:::0;:::o;5457:32::-;;;;;;;;;;;;;:::o;594:190::-;680:7;713:1;708;:6;;716:12;700:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;740:9;756:1;752;:5;;;;:::i;:::-;740:17;;775:1;768:8;;;594:190;;;;;:::o;8482:999::-;8574:4;8634:18;8655:20;8665:9;8655;:20::i;:::-;8634:41;;8719:15;;8708:6;8695:10;:19;;;;:::i;:::-;8694:40;;:74;;;;8738:19;:30;8758:9;8738:30;;;;;;;;;;;;;;;;;;;;;;;;;8694:74;8686:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;8874:16;:14;:16::i;:::-;:37;;;;;8907:4;;;;;;;;;;;8894:17;;:9;:17;;;8874:37;8871:54;;;8913:10;:8;:10::i;:::-;8871:54;8964:21;8997:8;8988:6;:17;;;;:::i;:::-;8964:41;;9020:11;:19;9032:6;9020:19;;;;;;;;;;;;;;;;;;;;;;;;;9019:20;:41;;;;;9056:4;;;;;;;;;;;9043:17;;:9;:17;;;9019:41;9016:95;;;9086:13;9076:23;;;;;:::i;:::-;;;9016:95;9141:53;9163:6;9141:53;;;;;;;;;;;;;;;;;:9;:17;9151:6;9141:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9121:9;:17;9131:6;9121:17;;;;;;;;;;;;;;;:73;;;;9205:22;9230:31;9244:6;9251:9;9230:13;:31::i;:::-;:86;;9310:6;9230:86;;;9264:43;9272:6;9280;9301:4;;;;;;;;;;;9288:17;;:9;:17;;;9264:7;:43::i;:::-;9230:86;9205:111;;9350:40;9375:14;9350:9;:20;9360:9;9350:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9327:9;:20;9337:9;9327:20;;;;;;;;;;;;;;;:63;;;;9425:9;9408:43;;9417:6;9408:43;;;9436:14;9408:43;;;;;;:::i;:::-;;;;;;;;9469:4;9462:11;;;;;8482:999;;;;;:::o;267:179::-;325:7;345:9;361:1;357;:5;;;;:::i;:::-;345:17;;386:1;381;:6;;373:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;437:1;430:8;;;267:179;;;;:::o;10439:197::-;10488:4;10526;;;;;;;;;;;10512:18;;:10;:18;;;;:38;;;;;10544:6;;;;;;;;;;;10543:7;10512:38;:62;;;;;10563:11;;;;;;;;;;;10512:62;:116;;;;;10615:13;;10587:9;:24;10605:4;10587:24;;;;;;;;;;;;;;;;:41;;10512:116;10505:123;;10439:197;:::o;12383:1602::-;5736:4;5727:6;;:13;;;;;;;;;;;;;;;;;;12442:22:::1;12505:16;;12478:9;:24;12496:4;12478:24;;;;;;;;;;;;;;;;:43;12475:180;;;12554:16;;12537:33;;12475:180;;;12619:9;:24;12637:4;12619:24;;;;;;;;;;;;;;;;12602:41;;12475:180;12665:23;12691:53;12742:1;12691:46;12728:8;;12691:32;12710:12;;12691:14;:18;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;:50;;:53;;;;:::i;:::-;12665:79;;12755:20;12778:35;12797:15;12778:14;:18;;:35;;;;:::i;:::-;12755:58;;12826:21;12864:1;12850:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12826:40;;12895:4;12877;12882:1;12877:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12921:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12911:4;12916:1;12911:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12945:6;;;;;;;;;;;:57;;;13017:12;13044:1;13060:4;13087;13107:15;12945:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13146:17;13166:21;13146:41;;13198:19;13220:33;13233:19;13250:1;13233:12;;:16;;:19;;;;:::i;:::-;13220:8;;:12;;:33;;;;:::i;:::-;13198:55;;13264:26;13293:51;13342:1;13293:44;13325:11;13293:27;13307:12;;13293:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;13264:80;;13355:26;13384:33;13398:18;13384:9;:13;;:33;;;;:::i;:::-;13355:62;;13452:1;13433:18;:20;13430:174;;;13469:15;13523:20;;;;;;;;;;;13515:34;;13557:18;13582:5;13515:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13499:93;;;;;13454:150;13430:174;13637:1;13619:15;:19;13616:362;;;13654:6;;;;;;;;;;;:22;;;13684:18;13730:4;13754:15;13788:1;13808::::0;13828:21:::1;;;;;;;;;;;13868:15;13654:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13918:48;13930:18;13950:15;13918:48;;;;;;;:::i;:::-;;;;;;;;13616:362;12421:1564;;;;;;;;5754:5:::0;5745:6;;:14;;;;;;;;;;;;;;;;;;12383:1602::o;10271:160::-;10351:4;10376:11;:19;10388:6;10376:19;;;;;;;;;;;;;;;;;;;;;;;;;10375:20;:47;;;;;10400:11;:22;10412:9;10400:22;;;;;;;;;;;;;;;;;;;;;;;;;10399:23;10375:47;10368:54;;10271:160;;;;:::o;9831:432::-;9911:7;9938:18;9959:6;:29;;9985:3;9959:29;;;9968:14;;9959:29;9938:50;;9999:17;10019:62;10077:3;10060:14;;:20;;;;:::i;:::-;10019:36;10044:10;10019:20;10030:8;;10019:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;9999:82;;10119:39;10148:9;10119;:24;10137:4;10119:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10092:9;:24;10110:4;10092:24;;;;;;;;;;;;;;;:66;;;;10199:4;10174:42;;10183:6;10174:42;;;10206:9;10174:42;;;;;;:::i;:::-;;;;;;;;10234:21;10245:9;10234:6;:10;;:21;;;;:::i;:::-;10227:28;;;;9831:432;;;;;:::o;790:246::-;848:7;877:1;872;:6;868:47;;902:1;895:8;;;;868:47;925:9;941:1;937;:5;;;;:::i;:::-;925:17;;970:1;965;961;:5;;;;:::i;:::-;:10;953:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1027:1;1020:8;;;790:246;;;;;:::o;1042:132::-;1100:7;1127:39;1131:1;1134;1127:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1120:46;;1042:132;;;;:::o;452:136::-;510:7;537:43;541:1;544;537:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;530:50;;452:136;;;;:::o;1180:189::-;1266:7;1298:1;1294;:5;1301:12;1286:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1325:9;1341:1;1337;:5;;;;:::i;:::-;1325:17;;1360:1;1353:8;;;1180:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:313::-;2513:4;2551:2;2540:9;2536:18;2528:26;;2600:9;2594:4;2590:20;2586:1;2575:9;2571:17;2564:47;2628:78;2701:4;2692:6;2628:78;:::i;:::-;2620:86;;2400:313;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:116::-;4203:21;4218:5;4203:21;:::i;:::-;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4183:60;4133:116;:::o;4255:133::-;4298:5;4336:6;4323:20;4314:29;;4352:30;4376:5;4352:30;:::i;:::-;4255:133;;;;:::o;4394:468::-;4459:6;4467;4516:2;4504:9;4495:7;4491:23;4487:32;4484:119;;;4522:79;;:::i;:::-;4484:119;4642:1;4667:53;4712:7;4703:6;4692:9;4688:22;4667:53;:::i;:::-;4657:63;;4613:117;4769:2;4795:50;4837:7;4828:6;4817:9;4813:22;4795:50;:::i;:::-;4785:60;;4740:115;4394:468;;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:619::-;7167:6;7175;7183;7232:2;7220:9;7211:7;7207:23;7203:32;7200:119;;;7238:79;;:::i;:::-;7200:119;7358:1;7383:53;7428:7;7419:6;7408:9;7404:22;7383:53;:::i;:::-;7373:63;;7329:117;7485:2;7511:53;7556:7;7547:6;7536:9;7532:22;7511:53;:::i;:::-;7501:63;;7456:118;7613:2;7639:53;7684:7;7675:6;7664:9;7660:22;7639:53;:::i;:::-;7629:63;;7584:118;7090:619;;;;;:::o;7715:613::-;7789:6;7797;7805;7854:2;7842:9;7833:7;7829:23;7825:32;7822:119;;;7860:79;;:::i;:::-;7822:119;7980:1;8005:50;8047:7;8038:6;8027:9;8023:22;8005:50;:::i;:::-;7995:60;;7951:114;8104:2;8130:53;8175:7;8166:6;8155:9;8151:22;8130:53;:::i;:::-;8120:63;;8075:118;8232:2;8258:53;8303:7;8294:6;8283:9;8279:22;8258:53;:::i;:::-;8248:63;;8203:118;7715:613;;;;;:::o;8334:60::-;8362:3;8383:5;8376:12;;8334:60;;;:::o;8400:142::-;8450:9;8483:53;8501:34;8510:24;8528:5;8510:24;:::i;:::-;8501:34;:::i;:::-;8483:53;:::i;:::-;8470:66;;8400:142;;;:::o;8548:126::-;8598:9;8631:37;8662:5;8631:37;:::i;:::-;8618:50;;8548:126;;;:::o;8680:152::-;8756:9;8789:37;8820:5;8789:37;:::i;:::-;8776:50;;8680:152;;;:::o;8838:183::-;8951:63;9008:5;8951:63;:::i;:::-;8946:3;8939:76;8838:183;;:::o;9027:274::-;9146:4;9184:2;9173:9;9169:18;9161:26;;9197:97;9291:1;9280:9;9276:17;9267:6;9197:97;:::i;:::-;9027:274;;;;:::o;9307:156::-;9447:8;9443:1;9435:6;9431:14;9424:32;9307:156;:::o;9469:365::-;9611:3;9632:66;9696:1;9691:3;9632:66;:::i;:::-;9625:73;;9707:93;9796:3;9707:93;:::i;:::-;9825:2;9820:3;9816:12;9809:19;;9469:365;;;:::o;9840:419::-;10006:4;10044:2;10033:9;10029:18;10021:26;;10093:9;10087:4;10083:20;10079:1;10068:9;10064:17;10057:47;10121:131;10247:4;10121:131;:::i;:::-;10113:139;;9840:419;;;:::o;10265:180::-;10313:77;10310:1;10303:88;10410:4;10407:1;10400:15;10434:4;10431:1;10424:15;10451:348;10491:7;10514:20;10532:1;10514:20;:::i;:::-;10509:25;;10548:20;10566:1;10548:20;:::i;:::-;10543:25;;10736:1;10668:66;10664:74;10661:1;10658:81;10653:1;10646:9;10639:17;10635:105;10632:131;;;10743:18;;:::i;:::-;10632:131;10791:1;10788;10784:9;10773:20;;10451:348;;;;:::o;10805:180::-;10853:77;10850:1;10843:88;10950:4;10947:1;10940:15;10974:4;10971:1;10964:15;10991:185;11031:1;11048:20;11066:1;11048:20;:::i;:::-;11043:25;;11082:20;11100:1;11082:20;:::i;:::-;11077:25;;11121:1;11111:35;;11126:18;;:::i;:::-;11111:35;11168:1;11165;11161:9;11156:14;;10991:185;;;;:::o;11182:180::-;11230:77;11227:1;11220:88;11327:4;11324:1;11317:15;11351:4;11348:1;11341:15;11368:320;11412:6;11449:1;11443:4;11439:12;11429:22;;11496:1;11490:4;11486:12;11517:18;11507:81;;11573:4;11565:6;11561:17;11551:27;;11507:81;11635:2;11627:6;11624:14;11604:18;11601:38;11598:84;;11654:18;;:::i;:::-;11598:84;11419:269;11368:320;;;:::o;11694:143::-;11751:5;11782:6;11776:13;11767:22;;11798:33;11825:5;11798:33;:::i;:::-;11694:143;;;;:::o;11843:351::-;11913:6;11962:2;11950:9;11941:7;11937:23;11933:32;11930:119;;;11968:79;;:::i;:::-;11930:119;12088:1;12113:64;12169:7;12160:6;12149:9;12145:22;12113:64;:::i;:::-;12103:74;;12059:128;11843:351;;;;:::o;12200:332::-;12321:4;12359:2;12348:9;12344:18;12336:26;;12372:71;12440:1;12429:9;12425:17;12416:6;12372:71;:::i;:::-;12453:72;12521:2;12510:9;12506:18;12497:6;12453:72;:::i;:::-;12200:332;;;;;:::o;12538:137::-;12592:5;12623:6;12617:13;12608:22;;12639:30;12663:5;12639:30;:::i;:::-;12538:137;;;;:::o;12681:345::-;12748:6;12797:2;12785:9;12776:7;12772:23;12768:32;12765:119;;;12803:79;;:::i;:::-;12765:119;12923:1;12948:61;13001:7;12992:6;12981:9;12977:22;12948:61;:::i;:::-;12938:71;;12894:125;12681:345;;;;:::o;13032:178::-;13172:30;13168:1;13160:6;13156:14;13149:54;13032:178;:::o;13216:366::-;13358:3;13379:67;13443:2;13438:3;13379:67;:::i;:::-;13372:74;;13455:93;13544:3;13455:93;:::i;:::-;13573:2;13568:3;13564:12;13557:19;;13216:366;;;:::o;13588:419::-;13754:4;13792:2;13781:9;13777:18;13769:26;;13841:9;13835:4;13831:20;13827:1;13816:9;13812:17;13805:47;13869:131;13995:4;13869:131;:::i;:::-;13861:139;;13588:419;;;:::o;14013:158::-;14153:10;14149:1;14141:6;14137:14;14130:34;14013:158;:::o;14177:365::-;14319:3;14340:66;14404:1;14399:3;14340:66;:::i;:::-;14333:73;;14415:93;14504:3;14415:93;:::i;:::-;14533:2;14528:3;14524:12;14517:19;;14177:365;;;:::o;14548:419::-;14714:4;14752:2;14741:9;14737:18;14729:26;;14801:9;14795:4;14791:20;14787:1;14776:9;14772:17;14765:47;14829:131;14955:4;14829:131;:::i;:::-;14821:139;;14548:419;;;:::o;14973:194::-;15013:4;15033:20;15051:1;15033:20;:::i;:::-;15028:25;;15067:20;15085:1;15067:20;:::i;:::-;15062:25;;15111:1;15108;15104:9;15096:17;;15135:1;15129:4;15126:11;15123:37;;;15140:18;;:::i;:::-;15123:37;14973:194;;;;:::o;15173:191::-;15213:3;15232:20;15250:1;15232:20;:::i;:::-;15227:25;;15266:20;15284:1;15266:20;:::i;:::-;15261:25;;15309:1;15306;15302:9;15295:16;;15330:3;15327:1;15324:10;15321:36;;;15337:18;;:::i;:::-;15321:36;15173:191;;;;:::o;15370:249::-;15510:34;15506:1;15498:6;15494:14;15487:58;15579:32;15574:2;15566:6;15562:15;15555:57;15370:249;:::o;15625:366::-;15767:3;15788:67;15852:2;15847:3;15788:67;:::i;:::-;15781:74;;15864:93;15953:3;15864:93;:::i;:::-;15982:2;15977:3;15973:12;15966:19;;15625:366;;;:::o;15997:419::-;16163:4;16201:2;16190:9;16186:18;16178:26;;16250:9;16244:4;16240:20;16236:1;16225:9;16221:17;16214:47;16278:131;16404:4;16278:131;:::i;:::-;16270:139;;15997:419;;;:::o;16422:177::-;16562:29;16558:1;16550:6;16546:14;16539:53;16422:177;:::o;16605:366::-;16747:3;16768:67;16832:2;16827:3;16768:67;:::i;:::-;16761:74;;16844:93;16933:3;16844:93;:::i;:::-;16962:2;16957:3;16953:12;16946:19;;16605:366;;;:::o;16977:419::-;17143:4;17181:2;17170:9;17166:18;17158:26;;17230:9;17224:4;17220:20;17216:1;17205:9;17201:17;17194:47;17258:131;17384:4;17258:131;:::i;:::-;17250:139;;16977:419;;;:::o;17402:180::-;17450:77;17447:1;17440:88;17547:4;17544:1;17537:15;17571:4;17568:1;17561:15;17588:180;17636:77;17633:1;17626:88;17733:4;17730:1;17723:15;17757:4;17754:1;17747:15;17774:143;17831:5;17862:6;17856:13;17847:22;;17878:33;17905:5;17878:33;:::i;:::-;17774:143;;;;:::o;17923:351::-;17993:6;18042:2;18030:9;18021:7;18017:23;18013:32;18010:119;;;18048:79;;:::i;:::-;18010:119;18168:1;18193:64;18249:7;18240:6;18229:9;18225:22;18193:64;:::i;:::-;18183:74;;18139:128;17923:351;;;;:::o;18280:85::-;18325:7;18354:5;18343:16;;18280:85;;;:::o;18371:158::-;18429:9;18462:61;18480:42;18489:32;18515:5;18489:32;:::i;:::-;18480:42;:::i;:::-;18462:61;:::i;:::-;18449:74;;18371:158;;;:::o;18535:147::-;18630:45;18669:5;18630:45;:::i;:::-;18625:3;18618:58;18535:147;;:::o;18688:114::-;18755:6;18789:5;18783:12;18773:22;;18688:114;;;:::o;18808:184::-;18907:11;18941:6;18936:3;18929:19;18981:4;18976:3;18972:14;18957:29;;18808:184;;;;:::o;18998:132::-;19065:4;19088:3;19080:11;;19118:4;19113:3;19109:14;19101:22;;18998:132;;;:::o;19136:108::-;19213:24;19231:5;19213:24;:::i;:::-;19208:3;19201:37;19136:108;;:::o;19250:179::-;19319:10;19340:46;19382:3;19374:6;19340:46;:::i;:::-;19418:4;19413:3;19409:14;19395:28;;19250:179;;;;:::o;19435:113::-;19505:4;19537;19532:3;19528:14;19520:22;;19435:113;;;:::o;19584:732::-;19703:3;19732:54;19780:5;19732:54;:::i;:::-;19802:86;19881:6;19876:3;19802:86;:::i;:::-;19795:93;;19912:56;19962:5;19912:56;:::i;:::-;19991:7;20022:1;20007:284;20032:6;20029:1;20026:13;20007:284;;;20108:6;20102:13;20135:63;20194:3;20179:13;20135:63;:::i;:::-;20128:70;;20221:60;20274:6;20221:60;:::i;:::-;20211:70;;20067:224;20054:1;20051;20047:9;20042:14;;20007:284;;;20011:14;20307:3;20300:10;;19708:608;;;19584:732;;;;:::o;20322:831::-;20585:4;20623:3;20612:9;20608:19;20600:27;;20637:71;20705:1;20694:9;20690:17;20681:6;20637:71;:::i;:::-;20718:80;20794:2;20783:9;20779:18;20770:6;20718:80;:::i;:::-;20845:9;20839:4;20835:20;20830:2;20819:9;20815:18;20808:48;20873:108;20976:4;20967:6;20873:108;:::i;:::-;20865:116;;20991:72;21059:2;21048:9;21044:18;21035:6;20991:72;:::i;:::-;21073:73;21141:3;21130:9;21126:19;21117:6;21073:73;:::i;:::-;20322:831;;;;;;;;:::o;21159:147::-;21260:11;21297:3;21282:18;;21159:147;;;;:::o;21312:114::-;;:::o;21432:398::-;21591:3;21612:83;21693:1;21688:3;21612:83;:::i;:::-;21605:90;;21704:93;21793:3;21704:93;:::i;:::-;21822:1;21817:3;21813:11;21806:18;;21432:398;;;:::o;21836:379::-;22020:3;22042:147;22185:3;22042:147;:::i;:::-;22035:154;;22206:3;22199:10;;21836:379;;;:::o;22221:807::-;22470:4;22508:3;22497:9;22493:19;22485:27;;22522:71;22590:1;22579:9;22575:17;22566:6;22522:71;:::i;:::-;22603:72;22671:2;22660:9;22656:18;22647:6;22603:72;:::i;:::-;22685:80;22761:2;22750:9;22746:18;22737:6;22685:80;:::i;:::-;22775;22851:2;22840:9;22836:18;22827:6;22775:80;:::i;:::-;22865:73;22933:3;22922:9;22918:19;22909:6;22865:73;:::i;:::-;22948;23016:3;23005:9;23001:19;22992:6;22948:73;:::i;:::-;22221:807;;;;;;;;;:::o;23034:663::-;23122:6;23130;23138;23187:2;23175:9;23166:7;23162:23;23158:32;23155:119;;;23193:79;;:::i;:::-;23155:119;23313:1;23338:64;23394:7;23385:6;23374:9;23370:22;23338:64;:::i;:::-;23328:74;;23284:128;23451:2;23477:64;23533:7;23524:6;23513:9;23509:22;23477:64;:::i;:::-;23467:74;;23422:129;23590:2;23616:64;23672:7;23663:6;23652:9;23648:22;23616:64;:::i;:::-;23606:74;;23561:129;23034:663;;;;;:::o;23703:332::-;23824:4;23862:2;23851:9;23847:18;23839:26;;23875:71;23943:1;23932:9;23928:17;23919:6;23875:71;:::i;:::-;23956:72;24024:2;24013:9;24009:18;24000:6;23956:72;:::i;:::-;23703:332;;;;;:::o;24041:220::-;24181:34;24177:1;24169:6;24165:14;24158:58;24250:3;24245:2;24237:6;24233:15;24226:28;24041:220;:::o;24267:366::-;24409:3;24430:67;24494:2;24489:3;24430:67;:::i;:::-;24423:74;;24506:93;24595:3;24506:93;:::i;:::-;24624:2;24619:3;24615:12;24608:19;;24267:366;;;:::o;24639:419::-;24805:4;24843:2;24832:9;24828:18;24820:26;;24892:9;24886:4;24882:20;24878:1;24867:9;24863:17;24856:47;24920:131;25046:4;24920:131;:::i;:::-;24912:139;;24639:419;;;:::o

Swarm Source

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