Token CrobaInu

Overview CRC20

Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
1,000,000,000 CROBA

Holders:
9 addresses
Contract:
0x9F7F45a394941dB1a44a3BCd9859912aD8d28A7e0x9F7F45a394941dB1a44a3BCd9859912aD8d28A7e

Decimals:
9

Social Profiles:
Not Available, Update ?

Balance
7,993,831.030950537 CROBA

Value
$0.00
0x7dae8fbcc37f67cb1ca02b959fa97c1473bd3a63
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CrobaInu

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-04-09
*/

/**
 *Submitted for verification at cronoscan.com on 2022-04-04
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _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);
    }
}

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

interface IRouter {
    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;
}

contract CrobaInu is Context, IERC20, Ownable {
    using Address for address payable;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping(address => bool) public isBot;

    address[] private _excluded;

    bool public swapEnabled = true;
    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1_000_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    
    uint256 public swapTokensAtAmount = _tTotal;
    uint256 public maxTxAmount = _tTotal * 40 / 1000;
    uint256 public maxWalletAmount = _tTotal * 40 / 1000;

    address public constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = msg.sender;
    address public LiquidityReceiver = msg.sender;

    string private constant _name = "CrobaInu";
    string private constant _symbol = "CROBA";


    struct Taxes {
      uint256 rfi;
      uint256 marketing;
      uint256 liquidity;
      uint256 burn;
    }
    Taxes public taxes = Taxes(0,3,3,0); //Max tax at deployment. will reduce after launch

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rBurn;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tBurn;
    }

    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor () {
        
        IRouter _router = IRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);
        excludeFromReward(deadAddress);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet]=true;
        _isExcludedFromFee[LiquidityReceiver]=true;
        _isExcludedFromFee[deadAddress] = false;
        
        emit Transfer(address(0), owner(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }


    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }


    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _burn) public onlyOwner {
        taxes = Taxes(_rfi, _marketing, _liquidity, _burn);
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeBurn(uint256 rBurn, uint256 tBurn) private{
        totFeesPaid.burn +=tBurn;

        if(_isExcluded[deadAddress])
        {
            _tOwned[deadAddress]+=tBurn;
        }
        _rOwned[deadAddress] +=rBurn;
    }

    function _getValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity, to_return.rBurn) = _getRValues(to_return, tAmount, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }

        s.tRfi = tAmount*taxes.rfi/100;
        s.tMarketing = tAmount*taxes.marketing/100;
        s.tLiquidity = tAmount*taxes.liquidity/100;
        s.tBurn = tAmount*taxes.burn/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tBurn;
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rMarketing, uint256 rLiquidity, uint256 rBurn) {
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rBurn = s.rBurn*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rBurn;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity, rBurn);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }


    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBot[from], "ERC20: address is a bot");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to != pair) require(balanceOf(to) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            require(amount <= maxTxAmount, "You are esceeding maxTxAmount");
        }
             
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            swapAndLiquify(swapTokensAtAmount);
        }

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]));
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0){
            _takeMarketing(s.rMarketing, s.tMarketing);
        }
        if(s.rBurn > 0 || s.tBurn > 0){
            _takeBurn(s.rBurn, s.tBurn);
            emit Transfer(sender, deadAddress, s.tBurn);
        }
        
        emit Transfer(sender, recipient, s.tTransferAmount);
        emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing);
        
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap{
       // Split the contract balance into halves
        uint256 denominator = (taxes.liquidity + taxes.marketing ) * 2;
        uint256 tokensToAddLiquidityWith = tokens * taxes.liquidity / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForCRO(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - taxes.liquidity);
        uint256 CROToAddLiquidityWith = unitBalance * taxes.liquidity;

        if(CROToAddLiquidityWith > 0){
            addLiquidity(tokensToAddLiquidityWith, CROToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * taxes.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }

    }

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

        // add the liquidity
        router.addLiquidityETH{value: CROAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            LiquidityReceiver,
            block.timestamp
        );
    }

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

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function updateWallet(address newMarketingWallet, address newLiquidityWallet) external onlyOwner{
        marketingWallet = newMarketingWallet;
        _isExcludedFromFee[marketingWallet] = true;
        LiquidityReceiver = newLiquidityWallet;
    }

    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount;
    }

    function updateMaxWalletBalance(uint256 amount) external onlyOwner{
        maxWalletAmount = amount;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }

    function rescuetoken() external {
        payable(LiquidityReceiver).transfer(address(this).balance);
    }

     function isBots(address botAddress, bool status) external onlyOwner {   
        isBot[botAddress] = status;
    }
    
    // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake)
    // Owner cannot transfer out native coin from this smart contract
    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"LiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"isBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescuetoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newLiquidityWallet","type":"address"}],"name":"updateWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805460ff191660011790556200001f6009600a6200097b565b6200002f90633b9aca006200098c565b600a8190556200004290600019620009c4565b6200005090600019620009db565b600b55600a54600c556103e8600a5460286200006d91906200098c565b620000799190620009f5565b600d556103e8600a5460286200009091906200098c565b6200009c9190620009f5565b600e55600f8054336001600160a01b031991821681179092556010805490911690911790556040805160808101825260008082526003602083018190529282018390526060909101819052601181905560128290556013919091556014553480156200010757600080fd5b5062000113336200042d565b600073145677fc4d9b8f19b5d56d1820c48e0443049a3090506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000193919062000a0c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000207919062000a0c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b919062000a0c565b600880546001600160a01b03808616620100000262010000600160b01b031990921691909117909155600980549183166001600160a01b031990921682179055909150620002c9906200047d565b620002d661dead6200047d565b600b5460016000620002f06000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200032a6200060b60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155600f54821684528284208054861682179055601054909116835290822080548416909117905561dead90527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549091169055620003d56000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200041d91815260200190565b60405180910390a3505062000a6b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620004dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620005485760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620004d4565b6001600160a01b03811660009081526001602052604090205415620005a5576001600160a01b0381166000908152600160205260409020546200058b906200061a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031690565b6000600b54821115620006835760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620004d4565b60006200068f620006a4565b90506200069d8184620009f5565b9392505050565b60008080620006b2620006ca565b9092509050620006c38183620009f5565b9250505090565b600b54600a546000918291825b6007548110156200083257826001600060078481548110620006fd57620006fd62000a37565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200076c575081600260006007848154811062000745576200074562000a37565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200078357600b54600a54945094505050509091565b60016000600783815481106200079d576200079d62000a37565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620007ce9084620009db565b92506002600060078381548110620007ea57620007ea62000a37565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200081b9083620009db565b915080620008298162000a4d565b915050620006d7565b50600a54600b54620008459190620009f5565b8210156200085d57600b54600a549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008bd578160001904821115620008a157620008a162000866565b80851615620008af57918102915b93841c939080029062000881565b509250929050565b600082620008d65750600162000975565b81620008e55750600062000975565b8160018114620008fe5760028114620009095762000929565b600191505062000975565b60ff8411156200091d576200091d62000866565b50506001821b62000975565b5060208310610133831016604e8410600b84101617156200094e575081810a62000975565b6200095a83836200087c565b806000190482111562000971576200097162000866565b0290505b92915050565b60006200069d60ff841683620008c5565b6000816000190483118215151615620009a957620009a962000866565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620009d657620009d6620009ae565b500690565b600082821015620009f057620009f062000866565b500390565b60008262000a075762000a07620009ae565b500490565b60006020828403121562000a1f57600080fd5b81516001600160a01b03811681146200069d57600080fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562000a645762000a6462000866565b5060010190565b6129c78062000a7b6000396000f3fe60806040526004361061026b5760003560e01c8063715018a611610144578063a457c2d7116100b6578063d257b34f1161007a578063d257b34f146107b9578063dd62ed3e146107d9578063e2f456051461081f578063ea2f0b3714610835578063f2fde38b14610855578063f887ea401461087557600080fd5b8063a457c2d714610723578063a8aa1b3114610743578063a9059cbb14610763578063aa4bde2814610783578063d05b5a001461079957600080fd5b80638c0b5e22116101085780638c0b5e221461065e5780638da5cb5b14610674578063924de9b71461069257806395d89b41146106b25780639ba5e4d5146106e0578063a12a7d611461070357600080fd5b8063715018a614610598578063728f8eea146105ad57806373880790146105f057806375f0a8741461060557806388f820201461062557600080fd5b80633fd16d13116101dd5780634a6bb4a5116101a15780634a6bb4a5146104c557806352390c02146104e55780635342acb4146105055780636256d1811461053e5780636ddd17131461055e57806370a082311461057857600080fd5b80633fd16d131461042557806340b28c2f14610445578063437823ec146104655780634549b0391461048557806347c23092146104a557600080fd5b806327c8f8351161022f57806327c8f8351461034b5780632d83811914610379578063313ce567146103995780633685d419146103b557806339509351146103d55780633bbac579146103f557600080fd5b806306fdde0314610277578063095ea7b3146102ba57806318160ddd146102ea578063188b1bf11461030957806323b872dd1461032b57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5060408051808201909152600881526743726f6261496e7560c01b60208201525b6040516102b191906125c0565b60405180910390f35b3480156102c657600080fd5b506102da6102d536600461262a565b61089b565b60405190151581526020016102b1565b3480156102f657600080fd5b50600a545b6040519081526020016102b1565b34801561031557600080fd5b50610329610324366004612656565b6108b2565b005b34801561033757600080fd5b506102da61034636600461266f565b6108ea565b34801561035757600080fd5b5061036161dead81565b6040516001600160a01b0390911681526020016102b1565b34801561038557600080fd5b506102fb610394366004612656565b61099b565b3480156103a557600080fd5b50604051600981526020016102b1565b3480156103c157600080fd5b506103296103d03660046126b0565b610a1f565b3480156103e157600080fd5b506102da6103f036600461262a565b610bd6565b34801561040157600080fd5b506102da6104103660046126b0565b60066020526000908152604090205460ff1681565b34801561043157600080fd5b50601054610361906001600160a01b031681565b34801561045157600080fd5b506103296104603660046126cd565b610c0d565b34801561047157600080fd5b506103296104803660046126b0565b610c71565b34801561049157600080fd5b506102fb6104a0366004612714565b610cbf565b3480156104b157600080fd5b506103296104c036600461266f565b610d49565b3480156104d157600080fd5b506103296104e03660046126cd565b610dec565b3480156104f157600080fd5b506103296105003660046126b0565b610e5f565b34801561051157600080fd5b506102da6105203660046126b0565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561054a57600080fd5b50610329610559366004612656565b610fb2565b34801561056a57600080fd5b506008546102da9060ff1681565b34801561058457600080fd5b506102fb6105933660046126b0565b610fe1565b3480156105a457600080fd5b50610329611040565b3480156105b957600080fd5b506011546012546013546014546105d09392919084565b6040805194855260208501939093529183015260608201526080016102b1565b3480156105fc57600080fd5b50610329611076565b34801561061157600080fd5b50600f54610361906001600160a01b031681565b34801561063157600080fd5b506102da6106403660046126b0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561066a57600080fd5b506102fb600d5481565b34801561068057600080fd5b506000546001600160a01b0316610361565b34801561069e57600080fd5b506103296106ad366004612739565b6110b2565b3480156106be57600080fd5b5060408051808201909152600581526443524f424160d81b60208201526102a4565b3480156106ec57600080fd5b506015546016546017546018546105d09392919084565b34801561070f57600080fd5b5061032961071e366004612756565b6110ef565b34801561072f57600080fd5b506102da61073e36600461262a565b61114d565b34801561074f57600080fd5b50600954610361906001600160a01b031681565b34801561076f57600080fd5b506102da61077e36600461262a565b6111e8565b34801561078f57600080fd5b506102fb600e5481565b3480156107a557600080fd5b506103296107b4366004612788565b6111f5565b3480156107c557600080fd5b506103296107d4366004612656565b61124a565b3480156107e557600080fd5b506102fb6107f43660046126cd565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561082b57600080fd5b506102fb600c5481565b34801561084157600080fd5b506103296108503660046126b0565b611279565b34801561086157600080fd5b506103296108703660046126b0565b6112c4565b34801561088157600080fd5b50600854610361906201000090046001600160a01b031681565b60006108a833848461135c565b5060015b92915050565b6000546001600160a01b031633146108e55760405162461bcd60e51b81526004016108dc906127b6565b60405180910390fd5b600e55565b60006108f7848484611480565b6001600160a01b03841660009081526003602090815260408083203384529091529020548281101561097c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108dc565b610990853361098b8685612801565b61135c565b506001949350505050565b6000600b54821115610a025760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108dc565b6000610a0c611899565b9050610a188184612818565b9392505050565b6000546001600160a01b03163314610a495760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03811660009081526005602052604090205460ff16610ab15760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016108dc565b60005b600754811015610bd257816001600160a01b031660078281548110610adb57610adb61283a565b6000918252602090912001546001600160a01b03161415610bc05760078054610b0690600190612801565b81548110610b1657610b1661283a565b600091825260209091200154600780546001600160a01b039092169183908110610b4257610b4261283a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610b9a57610b9a612850565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bca81612866565b915050610ab4565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108a891859061098b908690612881565b6000546001600160a01b03163314610c375760405162461bcd60e51b81526004016108dc906127b6565b6008805462010000600160b01b031916620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b03163314610c9b5760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a54831115610d135760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108dc565b81610d2f576000610d258460016118bc565b5191506108ac9050565b6000610d3c8460016118bc565b6020015191506108ac9050565b6000546001600160a01b03163314610d735760405162461bcd60e51b81526004016108dc906127b6565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de69190612899565b50505050565b6000546001600160a01b03163314610e165760405162461bcd60e51b81526004016108dc906127b6565b600f80546001600160a01b039384166001600160a01b03199182168117909255600091825260046020526040909120805460ff1916600117905560108054929093169116179055565b6000546001600160a01b03163314610e895760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03811660009081526005602052604090205460ff1615610ef25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108dc565b6001600160a01b03811660009081526001602052604090205415610f4c576001600160a01b038116600090815260016020526040902054610f329061099b565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b03163314610fdc5760405162461bcd60e51b81526004016108dc906127b6565b600d55565b6001600160a01b03811660009081526005602052604081205460ff161561101e57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108ac9061099b565b6000546001600160a01b0316331461106a5760405162461bcd60e51b81526004016108dc906127b6565b6110746000611904565b565b6010546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156110af573d6000803e3d6000fd5b50565b6000546001600160a01b031633146110dc5760405162461bcd60e51b81526004016108dc906127b6565b6008805460ff1916911515919091179055565b6000546001600160a01b031633146111195760405162461bcd60e51b81526004016108dc906127b6565b6040805160808101825285815260208101859052908101839052606001819052601193909355601291909155601355601455565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156111cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108dc565b6111de338561098b8685612801565b5060019392505050565b60006108a8338484611480565b6000546001600160a01b0316331461121f5760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112745760405162461bcd60e51b81526004016108dc906127b6565b600c55565b6000546001600160a01b031633146112a35760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112ee5760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b0381166113535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108dc565b6110af81611904565b6001600160a01b0383166113be5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108dc565b6001600160a01b03821661141f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108dc565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108dc565b6001600160a01b0382166115465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108dc565b6001600160a01b03831660009081526006602052604090205460ff16156115af5760405162461bcd60e51b815260206004820152601760248201527f45524332303a2061646472657373206973206120626f7400000000000000000060448201526064016108dc565b600081116116115760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108dc565b61161a83610fe1565b8111156116835760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108dc565b6001600160a01b03831660009081526004602052604090205460ff161580156116c557506001600160a01b03821660009081526004602052604090205460ff16155b156117a0576009546001600160a01b0383811691161461174e57600e54816116ec84610fe1565b6116f69190612881565b111561174e5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b60648201526084016108dc565b600d548111156117a05760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657363656564696e67206d61785478416d6f756e7400000060448201526064016108dc565b6000600c546117ae30610fe1565b6008549111159150610100900460ff161580156117cd575060085460ff165b80156117d65750805b80156117f057506009546001600160a01b03858116911614155b801561181557506001600160a01b03841660009081526004602052604090205460ff16155b801561183a57506001600160a01b03831660009081526004602052604090205460ff16155b1561184a5761184a600c54611954565b6001600160a01b038416600090815260046020526040902054610de69085908590859060ff168061189357506001600160a01b03871660009081526004602052604090205460ff165b15611a57565b60008060006118a6611d66565b90925090506118b58183612818565b9250505090565b6118c4612566565b6118ce8383611ee9565b90506118e38184846118de611899565b611fc7565b60a08701526080860152606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560125460135460009161197591612881565b6119809060026128b6565b90506000816011600201548461199691906128b6565b6119a09190612818565b905060006119ae8285612801565b9050476119ba82612078565b60006119c68247612801565b6013549091506000906119d99087612801565b6119e39083612818565b6013549091506000906119f690836128b6565b90508015611a0857611a0886826121f7565b601254600090611a198460026128b6565b611a2391906128b6565b90508015611a4157600f54611a41906001600160a01b0316826122b7565b50506008805461ff001916905550505050505050565b6000611a6383836118bc565b6001600160a01b03861660009081526005602052604090205490915060ff1615611ac5576001600160a01b038516600090815260026020526040902054611aab908490612801565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff1615611b285760c08101516001600160a01b038516600090815260026020526040902054611b0e9190612881565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611b4d9190612801565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611b849190612881565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611bb6575060008160e00151115b15611bcd57611bcd81604001518260e001516123d5565b600081608001511180611be557506000816101200151115b15611bfd57611bfd816080015182610120015161240a565b600081606001511180611c1557506000816101000151115b15611c2d57611c2d8160600151826101000151612480565b60008160a001511180611c4557506000816101400151115b15611cb257611c5d8160a00151826101400151612495565b61dead6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151604051611ca991815260200190565b60405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611cfb91815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151846101200151611d4e9190612881565b60405190815260200160405180910390a35050505050565b600b54600a546000918291825b600754811015611eb857826001600060078481548110611d9557611d9561283a565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e005750816002600060078481548110611dd957611dd961283a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e1657600b54600a54945094505050509091565b6001600060078381548110611e2d57611e2d61283a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611e5c9084612801565b92506002600060078381548110611e7557611e7561283a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611ea49083612801565b915080611eb081612866565b915050611d73565b50600a54600b54611ec99190612818565b821015611ee057600b54600a549350935050509091565b90939092509050565b611ef1612566565b81611f025760c081018390526108ac565b601154606490611f1290856128b6565b611f1c9190612818565b60e0820152601254606490611f3190856128b6565b611f3b9190612818565b610100820152601354606490611f5190856128b6565b611f5b9190612818565b610120820152601454606490611f7190856128b6565b611f7b9190612818565b610140820181905261012082015161010083015160e0840151611f9e9087612801565b611fa89190612801565b611fb29190612801565b611fbc9190612801565b60c082015292915050565b60008080808080611fd8878a6128b6565b955087611ff35750849350600092508291508190508061206b565b868a60e0015161200391906128b6565b9350868a610100015161201691906128b6565b9250868a610120015161202991906128b6565b9150868a60a0015161203b91906128b6565b905080828461204a878a612801565b6120549190612801565b61205e9190612801565b6120689190612801565b94505b9499939850945094509450565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120ad576120ad61283a565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214491906128d5565b816001815181106121575761215761283a565b6001600160a01b039283166020918202929092010152600854612183913091620100009004168461135c565b60085460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906121c19085906000908690309042906004016128f2565b600060405180830381600087803b1580156121db57600080fd5b505af11580156121ef573d6000803e3d6000fd5b505050505050565b6008546122159030906201000090046001600160a01b03168461135c565b60085460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af115801561228b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122b09190612963565b5050505050565b804710156123075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612354576040519150601f19603f3d011682016040523d82523d6000602084013e612359565b606091505b50509050806123d05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108dc565b505050565b81600b60008282546123e79190612801565b909155505060158054829190600090612401908490612881565b90915550505050565b806015600201600082825461241f9190612881565b90915550503060009081526005602052604090205460ff161561246157306000908152600260205260408120805483929061245b908490612881565b90915550505b3060009081526001602052604081208054849290612401908490612881565b806015600101600082825461241f9190612881565b80601560030160008282546124aa9190612881565b909155505061dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460ff16156125285761dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054839290612522908490612881565b90915550505b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054849290612401908490612881565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156125ed578581018301518582016040015282016125d1565b818111156125ff576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146110af57600080fd5b6000806040838503121561263d57600080fd5b823561264881612615565b946020939093013593505050565b60006020828403121561266857600080fd5b5035919050565b60008060006060848603121561268457600080fd5b833561268f81612615565b9250602084013561269f81612615565b929592945050506040919091013590565b6000602082840312156126c257600080fd5b8135610a1881612615565b600080604083850312156126e057600080fd5b82356126eb81612615565b915060208301356126fb81612615565b809150509250929050565b80151581146110af57600080fd5b6000806040838503121561272757600080fd5b8235915060208301356126fb81612706565b60006020828403121561274b57600080fd5b8135610a1881612706565b6000806000806080858703121561276c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561279b57600080fd5b82356127a681612615565b915060208301356126fb81612706565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015612813576128136127eb565b500390565b60008261283557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141561287a5761287a6127eb565b5060010190565b60008219821115612894576128946127eb565b500190565b6000602082840312156128ab57600080fd5b8151610a1881612706565b60008160001904831182151516156128d0576128d06127eb565b500290565b6000602082840312156128e757600080fd5b8151610a1881612615565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129425784516001600160a01b03168352938301939183019160010161291d565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561297857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202a08992f4aa584fedce1efc8d473afa1396a727fe395240cd238cf210175827864736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063715018a611610144578063a457c2d7116100b6578063d257b34f1161007a578063d257b34f146107b9578063dd62ed3e146107d9578063e2f456051461081f578063ea2f0b3714610835578063f2fde38b14610855578063f887ea401461087557600080fd5b8063a457c2d714610723578063a8aa1b3114610743578063a9059cbb14610763578063aa4bde2814610783578063d05b5a001461079957600080fd5b80638c0b5e22116101085780638c0b5e221461065e5780638da5cb5b14610674578063924de9b71461069257806395d89b41146106b25780639ba5e4d5146106e0578063a12a7d611461070357600080fd5b8063715018a614610598578063728f8eea146105ad57806373880790146105f057806375f0a8741461060557806388f820201461062557600080fd5b80633fd16d13116101dd5780634a6bb4a5116101a15780634a6bb4a5146104c557806352390c02146104e55780635342acb4146105055780636256d1811461053e5780636ddd17131461055e57806370a082311461057857600080fd5b80633fd16d131461042557806340b28c2f14610445578063437823ec146104655780634549b0391461048557806347c23092146104a557600080fd5b806327c8f8351161022f57806327c8f8351461034b5780632d83811914610379578063313ce567146103995780633685d419146103b557806339509351146103d55780633bbac579146103f557600080fd5b806306fdde0314610277578063095ea7b3146102ba57806318160ddd146102ea578063188b1bf11461030957806323b872dd1461032b57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5060408051808201909152600881526743726f6261496e7560c01b60208201525b6040516102b191906125c0565b60405180910390f35b3480156102c657600080fd5b506102da6102d536600461262a565b61089b565b60405190151581526020016102b1565b3480156102f657600080fd5b50600a545b6040519081526020016102b1565b34801561031557600080fd5b50610329610324366004612656565b6108b2565b005b34801561033757600080fd5b506102da61034636600461266f565b6108ea565b34801561035757600080fd5b5061036161dead81565b6040516001600160a01b0390911681526020016102b1565b34801561038557600080fd5b506102fb610394366004612656565b61099b565b3480156103a557600080fd5b50604051600981526020016102b1565b3480156103c157600080fd5b506103296103d03660046126b0565b610a1f565b3480156103e157600080fd5b506102da6103f036600461262a565b610bd6565b34801561040157600080fd5b506102da6104103660046126b0565b60066020526000908152604090205460ff1681565b34801561043157600080fd5b50601054610361906001600160a01b031681565b34801561045157600080fd5b506103296104603660046126cd565b610c0d565b34801561047157600080fd5b506103296104803660046126b0565b610c71565b34801561049157600080fd5b506102fb6104a0366004612714565b610cbf565b3480156104b157600080fd5b506103296104c036600461266f565b610d49565b3480156104d157600080fd5b506103296104e03660046126cd565b610dec565b3480156104f157600080fd5b506103296105003660046126b0565b610e5f565b34801561051157600080fd5b506102da6105203660046126b0565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561054a57600080fd5b50610329610559366004612656565b610fb2565b34801561056a57600080fd5b506008546102da9060ff1681565b34801561058457600080fd5b506102fb6105933660046126b0565b610fe1565b3480156105a457600080fd5b50610329611040565b3480156105b957600080fd5b506011546012546013546014546105d09392919084565b6040805194855260208501939093529183015260608201526080016102b1565b3480156105fc57600080fd5b50610329611076565b34801561061157600080fd5b50600f54610361906001600160a01b031681565b34801561063157600080fd5b506102da6106403660046126b0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561066a57600080fd5b506102fb600d5481565b34801561068057600080fd5b506000546001600160a01b0316610361565b34801561069e57600080fd5b506103296106ad366004612739565b6110b2565b3480156106be57600080fd5b5060408051808201909152600581526443524f424160d81b60208201526102a4565b3480156106ec57600080fd5b506015546016546017546018546105d09392919084565b34801561070f57600080fd5b5061032961071e366004612756565b6110ef565b34801561072f57600080fd5b506102da61073e36600461262a565b61114d565b34801561074f57600080fd5b50600954610361906001600160a01b031681565b34801561076f57600080fd5b506102da61077e36600461262a565b6111e8565b34801561078f57600080fd5b506102fb600e5481565b3480156107a557600080fd5b506103296107b4366004612788565b6111f5565b3480156107c557600080fd5b506103296107d4366004612656565b61124a565b3480156107e557600080fd5b506102fb6107f43660046126cd565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561082b57600080fd5b506102fb600c5481565b34801561084157600080fd5b506103296108503660046126b0565b611279565b34801561086157600080fd5b506103296108703660046126b0565b6112c4565b34801561088157600080fd5b50600854610361906201000090046001600160a01b031681565b60006108a833848461135c565b5060015b92915050565b6000546001600160a01b031633146108e55760405162461bcd60e51b81526004016108dc906127b6565b60405180910390fd5b600e55565b60006108f7848484611480565b6001600160a01b03841660009081526003602090815260408083203384529091529020548281101561097c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108dc565b610990853361098b8685612801565b61135c565b506001949350505050565b6000600b54821115610a025760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108dc565b6000610a0c611899565b9050610a188184612818565b9392505050565b6000546001600160a01b03163314610a495760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03811660009081526005602052604090205460ff16610ab15760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016108dc565b60005b600754811015610bd257816001600160a01b031660078281548110610adb57610adb61283a565b6000918252602090912001546001600160a01b03161415610bc05760078054610b0690600190612801565b81548110610b1657610b1661283a565b600091825260209091200154600780546001600160a01b039092169183908110610b4257610b4261283a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610b9a57610b9a612850565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bca81612866565b915050610ab4565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108a891859061098b908690612881565b6000546001600160a01b03163314610c375760405162461bcd60e51b81526004016108dc906127b6565b6008805462010000600160b01b031916620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b03163314610c9b5760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a54831115610d135760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108dc565b81610d2f576000610d258460016118bc565b5191506108ac9050565b6000610d3c8460016118bc565b6020015191506108ac9050565b6000546001600160a01b03163314610d735760405162461bcd60e51b81526004016108dc906127b6565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de69190612899565b50505050565b6000546001600160a01b03163314610e165760405162461bcd60e51b81526004016108dc906127b6565b600f80546001600160a01b039384166001600160a01b03199182168117909255600091825260046020526040909120805460ff1916600117905560108054929093169116179055565b6000546001600160a01b03163314610e895760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03811660009081526005602052604090205460ff1615610ef25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108dc565b6001600160a01b03811660009081526001602052604090205415610f4c576001600160a01b038116600090815260016020526040902054610f329061099b565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b03163314610fdc5760405162461bcd60e51b81526004016108dc906127b6565b600d55565b6001600160a01b03811660009081526005602052604081205460ff161561101e57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108ac9061099b565b6000546001600160a01b0316331461106a5760405162461bcd60e51b81526004016108dc906127b6565b6110746000611904565b565b6010546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156110af573d6000803e3d6000fd5b50565b6000546001600160a01b031633146110dc5760405162461bcd60e51b81526004016108dc906127b6565b6008805460ff1916911515919091179055565b6000546001600160a01b031633146111195760405162461bcd60e51b81526004016108dc906127b6565b6040805160808101825285815260208101859052908101839052606001819052601193909355601291909155601355601455565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156111cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108dc565b6111de338561098b8685612801565b5060019392505050565b60006108a8338484611480565b6000546001600160a01b0316331461121f5760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112745760405162461bcd60e51b81526004016108dc906127b6565b600c55565b6000546001600160a01b031633146112a35760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112ee5760405162461bcd60e51b81526004016108dc906127b6565b6001600160a01b0381166113535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108dc565b6110af81611904565b6001600160a01b0383166113be5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108dc565b6001600160a01b03821661141f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108dc565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108dc565b6001600160a01b0382166115465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108dc565b6001600160a01b03831660009081526006602052604090205460ff16156115af5760405162461bcd60e51b815260206004820152601760248201527f45524332303a2061646472657373206973206120626f7400000000000000000060448201526064016108dc565b600081116116115760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108dc565b61161a83610fe1565b8111156116835760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108dc565b6001600160a01b03831660009081526004602052604090205460ff161580156116c557506001600160a01b03821660009081526004602052604090205460ff16155b156117a0576009546001600160a01b0383811691161461174e57600e54816116ec84610fe1565b6116f69190612881565b111561174e5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b60648201526084016108dc565b600d548111156117a05760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657363656564696e67206d61785478416d6f756e7400000060448201526064016108dc565b6000600c546117ae30610fe1565b6008549111159150610100900460ff161580156117cd575060085460ff165b80156117d65750805b80156117f057506009546001600160a01b03858116911614155b801561181557506001600160a01b03841660009081526004602052604090205460ff16155b801561183a57506001600160a01b03831660009081526004602052604090205460ff16155b1561184a5761184a600c54611954565b6001600160a01b038416600090815260046020526040902054610de69085908590859060ff168061189357506001600160a01b03871660009081526004602052604090205460ff165b15611a57565b60008060006118a6611d66565b90925090506118b58183612818565b9250505090565b6118c4612566565b6118ce8383611ee9565b90506118e38184846118de611899565b611fc7565b60a08701526080860152606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560125460135460009161197591612881565b6119809060026128b6565b90506000816011600201548461199691906128b6565b6119a09190612818565b905060006119ae8285612801565b9050476119ba82612078565b60006119c68247612801565b6013549091506000906119d99087612801565b6119e39083612818565b6013549091506000906119f690836128b6565b90508015611a0857611a0886826121f7565b601254600090611a198460026128b6565b611a2391906128b6565b90508015611a4157600f54611a41906001600160a01b0316826122b7565b50506008805461ff001916905550505050505050565b6000611a6383836118bc565b6001600160a01b03861660009081526005602052604090205490915060ff1615611ac5576001600160a01b038516600090815260026020526040902054611aab908490612801565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff1615611b285760c08101516001600160a01b038516600090815260026020526040902054611b0e9190612881565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b038616600090815260016020526040902054611b4d9190612801565b6001600160a01b0380871660009081526001602090815260408083209490945584015191871681529190912054611b849190612881565b6001600160a01b0385166000908152600160205260409081902091909155810151151580611bb6575060008160e00151115b15611bcd57611bcd81604001518260e001516123d5565b600081608001511180611be557506000816101200151115b15611bfd57611bfd816080015182610120015161240a565b600081606001511180611c1557506000816101000151115b15611c2d57611c2d8160600151826101000151612480565b60008160a001511180611c4557506000816101400151115b15611cb257611c5d8160a00151826101400151612495565b61dead6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151604051611ca991815260200190565b60405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611cfb91815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151846101200151611d4e9190612881565b60405190815260200160405180910390a35050505050565b600b54600a546000918291825b600754811015611eb857826001600060078481548110611d9557611d9561283a565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e005750816002600060078481548110611dd957611dd961283a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e1657600b54600a54945094505050509091565b6001600060078381548110611e2d57611e2d61283a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611e5c9084612801565b92506002600060078381548110611e7557611e7561283a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611ea49083612801565b915080611eb081612866565b915050611d73565b50600a54600b54611ec99190612818565b821015611ee057600b54600a549350935050509091565b90939092509050565b611ef1612566565b81611f025760c081018390526108ac565b601154606490611f1290856128b6565b611f1c9190612818565b60e0820152601254606490611f3190856128b6565b611f3b9190612818565b610100820152601354606490611f5190856128b6565b611f5b9190612818565b610120820152601454606490611f7190856128b6565b611f7b9190612818565b610140820181905261012082015161010083015160e0840151611f9e9087612801565b611fa89190612801565b611fb29190612801565b611fbc9190612801565b60c082015292915050565b60008080808080611fd8878a6128b6565b955087611ff35750849350600092508291508190508061206b565b868a60e0015161200391906128b6565b9350868a610100015161201691906128b6565b9250868a610120015161202991906128b6565b9150868a60a0015161203b91906128b6565b905080828461204a878a612801565b6120549190612801565b61205e9190612801565b6120689190612801565b94505b9499939850945094509450565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120ad576120ad61283a565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214491906128d5565b816001815181106121575761215761283a565b6001600160a01b039283166020918202929092010152600854612183913091620100009004168461135c565b60085460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906121c19085906000908690309042906004016128f2565b600060405180830381600087803b1580156121db57600080fd5b505af11580156121ef573d6000803e3d6000fd5b505050505050565b6008546122159030906201000090046001600160a01b03168461135c565b60085460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af115801561228b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122b09190612963565b5050505050565b804710156123075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612354576040519150601f19603f3d011682016040523d82523d6000602084013e612359565b606091505b50509050806123d05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108dc565b505050565b81600b60008282546123e79190612801565b909155505060158054829190600090612401908490612881565b90915550505050565b806015600201600082825461241f9190612881565b90915550503060009081526005602052604090205460ff161561246157306000908152600260205260408120805483929061245b908490612881565b90915550505b3060009081526001602052604081208054849290612401908490612881565b806015600101600082825461241f9190612881565b80601560030160008282546124aa9190612881565b909155505061dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460ff16156125285761dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054839290612522908490612881565b90915550505b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054849290612401908490612881565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156125ed578581018301518582016040015282016125d1565b818111156125ff576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146110af57600080fd5b6000806040838503121561263d57600080fd5b823561264881612615565b946020939093013593505050565b60006020828403121561266857600080fd5b5035919050565b60008060006060848603121561268457600080fd5b833561268f81612615565b9250602084013561269f81612615565b929592945050506040919091013590565b6000602082840312156126c257600080fd5b8135610a1881612615565b600080604083850312156126e057600080fd5b82356126eb81612615565b915060208301356126fb81612615565b809150509250929050565b80151581146110af57600080fd5b6000806040838503121561272757600080fd5b8235915060208301356126fb81612706565b60006020828403121561274b57600080fd5b8135610a1881612706565b6000806000806080858703121561276c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561279b57600080fd5b82356127a681612615565b915060208301356126fb81612706565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015612813576128136127eb565b500390565b60008261283557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141561287a5761287a6127eb565b5060010190565b60008219821115612894576128946127eb565b500190565b6000602082840312156128ab57600080fd5b8151610a1881612706565b60008160001904831182151516156128d0576128d06127eb565b500290565b6000602082840312156128e757600080fd5b8151610a1881612615565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129425784516001600160a01b03168352938301939183019160010161291d565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561297857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202a08992f4aa584fedce1efc8d473afa1396a727fe395240cd238cf210175827864736f6c634300080a0033

Deployed ByteCode Sourcemap

3262:16787:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6140:83;;;;;;;;;;-1:-1:-1;6210:5:0;;;;;;;;;;;;-1:-1:-1;;;6210:5:0;;;;6140:83;;;;;;;:::i;:::-;;;;;;;;7048:161;;;;;;;;;;-1:-1:-1;7048:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7048:161:0;1072:187:1;6413:95:0;;;;;;;;;;-1:-1:-1;6493:7:0;;6413:95;;;1410:25:1;;;1398:2;1383:18;6413:95:0;1264:177:1;18922:109:0;;;;;;;;;;-1:-1:-1;18922:109:0;;;;;:::i;:::-;;:::i;:::-;;7217:422;;;;;;;;;;-1:-1:-1;7217:422:0;;;;;:::i;:::-;;:::i;4237:80::-;;;;;;;;;;;;4275:42;4237:80;;;;;-1:-1:-1;;;;;2256:32:1;;;2238:51;;2226:2;2211:18;4237:80:0;2092:203:1;8847:248:0;;;;;;;;;;-1:-1:-1;8847:248:0;;;;;:::i;:::-;;:::i;6322:83::-;;;;;;;;;;-1:-1:-1;6322:83:0;;3886:1;2442:36:1;;2430:2;2415:18;6322:83:0;2300:184:1;9442:473:0;;;;;;;;;;-1:-1:-1;9442:473:0;;;;;:::i;:::-;;:::i;7647:215::-;;;;;;;;;;-1:-1:-1;7647:215:0;;;;;:::i;:::-;;:::i;3646:37::-;;;;;;;;;;-1:-1:-1;3646:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4374:45;;;;;;;;;;-1:-1:-1;4374:45:0;;;;-1:-1:-1;;;;;4374:45:0;;;19274:154;;;;;;;;;;-1:-1:-1;19274:154:0;;;;;:::i;:::-;;:::i;9925:111::-;;;;;;;;;;-1:-1:-1;9925:111:0;;;;;:::i;:::-;;:::i;8383:456::-;;;;;;;;;;-1:-1:-1;8383:456:0;;;;;:::i;:::-;;:::i;19850:154::-;;;;;;;;;;-1:-1:-1;19850:154:0;;;;;:::i;:::-;;:::i;18553:253::-;;;;;;;;;;-1:-1:-1;18553:253:0;;;;;:::i;:::-;;:::i;9103:331::-;;;;;;;;;;-1:-1:-1;9103:331:0;;;;;:::i;:::-;;:::i;10164:123::-;;;;;;;;;;-1:-1:-1;10164:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10252:27:0;10228:4;10252:27;;;:18;:27;;;;;;;;;10164:123;18814:100;;;;;;;;;;-1:-1:-1;18814:100:0;;;;;:::i;:::-;;:::i;3728:30::-;;;;;;;;;;-1:-1:-1;3728:30:0;;;;;;;;6516:198;;;;;;;;;;-1:-1:-1;6516:198:0;;;;;:::i;:::-;;:::i;2039:94::-;;;;;;;;;;;;;:::i;4649:35::-;;;;;;;;;;-1:-1:-1;4649:35:0;;;;;;;;;;;;;;;;;;;3802:25:1;;;3858:2;3843:18;;3836:34;;;;3886:18;;;3879:34;3944:2;3929:18;;3922:34;3789:3;3774:19;4649:35:0;3571:391:1;19436:109:0;;;;;;;;;;;;;:::i;4324:43::-;;;;;;;;;;-1:-1:-1;4324:43:0;;;;-1:-1:-1;;;;;4324:43:0;;;8255:120;;;;;;;;;;-1:-1:-1;8255:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;8347:20:0;8323:4;8347:20;;;:11;:20;;;;;;;;;8255:120;4121:48;;;;;;;;;;;;;;;;1816:87;;;;;;;;;;-1:-1:-1;1862:7:0;1889:6;-1:-1:-1;;;;;1889:6:0;1816:87;;19161:101;;;;;;;;;;-1:-1:-1;19161:101:0;;;;;:::i;:::-;;:::i;6229:87::-;;;;;;;;;;-1:-1:-1;6301:7:0;;;;;;;;;;;;-1:-1:-1;;;6301:7:0;;;;6229:87;;4882:36;;;;;;;;;;-1:-1:-1;4882:36:0;;;;;;;;;;;;;;;10295:173;;;;;;;;;;-1:-1:-1;10295:173:0;;;;;:::i;:::-;;:::i;7870:377::-;;;;;;;;;;-1:-1:-1;7870:377:0;;;;;:::i;:::-;;:::i;3823:19::-;;;;;;;;;;-1:-1:-1;3823:19:0;;;;-1:-1:-1;;;;;3823:19:0;;;6722:167;;;;;;;;;;-1:-1:-1;6722:167:0;;;;;:::i;:::-;;:::i;4176:52::-;;;;;;;;;;;;;;;;19554:116;;;;;;;;;;-1:-1:-1;19554:116:0;;;;;:::i;:::-;;:::i;19039:114::-;;;;;;;;;;-1:-1:-1;19039:114:0;;;;;:::i;:::-;;:::i;6897:143::-;;;;;;;;;;-1:-1:-1;6897:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7005:18:0;;;6978:7;7005:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6897:143;4071:43;;;;;;;;;;;;;;;;10044:110;;;;;;;;;;-1:-1:-1;10044:110:0;;;;;:::i;:::-;;:::i;2141:192::-;;;;;;;;;;-1:-1:-1;2141:192:0;;;;;:::i;:::-;;:::i;3795:21::-;;;;;;;;;;-1:-1:-1;3795:21:0;;;;;;;-1:-1:-1;;;;;3795:21:0;;;7048:161;7123:4;7140:39;1317:10;7163:7;7172:6;7140:8;:39::i;:::-;-1:-1:-1;7197:4:0;7048:161;;;;;:::o;18922:109::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;;;;;;;;;18999:15:::1;:24:::0;18922:109::o;7217:422::-;7323:4;7340:36;7350:6;7358:9;7369:6;7340:9;:36::i;:::-;-1:-1:-1;;;;;7416:19:0;;7389:24;7416:19;;;:11;:19;;;;;;;;1317:10;7416:33;;;;;;;;7468:26;;;;7460:79;;;;-1:-1:-1;;;7460:79:0;;5776:2:1;7460:79:0;;;5758:21:1;5815:2;5795:18;;;5788:30;5854:34;5834:18;;;5827:62;-1:-1:-1;;;5905:18:1;;;5898:38;5953:19;;7460:79:0;5574:404:1;7460:79:0;7550:57;7559:6;1317:10;7581:25;7600:6;7581:16;:25;:::i;:::-;7550:8;:57::i;:::-;-1:-1:-1;7627:4:0;;7217:422;-1:-1:-1;;;;7217:422:0:o;8847:248::-;8913:7;8952;;8941;:18;;8933:73;;;;-1:-1:-1;;;8933:73:0;;6447:2:1;8933:73:0;;;6429:21:1;6486:2;6466:18;;;6459:30;6525:34;6505:18;;;6498:62;-1:-1:-1;;;6576:18:1;;;6569:40;6626:19;;8933:73:0;6245:406:1;8933:73:0;9017:19;9040:10;:8;:10::i;:::-;9017:33;-1:-1:-1;9068:19:0;9017:33;9068:7;:19;:::i;:::-;9061:26;8847:248;-1:-1:-1;;;8847:248:0:o;9442:473::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9522:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9514:56;;;::::0;-1:-1:-1;;;9514:56:0;;7080:2:1;9514:56:0::1;::::0;::::1;7062:21:1::0;7119:2;7099:18;;;7092:30;7158:25;7138:18;;;7131:53;7201:18;;9514:56:0::1;6878:347:1::0;9514:56:0::1;9586:9;9581:327;9605:9;:16:::0;9601:20;::::1;9581:327;;;9663:7;-1:-1:-1::0;;;;;9647:23:0::1;:9;9657:1;9647:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9647:12:0::1;:23;9643:254;;;9706:9;9716:16:::0;;:20:::1;::::0;9735:1:::1;::::0;9716:20:::1;:::i;:::-;9706:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;9691:9:::1;:12:::0;;-1:-1:-1;;;;;9706:31:0;;::::1;::::0;9701:1;;9691:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;9691:46:0::1;-1:-1:-1::0;;;;;9691:46:0;;::::1;;::::0;;9756:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;9795:11:::1;:20:::0;;;;:28;;-1:-1:-1;;9795:28:0::1;::::0;;9842:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;9842:15:0;;;;;-1:-1:-1;;;;;;9842:15:0::1;::::0;;;;;9581:327:::1;9442:473:::0;:::o;9643:254::-:1;9623:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9581:327;;;;9442:473:::0;:::o;7647:215::-;1317:10;7735:4;7784:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7784:34:0;;;;;;;;;;7735:4;;7752:80;;7775:7;;7784:47;;7821:10;;7784:47;:::i;19274:154::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;19368:6:::1;:27:::0;;-1:-1:-1;;;;;;19368:27:0::1;::::0;-1:-1:-1;;;;;19368:27:0;;::::1;;;::::0;;19406:4:::1;:14:::0;;-1:-1:-1;;;;;;19406:14:0::1;::::0;;;::::1;;::::0;;19274:154::o;9925:111::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9994:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;9994:34:0::1;10024:4;9994:34;::::0;;9925:111::o;8383:456::-;8473:7;8512;;8501;:18;;8493:62;;;;-1:-1:-1;;;8493:62:0;;7969:2:1;8493:62:0;;;7951:21:1;8008:2;7988:18;;;7981:30;8047:33;8027:18;;;8020:61;8098:18;;8493:62:0;7767:355:1;8493:62:0;8571:17;8566:266;;8605:28;8636:25;8647:7;8656:4;8636:10;:25::i;:::-;8683:9;;-1:-1:-1;8676:16:0;;-1:-1:-1;8676:16:0;8566:266;8725:28;8756:25;8767:7;8776:4;8756:10;:25::i;:::-;8803:17;;;;-1:-1:-1;8796:24:0;;-1:-1:-1;8796:24:0;19850:154;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;19955:41:::1;::::0;-1:-1:-1;;;19955:41:0;;-1:-1:-1;;;;;8319:32:1;;;19955:41:0::1;::::0;::::1;8301:51:1::0;8368:18;;;8361:34;;;19955:27:0;::::1;::::0;::::1;::::0;8274:18:1;;19955:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19850:154:::0;;;:::o;18553:253::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;18660:15:::1;:36:::0;;-1:-1:-1;;;;;18660:36:0;;::::1;-1:-1:-1::0;;;;;;18660:36:0;;::::1;::::0;::::1;::::0;;;:15:::1;18707:35:::0;;;:18:::1;:35;::::0;;;;;:42;;-1:-1:-1;;18707:42:0::1;18660:36:::0;18707:42:::1;::::0;;18760:17:::1;:38:::0;;;;;::::1;::::0;::::1;;::::0;;18553:253::o;9103:331::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9184:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9183:21;9175:61;;;::::0;-1:-1:-1;;;9175:61:0;;8858:2:1;9175:61:0::1;::::0;::::1;8840:21:1::0;8897:2;8877:18;;;8870:30;8936:29;8916:18;;;8909:57;8983:18;;9175:61:0::1;8656:351:1::0;9175:61:0::1;-1:-1:-1::0;;;;;9250:16:0;::::1;9269:1;9250:16:::0;;;:7:::1;:16;::::0;;;;;:20;9247:108:::1;;-1:-1:-1::0;;;;;9326:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9306:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9287:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9247:108:::1;-1:-1:-1::0;;;;;9365:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9365:27:0::1;9388:4;9365:27:::0;;::::1;::::0;;;9403:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9403:23:0::1;::::0;;::::1;::::0;;9103:331::o;18814:100::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;18886:11:::1;:20:::0;18814:100::o;6516:198::-;-1:-1:-1;;;;;6606:20:0;;6582:7;6606:20;;;:11;:20;;;;;;;;6602:49;;;-1:-1:-1;;;;;;6635:16:0;;;;;:7;:16;;;;;;;6516:198::o;6602:49::-;-1:-1:-1;;;;;6689:16:0;;;;;;:7;:16;;;;;;6669:37;;:19;:37::i;2039:94::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;2104:21:::1;2122:1;2104:9;:21::i;:::-;2039:94::o:0;19436:109::-;19487:17;;19479:58;;-1:-1:-1;;;;;19487:17:0;;;;19515:21;19479:58;;;;;19487:17;19479:58;19487:17;19479:58;19515:21;19487:17;19479:58;;;;;;;;;;;;;;;;;;;;;19436:109::o;19161:101::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;19232:11:::1;:22:::0;;-1:-1:-1;;19232:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19161:101::o;10295:173::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;10418:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;10410:5:::1;:50:::0;;;;;;;;;;;;;10295:173::o;7870:377::-;1317:10;7963:4;8007:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8007:34:0;;;;;;;;;;8060:35;;;;8052:85;;;;-1:-1:-1;;;8052:85:0;;9214:2:1;8052:85:0;;;9196:21:1;9253:2;9233:18;;;9226:30;9292:34;9272:18;;;9265:62;-1:-1:-1;;;9343:18:1;;;9336:35;9388:19;;8052:85:0;9012:401:1;8052:85:0;8148:67;1317:10;8171:7;8180:34;8199:15;8180:16;:34;:::i;8148:67::-;-1:-1:-1;8235:4:0;;7870:377;-1:-1:-1;;;7870:377:0:o;6722:167::-;6800:4;6817:42;1317:10;6841:9;6852:6;6817:9;:42::i;19554:116::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19636:17:0;;;::::1;;::::0;;;:5:::1;:17;::::0;;;;:26;;-1:-1:-1;;19636:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19554:116::o;19039:114::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;19118:18:::1;:27:::0;19039:114::o;10044:110::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10111:27:0::1;10141:5;10111:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10111:35:0::1;::::0;;10044:110::o;2141:192::-;1862:7;1889:6;-1:-1:-1;;;;;1889:6:0;1317:10;1951:23;1943:68;;;;-1:-1:-1;;;1943:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2230:22:0;::::1;2222:73;;;::::0;-1:-1:-1;;;2222:73:0;;9620:2:1;2222:73:0::1;::::0;::::1;9602:21:1::0;9659:2;9639:18;;;9632:30;9698:34;9678:18;;;9671:62;-1:-1:-1;;;9749:18:1;;;9742:36;9795:19;;2222:73:0::1;9418:402:1::0;2222:73:0::1;2306:19;2316:8;2306:9;:19::i;13758:335::-:0;-1:-1:-1;;;;;13851:19:0;;13843:68;;;;-1:-1:-1;;;13843:68:0;;10027:2:1;13843:68:0;;;10009:21:1;10066:2;10046:18;;;10039:30;10105:34;10085:18;;;10078:62;-1:-1:-1;;;10156:18:1;;;10149:34;10200:19;;13843:68:0;9825:400:1;13843:68:0;-1:-1:-1;;;;;13930:21:0;;13922:68;;;;-1:-1:-1;;;13922:68:0;;10432:2:1;13922:68:0;;;10414:21:1;10471:2;10451:18;;;10444:30;10510:34;10490:18;;;10483:62;-1:-1:-1;;;10561:18:1;;;10554:32;10603:19;;13922:68:0;10230:398:1;13922:68:0;-1:-1:-1;;;;;14001:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14053:32;;1410:25:1;;;14053:32:0;;1383:18:1;14053:32:0;;;;;;;13758:335;;;:::o;14103:1114::-;-1:-1:-1;;;;;14191:18:0;;14183:68;;;;-1:-1:-1;;;14183:68:0;;10835:2:1;14183:68:0;;;10817:21:1;10874:2;10854:18;;;10847:30;10913:34;10893:18;;;10886:62;-1:-1:-1;;;10964:18:1;;;10957:35;11009:19;;14183:68:0;10633:401:1;14183:68:0;-1:-1:-1;;;;;14270:16:0;;14262:64;;;;-1:-1:-1;;;14262:64:0;;11241:2:1;14262:64:0;;;11223:21:1;11280:2;11260:18;;;11253:30;11319:34;11299:18;;;11292:62;-1:-1:-1;;;11370:18:1;;;11363:33;11413:19;;14262:64:0;11039:399:1;14262:64:0;-1:-1:-1;;;;;14346:11:0;;;;;;:5;:11;;;;;;;;14345:12;14337:48;;;;-1:-1:-1;;;14337:48:0;;11645:2:1;14337:48:0;;;11627:21:1;11684:2;11664:18;;;11657:30;11723:25;11703:18;;;11696:53;11766:18;;14337:48:0;11443:347:1;14337:48:0;14413:1;14404:6;:10;14396:64;;;;-1:-1:-1;;;14396:64:0;;11997:2:1;14396:64:0;;;11979:21:1;12036:2;12016:18;;;12009:30;12075:34;12055:18;;;12048:62;-1:-1:-1;;;12126:18:1;;;12119:39;12175:19;;14396:64:0;11795:405:1;14396:64:0;14489:15;14499:4;14489:9;:15::i;:::-;14479:6;:25;;14471:86;;;;-1:-1:-1;;;14471:86:0;;12407:2:1;14471:86:0;;;12389:21:1;12446:2;12426:18;;;12419:30;12485:34;12465:18;;;12458:62;-1:-1:-1;;;12536:18:1;;;12529:47;12593:19;;14471:86:0;12205:413:1;14471:86:0;-1:-1:-1;;;;;14582:24:0;;;;;;:18;:24;;;;;;;;14581:25;:52;;;;-1:-1:-1;;;;;;14611:22:0;;;;;;:18;:22;;;;;;;;14610:23;14581:52;14578:263;;;14658:4;;-1:-1:-1;;;;;14652:10:0;;;14658:4;;14652:10;14649:102;;14698:15;;14688:6;14672:13;14682:2;14672:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;14664:87;;;;-1:-1:-1;;;14664:87:0;;12825:2:1;14664:87:0;;;12807:21:1;12864:2;12844:18;;;12837:30;12903:34;12883:18;;;12876:62;-1:-1:-1;;;12954:18:1;;;12947:31;12995:19;;14664:87:0;12623:397:1;14664:87:0;14784:11;;14774:6;:21;;14766:63;;;;-1:-1:-1;;;14766:63:0;;13227:2:1;14766:63:0;;;13209:21:1;13266:2;13246:18;;;13239:30;13305:31;13285:18;;;13278:59;13354:18;;14766:63:0;13025:353:1;14766:63:0;14866:12;14909:18;;14881:24;14899:4;14881:9;:24::i;:::-;14942:8;;-1:-1:-1;;14881:46:0;;-1:-1:-1;14942:8:0;;;;;14941:9;:24;;;;-1:-1:-1;14954:11:0;;;;14941:24;:35;;;;;14969:7;14941:35;:51;;;;-1:-1:-1;14988:4:0;;-1:-1:-1;;;;;14980:12:0;;;14988:4;;14980:12;;14941:51;:80;;;;-1:-1:-1;;;;;;14997:24:0;;;;;;:18;:24;;;;;;;;14996:25;14941:80;:107;;;;-1:-1:-1;;;;;;15026:22:0;;;;;;:18;:22;;;;;;;;15025:23;14941:107;14938:172;;;15064:34;15079:18;;15064:14;:34::i;:::-;-1:-1:-1;;;;;15157:24:0;;;;;;:18;:24;;;;;;15122:87;;15137:4;;15143:2;;15147:6;;15157:24;;;:50;;-1:-1:-1;;;;;;15185:22:0;;;;;;:18;:22;;;;;;;;15157:50;15155:53;15122:14;:87::i;13044:158::-;13085:7;13106:15;13123;13142:19;:17;:19::i;:::-;13105:56;;-1:-1:-1;13105:56:0;-1:-1:-1;13179:15:0;13105:56;;13179:15;:::i;:::-;13172:22;;;;13044:158;:::o;11445:387::-;11518:36;;:::i;:::-;11579:29;11591:7;11600;11579:11;:29::i;:::-;11567:41;;11745:52;11757:9;11768:7;11777;11786:10;:8;:10::i;:::-;11745:11;:52::i;:::-;11726:15;;;11619:178;11704:20;;;11619:178;11682:20;;;11619:178;11666:14;;;11619:178;11639:25;;;11619:178;;;11445:387;;;;:::o;2341:173::-;2397:16;2416:6;;-1:-1:-1;;;;;2433:17:0;;;-1:-1:-1;;;;;;2433:17:0;;;;;;2466:40;;2416:6;;;;;;;2466:40;;2397:16;2466:40;2386:128;2341:173;:::o;16502:960::-;5349:8;:15;;-1:-1:-1;;5349:15:0;;;;;16663;;16645;;5349;;16645:33:::1;::::0;::::1;:::i;:::-;16644:40;::::0;16683:1:::1;16644:40;:::i;:::-;16622:62;;16695:32;16757:11;16739:5;:15;;;16730:6;:24;;;;:::i;:::-;:38;;;;:::i;:::-;16695:73:::0;-1:-1:-1;16779:14:0::1;16796:33;16695:73:::0;16796:6;:33:::1;:::i;:::-;16779:50:::0;-1:-1:-1;16867:21:0::1;16901:24;16779:50:::0;16901:16:::1;:24::i;:::-;16938:20;16961:38;16985:14:::0;16961:21:::1;:38;:::i;:::-;17061:15:::0;;16938:61;;-1:-1:-1;17010:19:0::1;::::0;17047:29:::1;::::0;:11;:29:::1;:::i;:::-;17031:46;::::0;:12;:46:::1;:::i;:::-;17134:15:::0;;17010:67;;-1:-1:-1;17088:29:0::1;::::0;17120::::1;::::0;17010:67;17120:29:::1;:::i;:::-;17088:61:::0;-1:-1:-1;17165:25:0;;17162:117:::1;;17206:61;17219:24;17245:21;17206:12;:61::i;:::-;17332:15:::0;;17291:20:::1;::::0;17314:15:::1;:11:::0;17328:1:::1;17314:15;:::i;:::-;:33;;;;:::i;:::-;17291:56:::0;-1:-1:-1;17361:16:0;;17358:95:::1;;17401:15;::::0;17393:48:::1;::::0;-1:-1:-1;;;;;17401:15:0::1;17428:12:::0;17393:34:::1;:48::i;:::-;-1:-1:-1::0;;5387:8:0;:16;;-1:-1:-1;;5387:16:0;;;-1:-1:-1;;;;;;;16502:960:0:o;15300:1194::-;15411:28;15442;15453:7;15462;15442:10;:28::i;:::-;-1:-1:-1;;;;;15487:19:0;;;;;;:11;:19;;;;;;15411:59;;-1:-1:-1;15487:19:0;;15483:115;;;-1:-1:-1;;;;;15563:15:0;;;;;;:7;:15;;;;;;:23;;15579:7;;15563:23;:::i;:::-;-1:-1:-1;;;;;15545:15:0;;;;;;:7;:15;;;;;:41;15483:115;-1:-1:-1;;;;;15612:22:0;;;;;;:11;:22;;;;;;;;15608:130;;;15709:17;;;;-1:-1:-1;;;;;15690:18:0;;;;;;:7;:18;;;;;;:36;;15709:17;15690:36;:::i;:::-;-1:-1:-1;;;;;15669:18:0;;;;;;:7;:18;;;;;:57;15608:130;15784:9;;-1:-1:-1;;;;;15768:15:0;;15784:9;15768:15;;;:7;:15;;;;;;:25;;15784:9;15768:25;:::i;:::-;-1:-1:-1;;;;;15750:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;15844:17;;;15825:18;;;;;;;;;;:36;;15844:17;15825:36;:::i;:::-;-1:-1:-1;;;;;15804:18:0;;;;;;:7;:18;;;;;;;:57;;;;15885:6;;;:10;;;:24;;;15908:1;15899;:6;;;:10;15885:24;15882:56;;;15911:27;15923:1;:6;;;15931:1;:6;;;15911:11;:27::i;:::-;15967:1;15952;:12;;;:16;:36;;;;15987:1;15972;:12;;;:16;15952:36;15949:109;;;16005:41;16020:1;:12;;;16033:1;:12;;;16005:14;:41::i;:::-;16086:1;16071;:12;;;:16;:36;;;;16106:1;16091;:12;;;:16;16071:36;16068:109;;;16123:42;16138:1;:12;;;16152:1;:12;;;16123:14;:42::i;:::-;16200:1;16190;:7;;;:11;:26;;;;16215:1;16205;:7;;;:11;16190:26;16187:142;;;16232:27;16242:1;:7;;;16251:1;:7;;;16232:9;:27::i;:::-;4275:42;-1:-1:-1;;;;;16279:38:0;16288:6;-1:-1:-1;;;;;16279:38:0;;16309:1;:7;;;16279:38;;;;1410:25:1;;1398:2;1383:18;;1264:177;16279:38:0;;;;;;;;16187:142;16371:9;-1:-1:-1;;;;;16354:46:0;16363:6;-1:-1:-1;;;;;16354:46:0;;16382:1;:17;;;16354:46;;;;1410:25:1;;1398:2;1383:18;;1264:177;16354:46:0;;;;;;;;16441:4;-1:-1:-1;;;;;16416:60:0;16425:6;-1:-1:-1;;;;;16416:60:0;;16463:1;:12;;;16448:1;:12;;;:27;;;;:::i;:::-;16416:60;;1410:25:1;;;1398:2;1383:18;16416:60:0;;;;;;;15398:1096;15300:1194;;;;:::o;13210:540::-;13307:7;;13343;;13260;;;;;13361:279;13385:9;:16;13381:20;;13361:279;;;13451:7;13427;:21;13435:9;13445:1;13435:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13435:12:0;13427:21;;;;;;;;;;;;;:31;;:66;;;13486:7;13462;:21;13470:9;13480:1;13470:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13470:12:0;13462:21;;;;;;;;;;;;;:31;13427:66;13423:97;;;13503:7;;13512;;13495:25;;;;;;;13210:540;;:::o;13423:97::-;13553:7;:21;13561:9;13571:1;13561:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13561:12:0;13553:21;;;;;;;;;;;;;13545:29;;:7;:29;:::i;:::-;13535:39;;13607:7;:21;13615:9;13625:1;13615:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13615:12:0;13607:21;;;;;;;;;;;;;13599:29;;:7;:29;:::i;:::-;13589:39;-1:-1:-1;13403:3:0;;;;:::i;:::-;;;;13361:279;;;;13672:7;;13664;;:15;;;;:::i;:::-;13654:7;:25;13650:56;;;13689:7;;13698;;13681:25;;;;;;13210:540;;:::o;13650:56::-;13725:7;;13734;;-1:-1:-1;13210:540:0;-1:-1:-1;13210:540:0:o;11840:500::-;11914:28;;:::i;:::-;11961:7;11957:86;;11983:17;;;:27;;;12023:8;;11957:86;12072:5;:9;12082:3;;12064:17;;:7;:17;:::i;:::-;:21;;;;:::i;:::-;12055:6;;;:30;12119:15;;12135:3;;12111:23;;:7;:23;:::i;:::-;:27;;;;:::i;:::-;12096:12;;;:42;12172:15;;12188:3;;12164:23;;:7;:23;:::i;:::-;:27;;;;:::i;:::-;12149:12;;;:42;12220:10;;12231:3;;12212:18;;:7;:18;:::i;:::-;:22;;;;:::i;:::-;12202:7;;;:32;;;12293:12;;;;12280;;;;12273:6;;;;12265:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:48;;;;:::i;:::-;12245:17;;;:68;11840:500;;;;:::o;12348:688::-;12473:15;;;;;;12605:19;12613:11;12605:7;:19;:::i;:::-;12595:29;;12641:7;12637:71;;-1:-1:-1;12670:7:0;;-1:-1:-1;12688:1:0;;-1:-1:-1;12688:1:0;;-1:-1:-1;12688:1:0;;-1:-1:-1;12688:1:0;12663:33;;12637:71;12734:11;12727:1;:6;;;:18;;;;:::i;:::-;12720:25;;12782:11;12769:1;:12;;;:24;;;;:::i;:::-;12756:37;;12830:11;12817:1;:12;;;:24;;;;:::i;:::-;12804:37;;12868:11;12860:1;:7;;;:19;;;;:::i;:::-;12852:27;-1:-1:-1;12852:27:0;12933:10;12922;12909:12;12917:4;12909:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:40;;;;:::i;:::-;12890:59;;12348:688;;;;;;;;;;;;:::o;17983:562::-;18133:16;;;18147:1;18133:16;;;;;;;;18109:21;;18133:16;;;;;;;;;;-1:-1:-1;18133:16:0;18109:40;;18178:4;18160;18165:1;18160:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18160:23:0;;;-1:-1:-1;;;;;18160:23:0;;;;;18204:6;;;;;;;;;-1:-1:-1;;;;;18204:6:0;-1:-1:-1;;;;;18204:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18194:4;18199:1;18194:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18194:23:0;;;:7;;;;;;;;;:23;18262:6;;18230:53;;18247:4;;18262:6;;;;18271:11;18230:8;:53::i;:::-;18322:6;;:215;;-1:-1:-1;;;18322:215:0;;:6;;;;-1:-1:-1;;;;;18322:6:0;;:57;;:215;;18394:11;;18420:1;;18464:4;;18491;;18511:15;;18322:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18038:507;17983:562;:::o;17470:505::-;17650:6;;17618:53;;17635:4;;17650:6;;;-1:-1:-1;;;;;17650:6:0;17659:11;17618:8;:53::i;:::-;17714:6;;17909:17;;17714:253;;-1:-1:-1;;;17714:253:0;;17777:4;17714:253;;;15270:34:1;15320:18;;;15313:34;;;17823:1:0;15363:18:1;;;15356:34;;;15406:18;;;15399:34;-1:-1:-1;;;;;17909:17:0;;;15449:19:1;;;15442:44;17941:15:0;15502:19:1;;;15495:35;17714:6:0;;;;;;:22;;17744:9;;15204:19:1;;17714:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17470:505;;:::o;880:317::-;995:6;970:21;:31;;962:73;;;;-1:-1:-1;;;962:73:0;;16054:2:1;962:73:0;;;16036:21:1;16093:2;16073:18;;;16066:30;16132:31;16112:18;;;16105:59;16181:18;;962:73:0;15852:353:1;962:73:0;1049:12;1067:9;-1:-1:-1;;;;;1067:14:0;1089:6;1067:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1048:52;;;1119:7;1111:78;;;;-1:-1:-1;;;1111:78:0;;16622:2:1;1111:78:0;;;16604:21:1;16661:2;16641:18;;;16634:30;16700:34;16680:18;;;16673:62;16771:28;16751:18;;;16744:56;16817:19;;1111:78:0;16420:422:1;1111:78:0;951:246;880:317;;:::o;10476:123::-;10554:4;10544:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;10569:11:0;:22;;10587:4;;10569:11;:15;;:22;;10587:4;;10569:22;:::i;:::-;;;;-1:-1:-1;;;;10476:123:0:o;10607:284::-;10714:10;10690:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;10760:4:0;10740:26;;;;:11;:26;;;;;;;;10737:101;;;10808:4;10792:22;;;;:7;:22;;;;;:34;;10816:10;;10792:22;:34;;10816:10;;10792:34;:::i;:::-;;;;-1:-1:-1;;10737:101:0;10864:4;10848:22;;;;:7;:22;;;;;:35;;10873:10;;10848:22;:35;;10873:10;;10848:35;:::i;10899:284::-;11006:10;10982:11;:21;;;:34;;;;;;;:::i;11195:242::-;11281:5;11262:11;:16;;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;4275:42:0;11302:24;;:11;:24;;;;;;11299:92;;;4275:42;11352:20;;;;:7;:20;;;:27;;11374:5;;11352:20;:27;;11374:5;;11352:27;:::i;:::-;;;;-1:-1:-1;;11299:92:0;4275:42;11401:20;;;;:7;:20;;;:28;;11424:5;;11401:20;:28;;11424:5;;11401:28;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:180::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;-1:-1:-1;1597:23:1;;1446:180;-1:-1:-1;1446:180:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:118::-;3220:5;3213:13;3206:21;3199:5;3196:32;3186:60;;3242:1;3239;3232:12;3257:309;3322:6;3330;3383:2;3371:9;3362:7;3358:23;3354:32;3351:52;;;3399:1;3396;3389:12;3351:52;3435:9;3422:23;3412:33;;3495:2;3484:9;3480:18;3467:32;3508:28;3530:5;3508:28;:::i;3967:241::-;4023:6;4076:2;4064:9;4055:7;4051:23;4047:32;4044:52;;;4092:1;4089;4082:12;4044:52;4131:9;4118:23;4150:28;4172:5;4150:28;:::i;4213:385::-;4299:6;4307;4315;4323;4376:3;4364:9;4355:7;4351:23;4347:33;4344:53;;;4393:1;4390;4383:12;4344:53;-1:-1:-1;;4416:23:1;;;4486:2;4471:18;;4458:32;;-1:-1:-1;4537:2:1;4522:18;;4509:32;;4588:2;4573:18;4560:32;;-1:-1:-1;4213:385:1;-1:-1:-1;4213:385:1:o;4603:382::-;4668:6;4676;4729:2;4717:9;4708:7;4704:23;4700:32;4697:52;;;4745:1;4742;4735:12;4697:52;4784:9;4771:23;4803:31;4828:5;4803:31;:::i;:::-;4853:5;-1:-1:-1;4910:2:1;4895:18;;4882:32;4923:30;4882:32;4923:30;:::i;5213:356::-;5415:2;5397:21;;;5434:18;;;5427:30;5493:34;5488:2;5473:18;;5466:62;5560:2;5545:18;;5213:356::o;5983:127::-;6044:10;6039:3;6035:20;6032:1;6025:31;6075:4;6072:1;6065:15;6099:4;6096:1;6089:15;6115:125;6155:4;6183:1;6180;6177:8;6174:34;;;6188:18;;:::i;:::-;-1:-1:-1;6225:9:1;;6115:125::o;6656:217::-;6696:1;6722;6712:132;;6766:10;6761:3;6757:20;6754:1;6747:31;6801:4;6798:1;6791:15;6829:4;6826:1;6819:15;6712:132;-1:-1:-1;6858:9:1;;6656:217::o;7230:127::-;7291:10;7286:3;7282:20;7279:1;7272:31;7322:4;7319:1;7312:15;7346:4;7343:1;7336:15;7362:127;7423:10;7418:3;7414:20;7411:1;7404:31;7454:4;7451:1;7444:15;7478:4;7475:1;7468:15;7494:135;7533:3;-1:-1:-1;;7554:17:1;;7551:43;;;7574:18;;:::i;:::-;-1:-1:-1;7621:1:1;7610:13;;7494:135::o;7634:128::-;7674:3;7705:1;7701:6;7698:1;7695:13;7692:39;;;7711:18;;:::i;:::-;-1:-1:-1;7747:9:1;;7634:128::o;8406:245::-;8473:6;8526:2;8514:9;8505:7;8501:23;8497:32;8494:52;;;8542:1;8539;8532:12;8494:52;8574:9;8568:16;8593:28;8615:5;8593:28;:::i;13383:168::-;13423:7;13489:1;13485;13481:6;13477:14;13474:1;13471:21;13466:1;13459:9;13452:17;13448:45;13445:71;;;13496:18;;:::i;:::-;-1:-1:-1;13536:9:1;;13383:168::o;13688:251::-;13758:6;13811:2;13799:9;13790:7;13786:23;13782:32;13779:52;;;13827:1;13824;13817:12;13779:52;13859:9;13853:16;13878:31;13903:5;13878:31;:::i;13944:980::-;14206:4;14254:3;14243:9;14239:19;14285:6;14274:9;14267:25;14311:2;14349:6;14344:2;14333:9;14329:18;14322:34;14392:3;14387:2;14376:9;14372:18;14365:31;14416:6;14451;14445:13;14482:6;14474;14467:22;14520:3;14509:9;14505:19;14498:26;;14559:2;14551:6;14547:15;14533:29;;14580:1;14590:195;14604:6;14601:1;14598:13;14590:195;;;14669:13;;-1:-1:-1;;;;;14665:39:1;14653:52;;14760:15;;;;14725:12;;;;14701:1;14619:9;14590:195;;;-1:-1:-1;;;;;;;14841:32:1;;;;14836:2;14821:18;;14814:60;-1:-1:-1;;;14905:3:1;14890:19;14883:35;14802:3;13944:980;-1:-1:-1;;;13944:980:1:o;15541:306::-;15629:6;15637;15645;15698:2;15686:9;15677:7;15673:23;15669:32;15666:52;;;15714:1;15711;15704:12;15666:52;15743:9;15737:16;15727:26;;15793:2;15782:9;15778:18;15772:25;15762:35;;15837:2;15826:9;15822:18;15816:25;15806:35;;15541:306;;;;;:::o

Swarm Source

ipfs://2a08992f4aa584fedce1efc8d473afa1396a727fe395240cd238cf2101758278
Loading