ETH Price: $2,504.34 (-0.48%)

Token

ORB3 Protocol (ORB3)
 

Overview

Max Total Supply

25,500,000 ORB3

Holders

88

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
ORB3

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

     ## ##   ### ##   ### ##    ## ##   
    ##   ##   ##  ##   ##  ##  ##   ##  
    ##   ##   ##  ##   ##  ##       ##  
    ##   ##   ## ##    ## ##      ###   
    ##   ##   ## ##    ##  ##       ##  
    ##   ##   ##  ##   ##  ##  ##   ##  
     ## ##   #### ##  ### ##    ## ##   

Telegram: https://link3.to/orb3pro
Twitter:  https://twitter.com/Orb3Tech
Website:  https://orb3.tech

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

}

abstract contract Ownable is Context {

    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library Math {

    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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

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

interface UniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface safeErc20 {
    
    // Optimization Errors for ERC20
    error ERC20InvalidApprover(address Approver);
    error ERC20InvalidSpender(address Sender);
    error ERC20InvalidSender(address Sender);
    error ERC20InvalidReceiver(address Receiver);
    error ERC20ZeroTransfer();

}

contract ORB3 is Context, IERC20, Ownable, safeErc20 {

    using Math for uint256;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public _excludedFromFee;
    mapping (address => bool) public _pairAddress;

    string _name = "ORB3 Protocol";
    string _symbol = "ORB3";
    uint8 _decimals = 9; 

    uint256 _totalSupply = 25_500_000 * 10 ** _decimals;    // ONE Billion Supply

    uint256 public maxTransaction =  _totalSupply.mul(1).div(100);     
    uint256 public maxWallet = _totalSupply.mul(1).div(100);        

    uint256 public swapThreshold = _totalSupply.mul(1).div(100);

    uint256 private _buyliquidityFee = 0;
    uint256 private _buyrewardsFee   = 0;
    uint256 private _buyprojectFee   = 30;

    uint256 private _sellliquidityFee = 0;
    uint256 private _sellrewardsFee   = 0;
    uint256 private _sellprojectFee   = 35;

    // Fee Settings
    uint256 public buyFee = 30;
    uint256 public sellFee = 35;

    uint256 feeDenominator = 100;

    address private marketingWallet = address(0x999c3b0f566B2067C7868e9ed456BE6ce91cd0e3);
    address private rewardWallet    = address(0x999c3b0f566B2067C7868e9ed456BE6ce91cd0e3);
    address private developerWallet;

    bool public swapEnabled = true;
    bool public swapProtection = true;
    bool public LimitsActive = true;
    bool public TradeActive;

    UniswapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        developerWallet = msg.sender;

        UniswapRouter _dexRouter = UniswapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = UniswapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;
        
        _excludedFromFee[address(this)] = true;
        _excludedFromFee[msg.sender] = true;

        _pairAddress[address(dexPair)] = true;

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

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: Exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
    
        if (inSwap) {
            return normalTransfer(sender, recipient, amount);
        }
        else {

            if(!_excludedFromFee[sender] && !_excludedFromFee[recipient] && LimitsActive) {
                require(TradeActive,"Trade Not Active!");
                require(amount <= maxTransaction, "Exceeds maxTxAmount");
                if(!_pairAddress[recipient]) {
                    require(balanceOf(recipient).add(amount) <= maxWallet, "Exceeds maxWallet");
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !_pairAddress[sender] && 
                swapEnabled &&
                !_excludedFromFee[sender] &&
                !_excludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 ToBeReceived = FeeCheckPoint(sender,recipient) ? amount : FeeCalculation(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(ToBeReceived);

            emit Transfer(sender, recipient, ToBeReceived);
            return true;

        }

    }

    function normalTransfer(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 FeeCheckPoint(address sender, address recipient) internal view returns (bool) {
        if(_excludedFromFee[sender] || _excludedFromFee[recipient]) {
            return true;
        }
        else if (_pairAddress[sender] || _pairAddress[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }


    function FeeCalculation(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(_pairAddress[sender]) { 
                feeAmount = amount.mul(buyFee).div(feeDenominator);
            } 
            else if(_pairAddress[recipient]) { 
                feeAmount = amount.mul(sellFee).div(feeDenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }


    function swapBack(uint contractBalance) internal swapping {

        if(swapProtection) contractBalance = swapThreshold;

        uint256 totalShares = buyFee.add(sellFee);
        uint256 _liquidityShare = _buyliquidityFee.add(_sellliquidityFee);
        uint256 _ProjectShare = _buyprojectFee.add(_sellprojectFee);
        // uint256 _rewardShare  = _buyrewardsFee.add(_sellrewardsFee);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountReceived.mul(_ProjectShare).div(totalETHFee);
        uint256 amountETHReward = amountReceived.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0)
            transferToAddressETH(marketingWallet, amountETHMarketing);

        if(amountETHReward > 0)
            transferToAddressETH(developerWallet, amountETHReward);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);

    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }


    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            marketingWallet,
            block.timestamp
        );
    }

    function rescueFunds() external { 
        require(msg.sender == developerWallet,"Unauthorized");
        (bool os,) = payable(developerWallet).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,uint _amount) external {
        require(msg.sender == developerWallet,"Unauthorized");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  developerWallet, _amount));
        require(success, 'Token payment failed');
    }

    function setFee(uint _buyLp, uint _buyReward, uint _buyProject, uint _sellLp, uint _sellReward, uint _sellProject) external onlyOwner {    
        
        _buyliquidityFee = _buyLp;
        _buyrewardsFee   = _buyReward;
        _buyprojectFee   = _buyProject;

        _sellliquidityFee = _sellLp;
        _sellrewardsFee   = _sellReward;
        _sellprojectFee   = _sellProject;

        buyFee = _buyliquidityFee.add(_buyrewardsFee).add(_buyprojectFee);
        sellFee = _sellliquidityFee.add(_sellrewardsFee).add(_sellprojectFee);
    }

    function removeLimits() external onlyOwner { 
        LimitsActive = false;
        maxWallet = _totalSupply; 
        maxTransaction = _totalSupply;     
    }

    function openTrade() external onlyOwner {
        require(!TradeActive,"Already Enabled!");
        TradeActive = true;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        _excludedFromFee[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        maxWallet = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        maxTransaction = newLimit;
    }
    
    function setMarketingWallet(address _newWallet) external onlyOwner {
        marketingWallet = _newWallet;
    }

    function setDeveloperWallet(address _newWallet) external onlyOwner {
        developerWallet = _newWallet;
    }
    
    function setRewardWallet(address _newWallet) external onlyOwner {
        rewardWallet = _newWallet;
    }

    function setSwapSetting(bool _swapenabled, bool _protected) 
        external onlyOwner 
    {
        swapEnabled = _swapenabled;
        swapProtection = _protected;
    }

    function setSwapThreshold(uint _threshold)
        external
        onlyOwner
    {
        swapThreshold = _threshold;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"Approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"Receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"Sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"Sender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"LimitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_pairAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract UniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyLp","type":"uint256"},{"internalType":"uint256","name":"_buyReward","type":"uint256"},{"internalType":"uint256","name":"_buyProject","type":"uint256"},{"internalType":"uint256","name":"_sellLp","type":"uint256"},{"internalType":"uint256","name":"_sellReward","type":"uint256"},{"internalType":"uint256","name":"_sellProject","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapenabled","type":"bool"},{"internalType":"bool","name":"_protected","type":"bool"}],"name":"setSwapSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapProtection","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":"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"}]

60806040526040518060400160405280600d81526020017f4f5242332050726f746f636f6c00000000000000000000000000000000000000815250600590816200004a919062000b29565b506040518060400160405280600481526020017f4f524233000000000000000000000000000000000000000000000000000000008152506006908162000091919062000b29565b50600960075f6101000a81548160ff021916908360ff16021790555060075f9054906101000a900460ff16600a620000ca919062000d96565b6301851960620000db919062000de6565b6008556200010b6064620000fc6001600854620006c660201b90919060201c565b6200074660201b90919060201c565b6009556200013b60646200012c6001600854620006c660201b90919060201c565b6200074660201b90919060201c565b600a556200016b60646200015c6001600854620006c660201b90919060201c565b6200074660201b90919060201c565b600b555f600c555f600d55601e600e555f600f555f6010556023601155601e6012556023601355606460145573999c3b0f566b2067c7868e9ed456be6ce91cd0e360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073999c3b0f566b2067c7868e9ed456be6ce91cd0e360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760146101000a81548160ff0219169083151502179055506001601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff0219169083151502179055503480156200029c575f80fd5b50620002bd620002b16200079760201b60201c565b6200079e60201b60201c565b3360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000385919062000e95565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000411919062000e95565b6040518363ffffffff1660e01b81526004016200043092919062000ed6565b6020604051808303815f875af11580156200044d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000473919062000e95565b60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620006b7919062000f12565b60405180910390a350620010d1565b5f808303620006d8575f905062000740565b5f8284620006e7919062000de6565b9050828482620006f8919062000f5a565b146200073b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007329062001015565b60405180910390fd5b809150505b92915050565b5f6200078f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200085f60201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8083118290620008a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089f9190620010af565b60405180910390fd5b505f8385620008b8919062000f5a565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200094157607f821691505b602082108103620009575762000956620008fc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009bb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200097e565b620009c786836200097e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000a1162000a0b62000a0584620009df565b620009e8565b620009df565b9050919050565b5f819050919050565b62000a2c83620009f1565b62000a4462000a3b8262000a18565b8484546200098a565b825550505050565b5f90565b62000a5a62000a4c565b62000a6781848462000a21565b505050565b5b8181101562000a8e5762000a825f8262000a50565b60018101905062000a6d565b5050565b601f82111562000add5762000aa7816200095d565b62000ab2846200096f565b8101602085101562000ac2578190505b62000ada62000ad1856200096f565b83018262000a6c565b50505b505050565b5f82821c905092915050565b5f62000aff5f198460080262000ae2565b1980831691505092915050565b5f62000b19838362000aee565b9150826002028217905092915050565b62000b3482620008c5565b67ffffffffffffffff81111562000b505762000b4f620008cf565b5b62000b5c825462000929565b62000b6982828562000a92565b5f60209050601f83116001811462000b9f575f841562000b8a578287015190505b62000b96858262000b0c565b86555062000c05565b601f19841662000baf866200095d565b5f5b8281101562000bd85784890151825560018201915060208501945060208101905062000bb1565b8683101562000bf8578489015162000bf4601f89168262000aee565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c975780860481111562000c6f5762000c6e62000c0d565b5b600185161562000c7f5780820291505b808102905062000c8f8562000c3a565b945062000c4f565b94509492505050565b5f8262000cb1576001905062000d83565b8162000cc0575f905062000d83565b816001811462000cd9576002811462000ce45762000d1a565b600191505062000d83565b60ff84111562000cf95762000cf862000c0d565b5b8360020a91508482111562000d135762000d1262000c0d565b5b5062000d83565b5060208310610133831016604e8410600b841016171562000d545782820a90508381111562000d4e5762000d4d62000c0d565b5b62000d83565b62000d63848484600162000c46565b9250905081840481111562000d7d5762000d7c62000c0d565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000da282620009df565b915062000daf8362000d8a565b925062000dde7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ca0565b905092915050565b5f62000df282620009df565b915062000dff83620009df565b925082820262000e0f81620009df565b9150828204841483151762000e295762000e2862000c0d565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e5f8262000e34565b9050919050565b62000e718162000e53565b811462000e7c575f80fd5b50565b5f8151905062000e8f8162000e66565b92915050565b5f6020828403121562000ead5762000eac62000e30565b5b5f62000ebc8482850162000e7f565b91505092915050565b62000ed08162000e53565b82525050565b5f60408201905062000eeb5f83018562000ec5565b62000efa602083018462000ec5565b9392505050565b62000f0c81620009df565b82525050565b5f60208201905062000f275f83018462000f01565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f6682620009df565b915062000f7383620009df565b92508262000f865762000f8562000f2d565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000ffd60218362000f91565b91506200100a8262000fa1565b604082019050919050565b5f6020820190508181035f8301526200102e8162000fef565b9050919050565b5f5b838110156200105457808201518184015260208101905062001037565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200107b82620008c5565b62001087818562000f91565b93506200109981856020860162001035565b620010a4816200105f565b840191505092915050565b5f6020820190508181035f830152620010c981846200106f565b905092915050565b613ecf80620010df5f395ff3fe608060405260043610610228575f3560e01c8063728d41c911610122578063dd62ed3e116100aa578063f242ab411161006e578063f242ab41146107cb578063f2fde38b146107f5578063f8b45b051461081d578063fb201b1d14610847578063fdd24dfe1461085d5761022f565b8063dd62ed3e146106eb578063de96c5bb14610727578063df8408fe14610751578063e6b2603b14610779578063f0e2b1821461078f5761022f565b80639d0014b1116100f15780639d0014b11461060b578063a9059cbb14610633578063bd9a3b6d1461066f578063c3f70b5214610697578063c6c670d0146106c15761022f565b8063728d41c914610579578063751039fc146105a15780638da5cb5b146105b757806395d89b41146105e15761022f565b8063313ce567116101b05780635d098b38116101745780635d098b38146104ad5780636cd56878146104d55780636ddd1713146104fd57806370a0823114610527578063715018a6146105635761022f565b8063313ce567146103e1578063470624021461040b57806357376198146104355780635958621e1461045d5780635c85974f146104855761022f565b80630d29573f116101f75780630d29573f146102ed578063108dfa431461032957806318160ddd1461035157806323b872dd1461037b5780632b14ca56146103b75761022f565b80630445b6671461023357806306fdde031461025d5780630758d92414610287578063095ea7b3146102b15761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b50610247610887565b604051610254919061301e565b60405180910390f35b348015610268575f80fd5b5061027161088d565b60405161027e91906130c1565b60405180910390f35b348015610292575f80fd5b5061029b61091d565b6040516102a8919061315b565b60405180910390f35b3480156102bc575f80fd5b506102d760048036038101906102d291906131dd565b610942565b6040516102e49190613235565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e919061324e565b61095f565b6040516103209190613235565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a91906132a3565b61097c565b005b34801561035c575f80fd5b50610365610a30565b604051610372919061301e565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c91906132e1565b610a39565b6040516103ae9190613235565b60405180910390f35b3480156103c2575f80fd5b506103cb610b2b565b6040516103d8919061301e565b60405180910390f35b3480156103ec575f80fd5b506103f5610b31565b604051610402919061334c565b60405180910390f35b348015610416575f80fd5b5061041f610b46565b60405161042c919061301e565b60405180910390f35b348015610440575f80fd5b5061045b600480360381019061045691906131dd565b610b4c565b005b348015610468575f80fd5b50610483600480360381019061047e919061324e565b610d38565b005b348015610490575f80fd5b506104ab60048036038101906104a69190613365565b610df7565b005b3480156104b8575f80fd5b506104d360048036038101906104ce919061324e565b610e7d565b005b3480156104e0575f80fd5b506104fb60048036038101906104f6919061324e565b610f3c565b005b348015610508575f80fd5b50610511610ffb565b60405161051e9190613235565b60405180910390f35b348015610532575f80fd5b5061054d6004803603810190610548919061324e565b61100e565b60405161055a919061301e565b60405180910390f35b34801561056e575f80fd5b50610577611054565b005b348015610584575f80fd5b5061059f600480360381019061059a9190613365565b6110db565b005b3480156105ac575f80fd5b506105b5611161565b005b3480156105c2575f80fd5b506105cb61120b565b6040516105d8919061339f565b60405180910390f35b3480156105ec575f80fd5b506105f5611232565b60405161060291906130c1565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190613365565b6112c2565b005b34801561063e575f80fd5b50610659600480360381019061065491906131dd565b611348565b6040516106669190613235565b60405180910390f35b34801561067a575f80fd5b50610695600480360381019061069091906133b8565b611366565b005b3480156106a2575f80fd5b506106ab611476565b6040516106b8919061301e565b60405180910390f35b3480156106cc575f80fd5b506106d561147c565b6040516106e29190613235565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c9190613441565b61148d565b60405161071e919061301e565b60405180910390f35b348015610732575f80fd5b5061073b61150f565b6040516107489190613235565b60405180910390f35b34801561075c575f80fd5b506107776004803603810190610772919061347f565b611522565b005b348015610784575f80fd5b5061078d6115f6565b005b34801561079a575f80fd5b506107b560048036038101906107b0919061324e565b611751565b6040516107c29190613235565b60405180910390f35b3480156107d6575f80fd5b506107df61176e565b6040516107ec919061339f565b60405180910390f35b348015610800575f80fd5b5061081b6004803603810190610816919061324e565b611793565b005b348015610828575f80fd5b50610831611889565b60405161083e919061301e565b60405180910390f35b348015610852575f80fd5b5061085b61188f565b005b348015610868575f80fd5b50610871611975565b60405161087e9190613235565b60405180910390f35b600b5481565b60606005805461089c906134ea565b80601f01602080910402602001604051908101604052809291908181526020018280546108c8906134ea565b80156109135780601f106108ea57610100808354040283529160200191610913565b820191905f5260205f20905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61095561094e611988565b848461198f565b6001905092915050565b6003602052805f5260405f205f915054906101000a900460ff1681565b610984611988565b73ffffffffffffffffffffffffffffffffffffffff166109a261120b565b73ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613564565b60405180910390fd5b81601760146101000a81548160ff02191690831515021790555080601760156101000a81548160ff0219169083151502179055505050565b5f600854905090565b5f610a45848484611b56565b50610b2084610a52611988565b610b1b856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ad2611988565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d29092919063ffffffff16565b61198f565b600190509392505050565b60135481565b5f60075f9054906101000a900460ff16905090565b60125481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd2906135cc565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401610c279291906135ea565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610cb19190613655565b5f604051808303815f865af19150503d805f8114610cea576040519150601f19603f3d011682016040523d82523d5f602084013e610cef565b606091505b5050905080610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a906136b5565b60405180910390fd5b505050565b610d40611988565b73ffffffffffffffffffffffffffffffffffffffff16610d5e61120b565b73ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dab90613564565b60405180910390fd5b8060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dff611988565b73ffffffffffffffffffffffffffffffffffffffff16610e1d61120b565b73ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90613564565b60405180910390fd5b8060098190555050565b610e85611988565b73ffffffffffffffffffffffffffffffffffffffff16610ea361120b565b73ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090613564565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f44611988565b73ffffffffffffffffffffffffffffffffffffffff16610f6261120b565b73ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613564565b60405180910390fd5b8060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601760149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61105c611988565b73ffffffffffffffffffffffffffffffffffffffff1661107a61120b565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790613564565b60405180910390fd5b6110d95f612234565b565b6110e3611988565b73ffffffffffffffffffffffffffffffffffffffff1661110161120b565b73ffffffffffffffffffffffffffffffffffffffff1614611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e90613564565b60405180910390fd5b80600a8190555050565b611169611988565b73ffffffffffffffffffffffffffffffffffffffff1661118761120b565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490613564565b60405180910390fd5b5f601760166101000a81548160ff021916908315150217905550600854600a81905550600854600981905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054611241906134ea565b80601f016020809104026020016040519081016040528092919081815260200182805461126d906134ea565b80156112b85780601f1061128f576101008083540402835291602001916112b8565b820191905f5260205f20905b81548152906001019060200180831161129b57829003601f168201915b5050505050905090565b6112ca611988565b73ffffffffffffffffffffffffffffffffffffffff166112e861120b565b73ffffffffffffffffffffffffffffffffffffffff161461133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590613564565b60405180910390fd5b80600b8190555050565b5f61135b611354611988565b8484611b56565b506001905092915050565b61136e611988565b73ffffffffffffffffffffffffffffffffffffffff1661138c61120b565b73ffffffffffffffffffffffffffffffffffffffff16146113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990613564565b60405180910390fd5b85600c8190555084600d8190555083600e8190555082600f819055508160108190555080601181905550611437600e54611429600d54600c546122f590919063ffffffff16565b6122f590919063ffffffff16565b60128190555061146860115461145a601054600f546122f590919063ffffffff16565b6122f590919063ffffffff16565b601381905550505050505050565b60095481565b60178054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601760169054906101000a900460ff1681565b61152a611988565b73ffffffffffffffffffffffffffffffffffffffff1661154861120b565b73ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613564565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c906135cc565b60405180910390fd5b5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516116cb906136f6565b5f6040518083038185875af1925050503d805f8114611705576040519150601f19603f3d011682016040523d82523d5f602084013e61170a565b606091505b505090508061174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590613754565b60405180910390fd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61179b611988565b73ffffffffffffffffffffffffffffffffffffffff166117b961120b565b73ffffffffffffffffffffffffffffffffffffffff161461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690613564565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906137e2565b60405180910390fd5b61188681612234565b50565b600a5481565b611897611988565b73ffffffffffffffffffffffffffffffffffffffff166118b561120b565b73ffffffffffffffffffffffffffffffffffffffff161461190b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190290613564565b60405180910390fd5b60178054906101000a900460ff1615611959576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119509061384a565b60405180910390fd5b60016017806101000a81548160ff021916908315150217905550565b601760159054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119ff575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016119f6919061339f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a6f575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611a66919061339f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b49919061301e565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611bc7575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611bbe919061339f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c37575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c2e919061339f565b60405180910390fd5b5f8203611c70576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601960149054906101000a900460ff1615611c9757611c90848484612352565b90506121cb565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d35575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d4d5750601760169054906101000a900460ff165b15611e935760178054906101000a900460ff16611d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d96906138b2565b60405180910390fd5b600954821115611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb9061391a565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e9257600a54611e5083611e428661100e565b6122f590919063ffffffff16565b1115611e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8890613982565b60405180910390fd5b5b5b5f611e9d3061100e565b90505f600b548210159050808015611ec25750601960149054906101000a900460ff16155b8015611f15575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f2d5750601760149054906101000a900460ff165b8015611f80575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fd3575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fe257611fe18261251c565b5b612069846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d29092919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6120b58787612776565b6120c9576120c48787876128d2565b6120cb565b845b905061211d8160015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f590919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121bb919061301e565b60405180910390a3600193505050505b9392505050565b5f838311158290612219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221091906130c1565b60405180910390fd5b505f838561222791906139cd565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8082846123039190613a00565b905083811015612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f90613a7d565b60405180910390fd5b8091505092915050565b5f6123da826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d29092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061246b8260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612509919061301e565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff021916908315150217905550601760159054906101000a900460ff161561255257600b5490505b5f61256a6013546012546122f590919063ffffffff16565b90505f612584600f54600c546122f590919063ffffffff16565b90505f61259e601154600e546122f590919063ffffffff16565b90505f6125d960026125cb866125bd878a612aeb90919063ffffffff16565b612b6290919063ffffffff16565b612b6290919063ffffffff16565b90505f6125ef8287612bab90919063ffffffff16565b90505f4790506125fe82612bf4565b5f6126128247612bab90919063ffffffff16565b90505f61263b61262c600289612b6290919063ffffffff16565b89612bab90919063ffffffff16565b90505f61267660026126688461265a8c88612aeb90919063ffffffff16565b612b6290919063ffffffff16565b612b6290919063ffffffff16565b90505f61269e836126908a87612aeb90919063ffffffff16565b612b6290919063ffffffff16565b90505f6126c6826126b88588612bab90919063ffffffff16565b612bab90919063ffffffff16565b90505f8211156126fc576126fb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612e63565b5b5f8111156127305761272f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612e63565b5b5f8311801561273e57505f88115b1561274e5761274d8884612eab565b5b50505050505050505050505f601960146101000a81548160ff02191690831515021790555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612812575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561282057600190506128cc565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128bb575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128c8575f90506128cc565b5f90505b92915050565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156129535761294c60145461293e60125486612aeb90919063ffffffff16565b612b6290919063ffffffff16565b90506129cf565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156129ce576129cb6014546129bd60135486612aeb90919063ffffffff16565b612b6290919063ffffffff16565b90505b5b5f811115612ace57612a278160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ac5919061301e565b60405180910390a35b612ae18184612bab90919063ffffffff16565b9150509392505050565b5f808303612afb575f9050612b5c565b5f8284612b089190613a9b565b9050828482612b179190613b09565b14612b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4e90613ba9565b60405180910390fd5b809150505b92915050565b5f612ba383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa5565b905092915050565b5f612bec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121d2565b905092915050565b5f600267ffffffffffffffff811115612c1057612c0f613bc7565b5b604051908082528060200260200182016040528015612c3e5781602001602082028036833780820191505090505b50905030815f81518110612c5557612c54613bf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d1d9190613c35565b81600181518110612d3157612d30613bf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d973060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461198f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612df9959493929190613d50565b5f604051808303815f87803b158015612e10575f80fd5b505af1158015612e22573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612e57929190613da8565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612ea6573d5f803e3d5ffd5b505050565b612ed73060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461198f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f5d96959493929190613dd6565b60606040518083038185885af1158015612f79573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f9e9190613e49565b5050505050565b5f8083118290612feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe291906130c1565b60405180910390fd5b505f8385612ff99190613b09565b9050809150509392505050565b5f819050919050565b61301881613006565b82525050565b5f6020820190506130315f83018461300f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561306e578082015181840152602081019050613053565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61309382613037565b61309d8185613041565b93506130ad818560208601613051565b6130b681613079565b840191505092915050565b5f6020820190508181035f8301526130d98184613089565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61312361311e613119846130e1565b613100565b6130e1565b9050919050565b5f61313482613109565b9050919050565b5f6131458261312a565b9050919050565b6131558161313b565b82525050565b5f60208201905061316e5f83018461314c565b92915050565b5f80fd5b5f613182826130e1565b9050919050565b61319281613178565b811461319c575f80fd5b50565b5f813590506131ad81613189565b92915050565b6131bc81613006565b81146131c6575f80fd5b50565b5f813590506131d7816131b3565b92915050565b5f80604083850312156131f3576131f2613174565b5b5f6132008582860161319f565b9250506020613211858286016131c9565b9150509250929050565b5f8115159050919050565b61322f8161321b565b82525050565b5f6020820190506132485f830184613226565b92915050565b5f6020828403121561326357613262613174565b5b5f6132708482850161319f565b91505092915050565b6132828161321b565b811461328c575f80fd5b50565b5f8135905061329d81613279565b92915050565b5f80604083850312156132b9576132b8613174565b5b5f6132c68582860161328f565b92505060206132d78582860161328f565b9150509250929050565b5f805f606084860312156132f8576132f7613174565b5b5f6133058682870161319f565b93505060206133168682870161319f565b9250506040613327868287016131c9565b9150509250925092565b5f60ff82169050919050565b61334681613331565b82525050565b5f60208201905061335f5f83018461333d565b92915050565b5f6020828403121561337a57613379613174565b5b5f613387848285016131c9565b91505092915050565b61339981613178565b82525050565b5f6020820190506133b25f830184613390565b92915050565b5f805f805f8060c087890312156133d2576133d1613174565b5b5f6133df89828a016131c9565b96505060206133f089828a016131c9565b955050604061340189828a016131c9565b945050606061341289828a016131c9565b935050608061342389828a016131c9565b92505060a061343489828a016131c9565b9150509295509295509295565b5f806040838503121561345757613456613174565b5b5f6134648582860161319f565b92505060206134758582860161319f565b9150509250929050565b5f806040838503121561349557613494613174565b5b5f6134a28582860161319f565b92505060206134b38582860161328f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061350157607f821691505b602082108103613514576135136134bd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61354e602083613041565b91506135598261351a565b602082019050919050565b5f6020820190508181035f83015261357b81613542565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f6135b6600c83613041565b91506135c182613582565b602082019050919050565b5f6020820190508181035f8301526135e3816135aa565b9050919050565b5f6040820190506135fd5f830185613390565b61360a602083018461300f565b9392505050565b5f81519050919050565b5f81905092915050565b5f61362f82613611565b613639818561361b565b9350613649818560208601613051565b80840191505092915050565b5f6136608284613625565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f61369f601483613041565b91506136aa8261366b565b602082019050919050565b5f6020820190508181035f8301526136cc81613693565b9050919050565b50565b5f6136e15f8361361b565b91506136ec826136d3565b5f82019050919050565b5f613700826136d6565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f61373e601483613041565b91506137498261370a565b602082019050919050565b5f6020820190508181035f83015261376b81613732565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6137cc602683613041565b91506137d782613772565b604082019050919050565b5f6020820190508181035f8301526137f9816137c0565b9050919050565b7f416c726561647920456e61626c656421000000000000000000000000000000005f82015250565b5f613834601083613041565b915061383f82613800565b602082019050919050565b5f6020820190508181035f83015261386181613828565b9050919050565b7f5472616465204e6f7420416374697665210000000000000000000000000000005f82015250565b5f61389c601183613041565b91506138a782613868565b602082019050919050565b5f6020820190508181035f8301526138c981613890565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f613904601383613041565b915061390f826138d0565b602082019050919050565b5f6020820190508181035f830152613931816138f8565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f61396c601183613041565b915061397782613938565b602082019050919050565b5f6020820190508181035f83015261399981613960565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139d782613006565b91506139e283613006565b92508282039050818111156139fa576139f96139a0565b5b92915050565b5f613a0a82613006565b9150613a1583613006565b9250828201905080821115613a2d57613a2c6139a0565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a67601b83613041565b9150613a7282613a33565b602082019050919050565b5f6020820190508181035f830152613a9481613a5b565b9050919050565b5f613aa582613006565b9150613ab083613006565b9250828202613abe81613006565b91508282048414831517613ad557613ad46139a0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b1382613006565b9150613b1e83613006565b925082613b2e57613b2d613adc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b93602183613041565b9150613b9e82613b39565b604082019050919050565b5f6020820190508181035f830152613bc081613b87565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613c2f81613189565b92915050565b5f60208284031215613c4a57613c49613174565b5b5f613c5784828501613c21565b91505092915050565b5f819050919050565b5f613c83613c7e613c7984613c60565b613100565b613006565b9050919050565b613c9381613c69565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ccb81613178565b82525050565b5f613cdc8383613cc2565b60208301905092915050565b5f602082019050919050565b5f613cfe82613c99565b613d088185613ca3565b9350613d1383613cb3565b805f5b83811015613d43578151613d2a8882613cd1565b9750613d3583613ce8565b925050600181019050613d16565b5085935050505092915050565b5f60a082019050613d635f83018861300f565b613d706020830187613c8a565b8181036040830152613d828186613cf4565b9050613d916060830185613390565b613d9e608083018461300f565b9695505050505050565b5f604082019050613dbb5f83018561300f565b8181036020830152613dcd8184613cf4565b90509392505050565b5f60c082019050613de95f830189613390565b613df6602083018861300f565b613e036040830187613c8a565b613e106060830186613c8a565b613e1d6080830185613390565b613e2a60a083018461300f565b979650505050505050565b5f81519050613e43816131b3565b92915050565b5f805f60608486031215613e6057613e5f613174565b5b5f613e6d86828701613e35565b9350506020613e7e86828701613e35565b9250506040613e8f86828701613e35565b915050925092509256fea26469706673582212208ab8532147947ebfdf3746fa64716f83ce110f56cdb09e429fe91d99d9dc9ec164736f6c63430008160033

Deployed Bytecode

0x608060405260043610610228575f3560e01c8063728d41c911610122578063dd62ed3e116100aa578063f242ab411161006e578063f242ab41146107cb578063f2fde38b146107f5578063f8b45b051461081d578063fb201b1d14610847578063fdd24dfe1461085d5761022f565b8063dd62ed3e146106eb578063de96c5bb14610727578063df8408fe14610751578063e6b2603b14610779578063f0e2b1821461078f5761022f565b80639d0014b1116100f15780639d0014b11461060b578063a9059cbb14610633578063bd9a3b6d1461066f578063c3f70b5214610697578063c6c670d0146106c15761022f565b8063728d41c914610579578063751039fc146105a15780638da5cb5b146105b757806395d89b41146105e15761022f565b8063313ce567116101b05780635d098b38116101745780635d098b38146104ad5780636cd56878146104d55780636ddd1713146104fd57806370a0823114610527578063715018a6146105635761022f565b8063313ce567146103e1578063470624021461040b57806357376198146104355780635958621e1461045d5780635c85974f146104855761022f565b80630d29573f116101f75780630d29573f146102ed578063108dfa431461032957806318160ddd1461035157806323b872dd1461037b5780632b14ca56146103b75761022f565b80630445b6671461023357806306fdde031461025d5780630758d92414610287578063095ea7b3146102b15761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b50610247610887565b604051610254919061301e565b60405180910390f35b348015610268575f80fd5b5061027161088d565b60405161027e91906130c1565b60405180910390f35b348015610292575f80fd5b5061029b61091d565b6040516102a8919061315b565b60405180910390f35b3480156102bc575f80fd5b506102d760048036038101906102d291906131dd565b610942565b6040516102e49190613235565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e919061324e565b61095f565b6040516103209190613235565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a91906132a3565b61097c565b005b34801561035c575f80fd5b50610365610a30565b604051610372919061301e565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c91906132e1565b610a39565b6040516103ae9190613235565b60405180910390f35b3480156103c2575f80fd5b506103cb610b2b565b6040516103d8919061301e565b60405180910390f35b3480156103ec575f80fd5b506103f5610b31565b604051610402919061334c565b60405180910390f35b348015610416575f80fd5b5061041f610b46565b60405161042c919061301e565b60405180910390f35b348015610440575f80fd5b5061045b600480360381019061045691906131dd565b610b4c565b005b348015610468575f80fd5b50610483600480360381019061047e919061324e565b610d38565b005b348015610490575f80fd5b506104ab60048036038101906104a69190613365565b610df7565b005b3480156104b8575f80fd5b506104d360048036038101906104ce919061324e565b610e7d565b005b3480156104e0575f80fd5b506104fb60048036038101906104f6919061324e565b610f3c565b005b348015610508575f80fd5b50610511610ffb565b60405161051e9190613235565b60405180910390f35b348015610532575f80fd5b5061054d6004803603810190610548919061324e565b61100e565b60405161055a919061301e565b60405180910390f35b34801561056e575f80fd5b50610577611054565b005b348015610584575f80fd5b5061059f600480360381019061059a9190613365565b6110db565b005b3480156105ac575f80fd5b506105b5611161565b005b3480156105c2575f80fd5b506105cb61120b565b6040516105d8919061339f565b60405180910390f35b3480156105ec575f80fd5b506105f5611232565b60405161060291906130c1565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190613365565b6112c2565b005b34801561063e575f80fd5b50610659600480360381019061065491906131dd565b611348565b6040516106669190613235565b60405180910390f35b34801561067a575f80fd5b50610695600480360381019061069091906133b8565b611366565b005b3480156106a2575f80fd5b506106ab611476565b6040516106b8919061301e565b60405180910390f35b3480156106cc575f80fd5b506106d561147c565b6040516106e29190613235565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c9190613441565b61148d565b60405161071e919061301e565b60405180910390f35b348015610732575f80fd5b5061073b61150f565b6040516107489190613235565b60405180910390f35b34801561075c575f80fd5b506107776004803603810190610772919061347f565b611522565b005b348015610784575f80fd5b5061078d6115f6565b005b34801561079a575f80fd5b506107b560048036038101906107b0919061324e565b611751565b6040516107c29190613235565b60405180910390f35b3480156107d6575f80fd5b506107df61176e565b6040516107ec919061339f565b60405180910390f35b348015610800575f80fd5b5061081b6004803603810190610816919061324e565b611793565b005b348015610828575f80fd5b50610831611889565b60405161083e919061301e565b60405180910390f35b348015610852575f80fd5b5061085b61188f565b005b348015610868575f80fd5b50610871611975565b60405161087e9190613235565b60405180910390f35b600b5481565b60606005805461089c906134ea565b80601f01602080910402602001604051908101604052809291908181526020018280546108c8906134ea565b80156109135780601f106108ea57610100808354040283529160200191610913565b820191905f5260205f20905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61095561094e611988565b848461198f565b6001905092915050565b6003602052805f5260405f205f915054906101000a900460ff1681565b610984611988565b73ffffffffffffffffffffffffffffffffffffffff166109a261120b565b73ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613564565b60405180910390fd5b81601760146101000a81548160ff02191690831515021790555080601760156101000a81548160ff0219169083151502179055505050565b5f600854905090565b5f610a45848484611b56565b50610b2084610a52611988565b610b1b856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ad2611988565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d29092919063ffffffff16565b61198f565b600190509392505050565b60135481565b5f60075f9054906101000a900460ff16905090565b60125481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd2906135cc565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401610c279291906135ea565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610cb19190613655565b5f604051808303815f865af19150503d805f8114610cea576040519150601f19603f3d011682016040523d82523d5f602084013e610cef565b606091505b5050905080610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a906136b5565b60405180910390fd5b505050565b610d40611988565b73ffffffffffffffffffffffffffffffffffffffff16610d5e61120b565b73ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dab90613564565b60405180910390fd5b8060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dff611988565b73ffffffffffffffffffffffffffffffffffffffff16610e1d61120b565b73ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90613564565b60405180910390fd5b8060098190555050565b610e85611988565b73ffffffffffffffffffffffffffffffffffffffff16610ea361120b565b73ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090613564565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f44611988565b73ffffffffffffffffffffffffffffffffffffffff16610f6261120b565b73ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613564565b60405180910390fd5b8060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601760149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61105c611988565b73ffffffffffffffffffffffffffffffffffffffff1661107a61120b565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790613564565b60405180910390fd5b6110d95f612234565b565b6110e3611988565b73ffffffffffffffffffffffffffffffffffffffff1661110161120b565b73ffffffffffffffffffffffffffffffffffffffff1614611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e90613564565b60405180910390fd5b80600a8190555050565b611169611988565b73ffffffffffffffffffffffffffffffffffffffff1661118761120b565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490613564565b60405180910390fd5b5f601760166101000a81548160ff021916908315150217905550600854600a81905550600854600981905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054611241906134ea565b80601f016020809104026020016040519081016040528092919081815260200182805461126d906134ea565b80156112b85780601f1061128f576101008083540402835291602001916112b8565b820191905f5260205f20905b81548152906001019060200180831161129b57829003601f168201915b5050505050905090565b6112ca611988565b73ffffffffffffffffffffffffffffffffffffffff166112e861120b565b73ffffffffffffffffffffffffffffffffffffffff161461133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590613564565b60405180910390fd5b80600b8190555050565b5f61135b611354611988565b8484611b56565b506001905092915050565b61136e611988565b73ffffffffffffffffffffffffffffffffffffffff1661138c61120b565b73ffffffffffffffffffffffffffffffffffffffff16146113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990613564565b60405180910390fd5b85600c8190555084600d8190555083600e8190555082600f819055508160108190555080601181905550611437600e54611429600d54600c546122f590919063ffffffff16565b6122f590919063ffffffff16565b60128190555061146860115461145a601054600f546122f590919063ffffffff16565b6122f590919063ffffffff16565b601381905550505050505050565b60095481565b60178054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601760169054906101000a900460ff1681565b61152a611988565b73ffffffffffffffffffffffffffffffffffffffff1661154861120b565b73ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159590613564565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c906135cc565b60405180910390fd5b5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516116cb906136f6565b5f6040518083038185875af1925050503d805f8114611705576040519150601f19603f3d011682016040523d82523d5f602084013e61170a565b606091505b505090508061174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590613754565b60405180910390fd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61179b611988565b73ffffffffffffffffffffffffffffffffffffffff166117b961120b565b73ffffffffffffffffffffffffffffffffffffffff161461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690613564565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906137e2565b60405180910390fd5b61188681612234565b50565b600a5481565b611897611988565b73ffffffffffffffffffffffffffffffffffffffff166118b561120b565b73ffffffffffffffffffffffffffffffffffffffff161461190b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190290613564565b60405180910390fd5b60178054906101000a900460ff1615611959576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119509061384a565b60405180910390fd5b60016017806101000a81548160ff021916908315150217905550565b601760159054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119ff575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016119f6919061339f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a6f575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611a66919061339f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b49919061301e565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611bc7575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611bbe919061339f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c37575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c2e919061339f565b60405180910390fd5b5f8203611c70576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601960149054906101000a900460ff1615611c9757611c90848484612352565b90506121cb565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d35575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d4d5750601760169054906101000a900460ff165b15611e935760178054906101000a900460ff16611d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d96906138b2565b60405180910390fd5b600954821115611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb9061391a565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e9257600a54611e5083611e428661100e565b6122f590919063ffffffff16565b1115611e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8890613982565b60405180910390fd5b5b5b5f611e9d3061100e565b90505f600b548210159050808015611ec25750601960149054906101000a900460ff16155b8015611f15575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f2d5750601760149054906101000a900460ff165b8015611f80575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fd3575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fe257611fe18261251c565b5b612069846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d29092919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6120b58787612776565b6120c9576120c48787876128d2565b6120cb565b845b905061211d8160015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f590919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121bb919061301e565b60405180910390a3600193505050505b9392505050565b5f838311158290612219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221091906130c1565b60405180910390fd5b505f838561222791906139cd565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8082846123039190613a00565b905083811015612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f90613a7d565b60405180910390fd5b8091505092915050565b5f6123da826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d29092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061246b8260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612509919061301e565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff021916908315150217905550601760159054906101000a900460ff161561255257600b5490505b5f61256a6013546012546122f590919063ffffffff16565b90505f612584600f54600c546122f590919063ffffffff16565b90505f61259e601154600e546122f590919063ffffffff16565b90505f6125d960026125cb866125bd878a612aeb90919063ffffffff16565b612b6290919063ffffffff16565b612b6290919063ffffffff16565b90505f6125ef8287612bab90919063ffffffff16565b90505f4790506125fe82612bf4565b5f6126128247612bab90919063ffffffff16565b90505f61263b61262c600289612b6290919063ffffffff16565b89612bab90919063ffffffff16565b90505f61267660026126688461265a8c88612aeb90919063ffffffff16565b612b6290919063ffffffff16565b612b6290919063ffffffff16565b90505f61269e836126908a87612aeb90919063ffffffff16565b612b6290919063ffffffff16565b90505f6126c6826126b88588612bab90919063ffffffff16565b612bab90919063ffffffff16565b90505f8211156126fc576126fb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612e63565b5b5f8111156127305761272f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612e63565b5b5f8311801561273e57505f88115b1561274e5761274d8884612eab565b5b50505050505050505050505f601960146101000a81548160ff02191690831515021790555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612812575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561282057600190506128cc565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128bb575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128c8575f90506128cc565b5f90505b92915050565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156129535761294c60145461293e60125486612aeb90919063ffffffff16565b612b6290919063ffffffff16565b90506129cf565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156129ce576129cb6014546129bd60135486612aeb90919063ffffffff16565b612b6290919063ffffffff16565b90505b5b5f811115612ace57612a278160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ac5919061301e565b60405180910390a35b612ae18184612bab90919063ffffffff16565b9150509392505050565b5f808303612afb575f9050612b5c565b5f8284612b089190613a9b565b9050828482612b179190613b09565b14612b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4e90613ba9565b60405180910390fd5b809150505b92915050565b5f612ba383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa5565b905092915050565b5f612bec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121d2565b905092915050565b5f600267ffffffffffffffff811115612c1057612c0f613bc7565b5b604051908082528060200260200182016040528015612c3e5781602001602082028036833780820191505090505b50905030815f81518110612c5557612c54613bf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d1d9190613c35565b81600181518110612d3157612d30613bf4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d973060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461198f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612df9959493929190613d50565b5f604051808303815f87803b158015612e10575f80fd5b505af1158015612e22573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612e57929190613da8565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612ea6573d5f803e3d5ffd5b505050565b612ed73060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461198f565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f5d96959493929190613dd6565b60606040518083038185885af1158015612f79573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f9e9190613e49565b5050505050565b5f8083118290612feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe291906130c1565b60405180910390fd5b505f8385612ff99190613b09565b9050809150509392505050565b5f819050919050565b61301881613006565b82525050565b5f6020820190506130315f83018461300f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561306e578082015181840152602081019050613053565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61309382613037565b61309d8185613041565b93506130ad818560208601613051565b6130b681613079565b840191505092915050565b5f6020820190508181035f8301526130d98184613089565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61312361311e613119846130e1565b613100565b6130e1565b9050919050565b5f61313482613109565b9050919050565b5f6131458261312a565b9050919050565b6131558161313b565b82525050565b5f60208201905061316e5f83018461314c565b92915050565b5f80fd5b5f613182826130e1565b9050919050565b61319281613178565b811461319c575f80fd5b50565b5f813590506131ad81613189565b92915050565b6131bc81613006565b81146131c6575f80fd5b50565b5f813590506131d7816131b3565b92915050565b5f80604083850312156131f3576131f2613174565b5b5f6132008582860161319f565b9250506020613211858286016131c9565b9150509250929050565b5f8115159050919050565b61322f8161321b565b82525050565b5f6020820190506132485f830184613226565b92915050565b5f6020828403121561326357613262613174565b5b5f6132708482850161319f565b91505092915050565b6132828161321b565b811461328c575f80fd5b50565b5f8135905061329d81613279565b92915050565b5f80604083850312156132b9576132b8613174565b5b5f6132c68582860161328f565b92505060206132d78582860161328f565b9150509250929050565b5f805f606084860312156132f8576132f7613174565b5b5f6133058682870161319f565b93505060206133168682870161319f565b9250506040613327868287016131c9565b9150509250925092565b5f60ff82169050919050565b61334681613331565b82525050565b5f60208201905061335f5f83018461333d565b92915050565b5f6020828403121561337a57613379613174565b5b5f613387848285016131c9565b91505092915050565b61339981613178565b82525050565b5f6020820190506133b25f830184613390565b92915050565b5f805f805f8060c087890312156133d2576133d1613174565b5b5f6133df89828a016131c9565b96505060206133f089828a016131c9565b955050604061340189828a016131c9565b945050606061341289828a016131c9565b935050608061342389828a016131c9565b92505060a061343489828a016131c9565b9150509295509295509295565b5f806040838503121561345757613456613174565b5b5f6134648582860161319f565b92505060206134758582860161319f565b9150509250929050565b5f806040838503121561349557613494613174565b5b5f6134a28582860161319f565b92505060206134b38582860161328f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061350157607f821691505b602082108103613514576135136134bd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61354e602083613041565b91506135598261351a565b602082019050919050565b5f6020820190508181035f83015261357b81613542565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f6135b6600c83613041565b91506135c182613582565b602082019050919050565b5f6020820190508181035f8301526135e3816135aa565b9050919050565b5f6040820190506135fd5f830185613390565b61360a602083018461300f565b9392505050565b5f81519050919050565b5f81905092915050565b5f61362f82613611565b613639818561361b565b9350613649818560208601613051565b80840191505092915050565b5f6136608284613625565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f61369f601483613041565b91506136aa8261366b565b602082019050919050565b5f6020820190508181035f8301526136cc81613693565b9050919050565b50565b5f6136e15f8361361b565b91506136ec826136d3565b5f82019050919050565b5f613700826136d6565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f61373e601483613041565b91506137498261370a565b602082019050919050565b5f6020820190508181035f83015261376b81613732565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6137cc602683613041565b91506137d782613772565b604082019050919050565b5f6020820190508181035f8301526137f9816137c0565b9050919050565b7f416c726561647920456e61626c656421000000000000000000000000000000005f82015250565b5f613834601083613041565b915061383f82613800565b602082019050919050565b5f6020820190508181035f83015261386181613828565b9050919050565b7f5472616465204e6f7420416374697665210000000000000000000000000000005f82015250565b5f61389c601183613041565b91506138a782613868565b602082019050919050565b5f6020820190508181035f8301526138c981613890565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f613904601383613041565b915061390f826138d0565b602082019050919050565b5f6020820190508181035f830152613931816138f8565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f61396c601183613041565b915061397782613938565b602082019050919050565b5f6020820190508181035f83015261399981613960565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139d782613006565b91506139e283613006565b92508282039050818111156139fa576139f96139a0565b5b92915050565b5f613a0a82613006565b9150613a1583613006565b9250828201905080821115613a2d57613a2c6139a0565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a67601b83613041565b9150613a7282613a33565b602082019050919050565b5f6020820190508181035f830152613a9481613a5b565b9050919050565b5f613aa582613006565b9150613ab083613006565b9250828202613abe81613006565b91508282048414831517613ad557613ad46139a0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b1382613006565b9150613b1e83613006565b925082613b2e57613b2d613adc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b93602183613041565b9150613b9e82613b39565b604082019050919050565b5f6020820190508181035f830152613bc081613b87565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613c2f81613189565b92915050565b5f60208284031215613c4a57613c49613174565b5b5f613c5784828501613c21565b91505092915050565b5f819050919050565b5f613c83613c7e613c7984613c60565b613100565b613006565b9050919050565b613c9381613c69565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ccb81613178565b82525050565b5f613cdc8383613cc2565b60208301905092915050565b5f602082019050919050565b5f613cfe82613c99565b613d088185613ca3565b9350613d1383613cb3565b805f5b83811015613d43578151613d2a8882613cd1565b9750613d3583613ce8565b925050600181019050613d16565b5085935050505092915050565b5f60a082019050613d635f83018861300f565b613d706020830187613c8a565b8181036040830152613d828186613cf4565b9050613d916060830185613390565b613d9e608083018461300f565b9695505050505050565b5f604082019050613dbb5f83018561300f565b8181036020830152613dcd8184613cf4565b90509392505050565b5f60c082019050613de95f830189613390565b613df6602083018861300f565b613e036040830187613c8a565b613e106060830186613c8a565b613e1d6080830185613390565b613e2a60a083018461300f565b979650505050505050565b5f81519050613e43816131b3565b92915050565b5f805f60608486031215613e6057613e5f613174565b5b5f613e6d86828701613e35565b9350506020613e7e86828701613e35565b9250506040613e8f86828701613e35565b915050925092509256fea26469706673582212208ab8532147947ebfdf3746fa64716f83ce110f56cdb09e429fe91d99d9dc9ec164736f6c63430008160033

Deployed Bytecode Sourcemap

4854:12659:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7233:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6343:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7900:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5074:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17192:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7510:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8719:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5899:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7419:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5866:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15277:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17076:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16713:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16828:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16950;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6196:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7618:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2038:94;;;;;;;;;;;;;:::i;:::-;;16600:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16163:164;;;;;;;;;;;;;:::i;:::-;;1729:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7324;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17378:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8544:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15599:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5365:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6311:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7749:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6273:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16471:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15032:237;;;;;;;;;;;;;:::i;:::-;;5130:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6380:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2140:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5438:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16335:128;;;;;;;;;;;;;:::i;:::-;;6233:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5510:59;;;;:::o;7233:83::-;7270:13;7303:5;7296:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7233:83;:::o;6343:30::-;;;;;;;;;;;;;:::o;7900:161::-;7975:4;7992:39;8001:12;:10;:12::i;:::-;8015:7;8024:6;7992:8;:39::i;:::-;8049:4;8042:11;;7900:161;;;;:::o;5074:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17192:178::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17312:12:::1;17298:11;;:26;;;;;;;;;;;;;;;;;;17352:10;17335:14;;:27;;;;;;;;;;;;;;;;;;17192:178:::0;;:::o;7510:100::-;7563:7;7590:12;;7583:19;;7510:100;:::o;8719:297::-;8817:4;8834:36;8844:6;8852:9;8863:6;8834:9;:36::i;:::-;;8881:105;8890:6;8898:12;:10;:12::i;:::-;8912:73;8950:6;8912:73;;;;;;;;;;;;;;;;;:11;:19;8924:6;8912:19;;;;;;;;;;;;;;;:33;8932:12;:10;:12::i;:::-;8912:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;8881:8;:105::i;:::-;9004:4;8997:11;;8719:297;;;;;:::o;5899:27::-;;;;:::o;7419:83::-;7460:5;7485:9;;;;;;;;;;;7478:16;;7419:83;:::o;5866:26::-;;;;:::o;15277:314::-;15370:15;;;;;;;;;;;15356:29;;:10;:29;;;15348:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;15413:12;15439:6;15431:20;;15506:15;;;;;;;;;;;15523:7;15452:79;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15431:101;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15412:120;;;15551:7;15543:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;15337:254;15277:314;;:::o;17076:108::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17166:10:::1;17151:12;;:25;;;;;;;;;;;;;;;;;;17076:108:::0;:::o;16713:103::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16800:8:::1;16783:14;:25;;;;16713:103:::0;:::o;16828:114::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16924:10:::1;16906:15;;:28;;;;;;;;;;;;;;;;;;16828:114:::0;:::o;16950:::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17046:10:::1;17028:15;;:28;;;;;;;;;;;;;;;;;;16950:114:::0;:::o;6196:30::-;;;;;;;;;;;;;:::o;7618:123::-;7684:7;7710:9;:18;7720:7;7710:18;;;;;;;;;;;;;;;;7703:25;;7618:123;;;:::o;2038:94::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2103:21:::1;2121:1;2103:9;:21::i;:::-;2038:94::o:0;16600:105::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16689:8:::1;16677:9;:20;;;;16600:105:::0;:::o;16163:164::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16233:5:::1;16218:12;;:20;;;;;;;;;;;;;;;;;;16261:12;;16249:9;:24;;;;16302:12;;16285:14;:29;;;;16163:164::o:0;1729:87::-;1775:7;1802:6;;;;;;;;;;;1795:13;;1729:87;:::o;7324:::-;7363:13;7396:7;7389:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7324:87;:::o;17378:130::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17490:10:::1;17474:13;:26;;;;17378:130:::0;:::o;8544:167::-;8622:4;8639:42;8649:12;:10;:12::i;:::-;8663:9;8674:6;8639:9;:42::i;:::-;;8699:4;8692:11;;8544:167;;;;:::o;15599:556::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15777:6:::1;15758:16;:25;;;;15813:10;15794:14;:29;;;;15853:11;15834:14;:30;;;;15897:7;15877:17;:27;;;;15935:11;15915:15;:31;;;;15977:12;15957:15;:32;;;;16011:56;16052:14;;16011:36;16032:14;;16011:16;;:20;;:36;;;;:::i;:::-;:40;;:56;;;;:::i;:::-;16002:6;:65;;;;16088:59;16131:15;;16088:38;16110:15;;16088:17;;:21;;:38;;;;:::i;:::-;:42;;:59;;;;:::i;:::-;16078:7;:69;;;;15599:556:::0;;;;;;:::o;5365:61::-;;;;:::o;6311:23::-;;;;;;;;;;;;:::o;7749:143::-;7830:7;7857:11;:18;7869:5;7857:18;;;;;;;;;;;;;;;:27;7876:7;7857:27;;;;;;;;;;;;;;;;7850:34;;7749:143;;;;:::o;6273:31::-;;;;;;;;;;;;;:::o;16471:121::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16577:7:::1;16552:16;:22;16569:4;16552:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16471:121:::0;;:::o;15032:237::-;15098:15;;;;;;;;;;;15084:29;;:10;:29;;;15076:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;15141:7;15161:15;;;;;;;;;;;15153:29;;15190:21;15153:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15140:76;;;15235:2;15227:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;15064:205;15032:237::o;5130:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;6380:22::-;;;;;;;;;;;;;:::o;2140:229::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2263:1:::1;2243:22;;:8;:22;;::::0;2221:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2342:19;2352:8;2342:9;:19::i;:::-;2140:229:::0;:::o;5438:55::-;;;;:::o;16335:128::-;1961:12;:10;:12::i;:::-;1950:23;;:7;:5;:7::i;:::-;:23;;;1942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16395:11:::1;::::0;::::1;;;;;;;;16394:12;16386:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;16451:4;16437:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;16335:128::o:0;6233:33::-;;;;;;;;;;;;;:::o;512:98::-;565:7;592:10;585:17;;512:98;:::o;8069:382::-;8175:1;8158:19;;:5;:19;;;8154:91;;8230:1;8201:32;;;;;;;;;;;:::i;:::-;;;;;;;;8154:91;8278:1;8259:21;;:7;:21;;;8255:92;;8332:1;8304:31;;;;;;;;;;;:::i;:::-;;;;;;;;8255:92;8389:6;8359:11;:18;8371:5;8359:18;;;;;;;;;;;;;;;:27;8378:7;8359:27;;;;;;;;;;;;;;;:36;;;;8427:7;8411:32;;8420:5;8411:32;;;8436:6;8411:32;;;;;;:::i;:::-;;;;;;;;8069:382;;;:::o;9024:1812::-;9111:4;9152:1;9134:20;;:6;:20;;;9130:90;;9205:1;9178:30;;;;;;;;;;;:::i;:::-;;;;;;;;9130:90;9255:1;9234:23;;:9;:23;;;9230:95;;9310:1;9281:32;;;;;;;;;;;:::i;:::-;;;;;;;;9230:95;9348:1;9338:6;:11;9335:69;;9373:19;;;;;;;;;;;;;;9335:69;9424:6;;;;;;;;;;;9420:1407;;;9454:41;9469:6;9477:9;9488:6;9454:14;:41::i;:::-;9447:48;;;;9420:1407;9543:16;:24;9560:6;9543:24;;;;;;;;;;;;;;;;;;;;;;;;;9542:25;:57;;;;;9572:16;:27;9589:9;9572:27;;;;;;;;;;;;;;;;;;;;;;;;;9571:28;9542:57;:73;;;;;9603:12;;;;;;;;;;;9542:73;9539:393;;;9644:11;;;;;;;;;;9636:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;9713:14;;9703:6;:24;;9695:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9774:12;:23;9787:9;9774:23;;;;;;;;;;;;;;;;;;;;;;;;;9770:147;;9866:9;;9830:32;9855:6;9830:20;9840:9;9830;:20::i;:::-;:24;;:32;;;;:::i;:::-;:45;;9822:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9770:147;9539:393;9948:28;9979:24;9997:4;9979:9;:24::i;:::-;9948:55;;10018:28;10073:13;;10049:20;:37;;10018:68;;10125:23;:52;;;;;10171:6;;;;;;;;;;;10170:7;10125:52;:95;;;;;10200:12;:20;10213:6;10200:20;;;;;;;;;;;;;;;;;;;;;;;;;10199:21;10125:95;:128;;;;;10242:11;;;;;;;;;;;10125:128;:174;;;;;10275:16;:24;10292:6;10275:24;;;;;;;;;;;;;;;;;;;;;;;;;10274:25;10125:174;:223;;;;;10321:16;:27;10338:9;10321:27;;;;;;;;;;;;;;;;;;;;;;;;;10320:28;10125:223;10103:330;;;10387:30;10396:20;10387:8;:30::i;:::-;10103:330;10469:53;10491:6;10469:53;;;;;;;;;;;;;;;;;:9;:17;10479:6;10469:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10449:9;:17;10459:6;10449:17;;;;;;;;;;;;;;;:73;;;;10539:20;10562:31;10576:6;10583:9;10562:13;:31::i;:::-;:84;;10605:41;10620:6;10628:9;10639:6;10605:14;:41::i;:::-;10562:84;;;10596:6;10562:84;10539:107;;10686:38;10711:12;10686:9;:20;10696:9;10686:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;10663:9;:20;10673:9;10663:20;;;;;;;;;;;;;;;:61;;;;10763:9;10746:41;;10755:6;10746:41;;;10774:12;10746:41;;;;;;:::i;:::-;;;;;;;;10809:4;10802:11;;;;;9024:1812;;;;;;:::o;2912:192::-;2998:7;3031:1;3026;:6;;3034:12;3018:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3058:9;3074:1;3070;:5;;;;:::i;:::-;3058:17;;3095:1;3088:8;;;2912:192;;;;;:::o;2377:173::-;2433:16;2452:6;;;;;;;;;;;2433:25;;2478:8;2469:6;;:17;;;;;;;;;;;;;;;;;;2533:8;2502:40;;2523:8;2502:40;;;;;;;;;;;;2422:128;2377:173;:::o;2579:181::-;2637:7;2657:9;2673:1;2669;:5;;;;:::i;:::-;2657:17;;2698:1;2693;:6;;2685:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2751:1;2744:8;;;2579:181;;;;:::o;10844:330::-;10937:4;10974:53;10996:6;10974:53;;;;;;;;;;;;;;;;;:9;:17;10984:6;10974:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10954:9;:17;10964:6;10954:17;;;;;;;;;;;;;;;:73;;;;11061:32;11086:6;11061:9;:20;11071:9;11061:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11038:9;:20;11048:9;11038:20;;;;;;;;;;;;;;;:55;;;;11126:9;11109:35;;11118:6;11109:35;;;11137:6;11109:35;;;;;;:::i;:::-;;;;;;;;11162:4;11155:11;;10844:330;;;;;:::o;12267:1447::-;6471:4;6462:6;;:13;;;;;;;;;;;;;;;;;;12341:14:::1;;;;;;;;;;;12338:50;;;12375:13;;12357:31;;12338:50;12401:19;12423;12434:7;;12423:6;;:10;;:19;;;;:::i;:::-;12401:41;;12453:23;12479:39;12500:17;;12479:16;;:20;;:39;;;;:::i;:::-;12453:65;;12529:21;12553:35;12572:15;;12553:14;;:18;;:35;;;;:::i;:::-;12529:59;;12674:19;12696:60;12754:1;12696:53;12737:11;12696:36;12716:15;12696;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;12674:82;;12767:21;12791:32;12811:11;12791:15;:19;;:32;;;;:::i;:::-;12767:56;;12836:22;12861:21;12836:46;;12893:31;12910:13;12893:16;:31::i;:::-;12935:22;12960:41;12986:14;12960:21;:25;;:41;;;;:::i;:::-;12935:66;;13014:19;13036:39;13052:22;13072:1;13052:15;:19;;:22;;;;:::i;:::-;13036:11;:15;;:39;;;;:::i;:::-;13014:61;;13096:26;13125:59;13182:1;13125:52;13165:11;13125:35;13144:15;13125:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;13096:88;;13195:26;13224:50;13262:11;13224:33;13243:13;13224:14;:18;;:33;;;;:::i;:::-;:37;;:50;;;;:::i;:::-;13195:79;;13285:23;13311:62;13354:18;13311:38;13330:18;13311:14;:18;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;13285:88;;13410:1;13389:18;:22;13386:97;;;13426:57;13447:15;;;;;;;;;;;13464:18;13426:20;:57::i;:::-;13386:97;13517:1;13499:15;:19;13496:91;;;13533:54;13554:15;;;;;;;;;;;13571;13533:20;:54::i;:::-;13496:91;13624:1;13603:18;:22;:41;;;;;13643:1;13629:11;:15;13603:41;13600:104;;;13659:45;13672:11;13685:18;13659:12;:45::i;:::-;13600:104;12325:1389;;;;;;;;;;;6507:5:::0;6498:6;;:14;;;;;;;;;;;;;;;;;;12267:1447;:::o;11186:364::-;11267:4;11287:16;:24;11304:6;11287:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;11315:16;:27;11332:9;11315:27;;;;;;;;;;;;;;;;;;;;;;;;;11287:55;11284:259;;;11366:4;11359:11;;;;11284:259;11401:12;:20;11414:6;11401:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;11425:12;:23;11438:9;11425:23;;;;;;;;;;;;;;;;;;;;;;;;;11401:47;11397:146;;;11472:5;11465:12;;;;11397:146;11526:5;11519:12;;11186:364;;;;;:::o;11560:697::-;11653:7;11683:14;11740:12;:20;11753:6;11740:20;;;;;;;;;;;;;;;;;;;;;;;;;11737:246;;;11794:38;11817:14;;11794:18;11805:6;;11794;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;11782:50;;11737:246;;;11871:12;:23;11884:9;11871:23;;;;;;;;;;;;;;;;;;;;;;;;;11868:115;;;11928:39;11952:14;;11928:19;11939:7;;11928:6;:10;;:19;;;;:::i;:::-;:23;;:39;;;;:::i;:::-;11916:51;;11868:115;11737:246;12014:1;12002:9;:13;11999:185;;;12063:39;12092:9;12063;:24;12081:4;12063:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12036:9;:24;12054:4;12036:24;;;;;;;;;;;;;;;:66;;;;12151:4;12126:42;;12135:6;12126:42;;;12158:9;12126:42;;;;;;:::i;:::-;;;;;;;;11999:185;12207:21;12218:9;12207:6;:10;;:21;;;;:::i;:::-;12200:28;;;11560:697;;;;;:::o;3112:250::-;3170:7;3199:1;3194;:6;3190:47;;3224:1;3217:8;;;;3190:47;3249:9;3265:1;3261;:5;;;;:::i;:::-;3249:17;;3294:1;3289;3285;:5;;;;:::i;:::-;:10;3277:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3353:1;3346:8;;;3112:250;;;;;:::o;3370:132::-;3428:7;3455:39;3459:1;3462;3455:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3448:46;;3370:132;;;;:::o;2768:136::-;2826:7;2853:43;2857:1;2860;2853:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2846:50;;2768:136;;;;:::o;13857:648::-;13983:21;14021:1;14007:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13983:40;;14052:4;14034;14039:1;14034:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14078:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14068:4;14073:1;14068:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;14107:56;14124:4;14139:9;;;;;;;;;;;14151:11;14107:8;:56::i;:::-;14202:9;;;;;;;;;;;:60;;;14277:11;14303:1;14347:4;14374;14410:15;14202:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14462:35;14479:11;14492:4;14462:35;;;;;;;:::i;:::-;;;;;;;;13912:593;13857:648;:::o;13722:127::-;13814:9;13806:27;;:35;13834:6;13806:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13722:127;;:::o;14515:509::-;14663:56;14680:4;14695:9;;;;;;;;;;;14707:11;14663:8;:56::i;:::-;14762:9;;;;;;;;;;;:25;;;14795:9;14828:4;14848:11;14874:1;14917;14960:15;;;;;;;;;;;14990;14762:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14515:509;;:::o;3510:278::-;3596:7;3628:1;3624;:5;3631:12;3616:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3655:9;3671:1;3667;:5;;;;:::i;:::-;3655:17;;3779:1;3772:8;;;3510:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:60::-;1944:3;1965:5;1958:12;;1916:60;;;:::o;1982:142::-;2032:9;2065:53;2083:34;2092:24;2110:5;2092:24;:::i;:::-;2083:34;:::i;:::-;2065:53;:::i;:::-;2052:66;;1982:142;;;:::o;2130:126::-;2180:9;2213:37;2244:5;2213:37;:::i;:::-;2200:50;;2130:126;;;:::o;2262:147::-;2333:9;2366:37;2397:5;2366:37;:::i;:::-;2353:50;;2262:147;;;:::o;2415:173::-;2523:58;2575:5;2523:58;:::i;:::-;2518:3;2511:71;2415:173;;:::o;2594:264::-;2708:4;2746:2;2735:9;2731:18;2723:26;;2759:92;2848:1;2837:9;2833:17;2824:6;2759:92;:::i;:::-;2594:264;;;;:::o;2945:117::-;3054:1;3051;3044:12;3191:96;3228:7;3257:24;3275:5;3257:24;:::i;:::-;3246:35;;3191:96;;;:::o;3293:122::-;3366:24;3384:5;3366:24;:::i;:::-;3359:5;3356:35;3346:63;;3405:1;3402;3395:12;3346:63;3293:122;:::o;3421:139::-;3467:5;3505:6;3492:20;3483:29;;3521:33;3548:5;3521:33;:::i;:::-;3421:139;;;;:::o;3566:122::-;3639:24;3657:5;3639:24;:::i;:::-;3632:5;3629:35;3619:63;;3678:1;3675;3668:12;3619:63;3566:122;:::o;3694:139::-;3740:5;3778:6;3765:20;3756:29;;3794:33;3821:5;3794:33;:::i;:::-;3694:139;;;;:::o;3839:474::-;3907:6;3915;3964:2;3952:9;3943:7;3939:23;3935:32;3932:119;;;3970:79;;:::i;:::-;3932:119;4090:1;4115:53;4160:7;4151:6;4140:9;4136:22;4115:53;:::i;:::-;4105:63;;4061:117;4217:2;4243:53;4288:7;4279:6;4268:9;4264:22;4243:53;:::i;:::-;4233:63;;4188:118;3839:474;;;;;:::o;4319:90::-;4353:7;4396:5;4389:13;4382:21;4371:32;;4319:90;;;:::o;4415:109::-;4496:21;4511:5;4496:21;:::i;:::-;4491:3;4484:34;4415:109;;:::o;4530:210::-;4617:4;4655:2;4644:9;4640:18;4632:26;;4668:65;4730:1;4719:9;4715:17;4706:6;4668:65;:::i;:::-;4530:210;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:116::-;5151:21;5166:5;5151:21;:::i;:::-;5144:5;5141:32;5131:60;;5187:1;5184;5177:12;5131:60;5081:116;:::o;5203:133::-;5246:5;5284:6;5271:20;5262:29;;5300:30;5324:5;5300:30;:::i;:::-;5203:133;;;;:::o;5342:462::-;5404:6;5412;5461:2;5449:9;5440:7;5436:23;5432:32;5429:119;;;5467:79;;:::i;:::-;5429:119;5587:1;5612:50;5654:7;5645:6;5634:9;5630:22;5612:50;:::i;:::-;5602:60;;5558:114;5711:2;5737:50;5779:7;5770:6;5759:9;5755:22;5737:50;:::i;:::-;5727:60;;5682:115;5342:462;;;;;:::o;5810:619::-;5887:6;5895;5903;5952:2;5940:9;5931:7;5927:23;5923:32;5920:119;;;5958:79;;:::i;:::-;5920:119;6078:1;6103:53;6148:7;6139:6;6128:9;6124:22;6103:53;:::i;:::-;6093:63;;6049:117;6205:2;6231:53;6276:7;6267:6;6256:9;6252:22;6231:53;:::i;:::-;6221:63;;6176:118;6333:2;6359:53;6404:7;6395:6;6384:9;6380:22;6359:53;:::i;:::-;6349:63;;6304:118;5810:619;;;;;:::o;6435:86::-;6470:7;6510:4;6503:5;6499:16;6488:27;;6435:86;;;:::o;6527:112::-;6610:22;6626:5;6610:22;:::i;:::-;6605:3;6598:35;6527:112;;:::o;6645:214::-;6734:4;6772:2;6761:9;6757:18;6749:26;;6785:67;6849:1;6838:9;6834:17;6825:6;6785:67;:::i;:::-;6645:214;;;;:::o;6865:329::-;6924:6;6973:2;6961:9;6952:7;6948:23;6944:32;6941:119;;;6979:79;;:::i;:::-;6941:119;7099:1;7124:53;7169:7;7160:6;7149:9;7145:22;7124:53;:::i;:::-;7114:63;;7070:117;6865:329;;;;:::o;7200:118::-;7287:24;7305:5;7287:24;:::i;:::-;7282:3;7275:37;7200:118;;:::o;7324:222::-;7417:4;7455:2;7444:9;7440:18;7432:26;;7468:71;7536:1;7525:9;7521:17;7512:6;7468:71;:::i;:::-;7324:222;;;;:::o;7552:1057::-;7656:6;7664;7672;7680;7688;7696;7745:3;7733:9;7724:7;7720:23;7716:33;7713:120;;;7752:79;;:::i;:::-;7713:120;7872:1;7897:53;7942:7;7933:6;7922:9;7918:22;7897:53;:::i;:::-;7887:63;;7843:117;7999:2;8025:53;8070:7;8061:6;8050:9;8046:22;8025:53;:::i;:::-;8015:63;;7970:118;8127:2;8153:53;8198:7;8189:6;8178:9;8174:22;8153:53;:::i;:::-;8143:63;;8098:118;8255:2;8281:53;8326:7;8317:6;8306:9;8302:22;8281:53;:::i;:::-;8271:63;;8226:118;8383:3;8410:53;8455:7;8446:6;8435:9;8431:22;8410:53;:::i;:::-;8400:63;;8354:119;8512:3;8539:53;8584:7;8575:6;8564:9;8560:22;8539:53;:::i;:::-;8529:63;;8483:119;7552:1057;;;;;;;;:::o;8615:474::-;8683:6;8691;8740:2;8728:9;8719:7;8715:23;8711:32;8708:119;;;8746:79;;:::i;:::-;8708:119;8866:1;8891:53;8936:7;8927:6;8916:9;8912:22;8891:53;:::i;:::-;8881:63;;8837:117;8993:2;9019:53;9064:7;9055:6;9044:9;9040:22;9019:53;:::i;:::-;9009:63;;8964:118;8615:474;;;;;:::o;9095:468::-;9160:6;9168;9217:2;9205:9;9196:7;9192:23;9188:32;9185:119;;;9223:79;;:::i;:::-;9185:119;9343:1;9368:53;9413:7;9404:6;9393:9;9389:22;9368:53;:::i;:::-;9358:63;;9314:117;9470:2;9496:50;9538:7;9529:6;9518:9;9514:22;9496:50;:::i;:::-;9486:60;;9441:115;9095:468;;;;;:::o;9569:180::-;9617:77;9614:1;9607:88;9714:4;9711:1;9704:15;9738:4;9735:1;9728:15;9755:320;9799:6;9836:1;9830:4;9826:12;9816:22;;9883:1;9877:4;9873:12;9904:18;9894:81;;9960:4;9952:6;9948:17;9938:27;;9894:81;10022:2;10014:6;10011:14;9991:18;9988:38;9985:84;;10041:18;;:::i;:::-;9985:84;9806:269;9755:320;;;:::o;10081:182::-;10221:34;10217:1;10209:6;10205:14;10198:58;10081:182;:::o;10269:366::-;10411:3;10432:67;10496:2;10491:3;10432:67;:::i;:::-;10425:74;;10508:93;10597:3;10508:93;:::i;:::-;10626:2;10621:3;10617:12;10610:19;;10269:366;;;:::o;10641:419::-;10807:4;10845:2;10834:9;10830:18;10822:26;;10894:9;10888:4;10884:20;10880:1;10869:9;10865:17;10858:47;10922:131;11048:4;10922:131;:::i;:::-;10914:139;;10641:419;;;:::o;11066:162::-;11206:14;11202:1;11194:6;11190:14;11183:38;11066:162;:::o;11234:366::-;11376:3;11397:67;11461:2;11456:3;11397:67;:::i;:::-;11390:74;;11473:93;11562:3;11473:93;:::i;:::-;11591:2;11586:3;11582:12;11575:19;;11234:366;;;:::o;11606:419::-;11772:4;11810:2;11799:9;11795:18;11787:26;;11859:9;11853:4;11849:20;11845:1;11834:9;11830:17;11823:47;11887:131;12013:4;11887:131;:::i;:::-;11879:139;;11606:419;;;:::o;12031:332::-;12152:4;12190:2;12179:9;12175:18;12167:26;;12203:71;12271:1;12260:9;12256:17;12247:6;12203:71;:::i;:::-;12284:72;12352:2;12341:9;12337:18;12328:6;12284:72;:::i;:::-;12031:332;;;;;:::o;12369:98::-;12420:6;12454:5;12448:12;12438:22;;12369:98;;;:::o;12473:147::-;12574:11;12611:3;12596:18;;12473:147;;;;:::o;12626:386::-;12730:3;12758:38;12790:5;12758:38;:::i;:::-;12812:88;12893:6;12888:3;12812:88;:::i;:::-;12805:95;;12909:65;12967:6;12962:3;12955:4;12948:5;12944:16;12909:65;:::i;:::-;12999:6;12994:3;12990:16;12983:23;;12734:278;12626:386;;;;:::o;13018:271::-;13148:3;13170:93;13259:3;13250:6;13170:93;:::i;:::-;13163:100;;13280:3;13273:10;;13018:271;;;;:::o;13295:170::-;13435:22;13431:1;13423:6;13419:14;13412:46;13295:170;:::o;13471:366::-;13613:3;13634:67;13698:2;13693:3;13634:67;:::i;:::-;13627:74;;13710:93;13799:3;13710:93;:::i;:::-;13828:2;13823:3;13819:12;13812:19;;13471:366;;;:::o;13843:419::-;14009:4;14047:2;14036:9;14032:18;14024:26;;14096:9;14090:4;14086:20;14082:1;14071:9;14067:17;14060:47;14124:131;14250:4;14124:131;:::i;:::-;14116:139;;13843:419;;;:::o;14268:114::-;;:::o;14388:398::-;14547:3;14568:83;14649:1;14644:3;14568:83;:::i;:::-;14561:90;;14660:93;14749:3;14660:93;:::i;:::-;14778:1;14773:3;14769:11;14762:18;;14388:398;;;:::o;14792:379::-;14976:3;14998:147;15141:3;14998:147;:::i;:::-;14991:154;;15162:3;15155:10;;14792:379;;;:::o;15177:170::-;15317:22;15313:1;15305:6;15301:14;15294:46;15177:170;:::o;15353:366::-;15495:3;15516:67;15580:2;15575:3;15516:67;:::i;:::-;15509:74;;15592:93;15681:3;15592:93;:::i;:::-;15710:2;15705:3;15701:12;15694:19;;15353:366;;;:::o;15725:419::-;15891:4;15929:2;15918:9;15914:18;15906:26;;15978:9;15972:4;15968:20;15964:1;15953:9;15949:17;15942:47;16006:131;16132:4;16006:131;:::i;:::-;15998:139;;15725:419;;;:::o;16150:225::-;16290:34;16286:1;16278:6;16274:14;16267:58;16359:8;16354:2;16346:6;16342:15;16335:33;16150:225;:::o;16381:366::-;16523:3;16544:67;16608:2;16603:3;16544:67;:::i;:::-;16537:74;;16620:93;16709:3;16620:93;:::i;:::-;16738:2;16733:3;16729:12;16722:19;;16381:366;;;:::o;16753:419::-;16919:4;16957:2;16946:9;16942:18;16934:26;;17006:9;17000:4;16996:20;16992:1;16981:9;16977:17;16970:47;17034:131;17160:4;17034:131;:::i;:::-;17026:139;;16753:419;;;:::o;17178:166::-;17318:18;17314:1;17306:6;17302:14;17295:42;17178:166;:::o;17350:366::-;17492:3;17513:67;17577:2;17572:3;17513:67;:::i;:::-;17506:74;;17589:93;17678:3;17589:93;:::i;:::-;17707:2;17702:3;17698:12;17691:19;;17350:366;;;:::o;17722:419::-;17888:4;17926:2;17915:9;17911:18;17903:26;;17975:9;17969:4;17965:20;17961:1;17950:9;17946:17;17939:47;18003:131;18129:4;18003:131;:::i;:::-;17995:139;;17722:419;;;:::o;18147:167::-;18287:19;18283:1;18275:6;18271:14;18264:43;18147:167;:::o;18320:366::-;18462:3;18483:67;18547:2;18542:3;18483:67;:::i;:::-;18476:74;;18559:93;18648:3;18559:93;:::i;:::-;18677:2;18672:3;18668:12;18661:19;;18320:366;;;:::o;18692:419::-;18858:4;18896:2;18885:9;18881:18;18873:26;;18945:9;18939:4;18935:20;18931:1;18920:9;18916:17;18909:47;18973:131;19099:4;18973:131;:::i;:::-;18965:139;;18692:419;;;:::o;19117:169::-;19257:21;19253:1;19245:6;19241:14;19234:45;19117:169;:::o;19292:366::-;19434:3;19455:67;19519:2;19514:3;19455:67;:::i;:::-;19448:74;;19531:93;19620:3;19531:93;:::i;:::-;19649:2;19644:3;19640:12;19633:19;;19292:366;;;:::o;19664:419::-;19830:4;19868:2;19857:9;19853:18;19845:26;;19917:9;19911:4;19907:20;19903:1;19892:9;19888:17;19881:47;19945:131;20071:4;19945:131;:::i;:::-;19937:139;;19664:419;;;:::o;20089:167::-;20229:19;20225:1;20217:6;20213:14;20206:43;20089:167;:::o;20262:366::-;20404:3;20425:67;20489:2;20484:3;20425:67;:::i;:::-;20418:74;;20501:93;20590:3;20501:93;:::i;:::-;20619:2;20614:3;20610:12;20603:19;;20262:366;;;:::o;20634:419::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:131;21041:4;20915:131;:::i;:::-;20907:139;;20634:419;;;:::o;21059:180::-;21107:77;21104:1;21097:88;21204:4;21201:1;21194:15;21228:4;21225:1;21218:15;21245:194;21285:4;21305:20;21323:1;21305:20;:::i;:::-;21300:25;;21339:20;21357:1;21339:20;:::i;:::-;21334:25;;21383:1;21380;21376:9;21368:17;;21407:1;21401:4;21398:11;21395:37;;;21412:18;;:::i;:::-;21395:37;21245:194;;;;:::o;21445:191::-;21485:3;21504:20;21522:1;21504:20;:::i;:::-;21499:25;;21538:20;21556:1;21538:20;:::i;:::-;21533:25;;21581:1;21578;21574:9;21567:16;;21602:3;21599:1;21596:10;21593:36;;;21609:18;;:::i;:::-;21593:36;21445:191;;;;:::o;21642:177::-;21782:29;21778:1;21770:6;21766:14;21759:53;21642:177;:::o;21825:366::-;21967:3;21988:67;22052:2;22047:3;21988:67;:::i;:::-;21981:74;;22064:93;22153:3;22064:93;:::i;:::-;22182:2;22177:3;22173:12;22166:19;;21825:366;;;:::o;22197:419::-;22363:4;22401:2;22390:9;22386:18;22378:26;;22450:9;22444:4;22440:20;22436:1;22425:9;22421:17;22414:47;22478:131;22604:4;22478:131;:::i;:::-;22470:139;;22197:419;;;:::o;22622:410::-;22662:7;22685:20;22703:1;22685:20;:::i;:::-;22680:25;;22719:20;22737:1;22719:20;:::i;:::-;22714:25;;22774:1;22771;22767:9;22796:30;22814:11;22796:30;:::i;:::-;22785:41;;22975:1;22966:7;22962:15;22959:1;22956:22;22936:1;22929:9;22909:83;22886:139;;23005:18;;:::i;:::-;22886:139;22670:362;22622:410;;;;:::o;23038:180::-;23086:77;23083:1;23076:88;23183:4;23180:1;23173:15;23207:4;23204:1;23197:15;23224:185;23264:1;23281:20;23299:1;23281:20;:::i;:::-;23276:25;;23315:20;23333:1;23315:20;:::i;:::-;23310:25;;23354:1;23344:35;;23359:18;;:::i;:::-;23344:35;23401:1;23398;23394:9;23389:14;;23224:185;;;;:::o;23415:220::-;23555:34;23551:1;23543:6;23539:14;23532:58;23624:3;23619:2;23611:6;23607:15;23600:28;23415:220;:::o;23641:366::-;23783:3;23804:67;23868:2;23863:3;23804:67;:::i;:::-;23797:74;;23880:93;23969:3;23880:93;:::i;:::-;23998:2;23993:3;23989:12;23982:19;;23641:366;;;:::o;24013:419::-;24179:4;24217:2;24206:9;24202:18;24194:26;;24266:9;24260:4;24256:20;24252:1;24241:9;24237:17;24230:47;24294:131;24420:4;24294:131;:::i;:::-;24286:139;;24013:419;;;:::o;24438:180::-;24486:77;24483:1;24476:88;24583:4;24580:1;24573:15;24607:4;24604:1;24597:15;24624:180;24672:77;24669:1;24662:88;24769:4;24766:1;24759:15;24793:4;24790:1;24783:15;24810:143;24867:5;24898:6;24892:13;24883:22;;24914:33;24941:5;24914:33;:::i;:::-;24810:143;;;;:::o;24959:351::-;25029:6;25078:2;25066:9;25057:7;25053:23;25049:32;25046:119;;;25084:79;;:::i;:::-;25046:119;25204:1;25229:64;25285:7;25276:6;25265:9;25261:22;25229:64;:::i;:::-;25219:74;;25175:128;24959:351;;;;:::o;25316:85::-;25361:7;25390:5;25379:16;;25316:85;;;:::o;25407:158::-;25465:9;25498:61;25516:42;25525:32;25551:5;25525:32;:::i;:::-;25516:42;:::i;:::-;25498:61;:::i;:::-;25485:74;;25407:158;;;:::o;25571:147::-;25666:45;25705:5;25666:45;:::i;:::-;25661:3;25654:58;25571:147;;:::o;25724:114::-;25791:6;25825:5;25819:12;25809:22;;25724:114;;;:::o;25844:184::-;25943:11;25977:6;25972:3;25965:19;26017:4;26012:3;26008:14;25993:29;;25844:184;;;;:::o;26034:132::-;26101:4;26124:3;26116:11;;26154:4;26149:3;26145:14;26137:22;;26034:132;;;:::o;26172:108::-;26249:24;26267:5;26249:24;:::i;:::-;26244:3;26237:37;26172:108;;:::o;26286:179::-;26355:10;26376:46;26418:3;26410:6;26376:46;:::i;:::-;26454:4;26449:3;26445:14;26431:28;;26286:179;;;;:::o;26471:113::-;26541:4;26573;26568:3;26564:14;26556:22;;26471:113;;;:::o;26620:732::-;26739:3;26768:54;26816:5;26768:54;:::i;:::-;26838:86;26917:6;26912:3;26838:86;:::i;:::-;26831:93;;26948:56;26998:5;26948:56;:::i;:::-;27027:7;27058:1;27043:284;27068:6;27065:1;27062:13;27043:284;;;27144:6;27138:13;27171:63;27230:3;27215:13;27171:63;:::i;:::-;27164:70;;27257:60;27310:6;27257:60;:::i;:::-;27247:70;;27103:224;27090:1;27087;27083:9;27078:14;;27043:284;;;27047:14;27343:3;27336:10;;26744:608;;;26620:732;;;;:::o;27358:831::-;27621:4;27659:3;27648:9;27644:19;27636:27;;27673:71;27741:1;27730:9;27726:17;27717:6;27673:71;:::i;:::-;27754:80;27830:2;27819:9;27815:18;27806:6;27754:80;:::i;:::-;27881:9;27875:4;27871:20;27866:2;27855:9;27851:18;27844:48;27909:108;28012:4;28003:6;27909:108;:::i;:::-;27901:116;;28027:72;28095:2;28084:9;28080:18;28071:6;28027:72;:::i;:::-;28109:73;28177:3;28166:9;28162:19;28153:6;28109:73;:::i;:::-;27358:831;;;;;;;;:::o;28195:483::-;28366:4;28404:2;28393:9;28389:18;28381:26;;28417:71;28485:1;28474:9;28470:17;28461:6;28417:71;:::i;:::-;28535:9;28529:4;28525:20;28520:2;28509:9;28505:18;28498:48;28563:108;28666:4;28657:6;28563:108;:::i;:::-;28555:116;;28195:483;;;;;:::o;28684:807::-;28933:4;28971:3;28960:9;28956:19;28948:27;;28985:71;29053:1;29042:9;29038:17;29029:6;28985:71;:::i;:::-;29066:72;29134:2;29123:9;29119:18;29110:6;29066:72;:::i;:::-;29148:80;29224:2;29213:9;29209:18;29200:6;29148:80;:::i;:::-;29238;29314:2;29303:9;29299:18;29290:6;29238:80;:::i;:::-;29328:73;29396:3;29385:9;29381:19;29372:6;29328:73;:::i;:::-;29411;29479:3;29468:9;29464:19;29455:6;29411:73;:::i;:::-;28684:807;;;;;;;;;:::o;29497:143::-;29554:5;29585:6;29579:13;29570:22;;29601:33;29628:5;29601:33;:::i;:::-;29497:143;;;;:::o;29646:663::-;29734:6;29742;29750;29799:2;29787:9;29778:7;29774:23;29770:32;29767:119;;;29805:79;;:::i;:::-;29767:119;29925:1;29950:64;30006:7;29997:6;29986:9;29982:22;29950:64;:::i;:::-;29940:74;;29896:128;30063:2;30089:64;30145:7;30136:6;30125:9;30121:22;30089:64;:::i;:::-;30079:74;;30034:129;30202:2;30228:64;30284:7;30275:6;30264:9;30260:22;30228:64;:::i;:::-;30218:74;;30173:129;29646:663;;;;;:::o

Swarm Source

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