ETH Price: $3,419.86 (-0.59%)
Gas: 11 Gwei

Contract

0x796Ef302E922FBe7020CcC1a5EaD2dA2970d2FF7
 

Overview

ETH Balance

0.012662520000000118 ETH

Eth Value

$43.30 (@ $3,419.86/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve202992822024-07-13 18:10:354 days ago1720894235IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000153032.7420975
Transfer202992412024-07-13 18:01:594 days ago1720893719IN
NAVRAS Tech: NAVRAS Token
0.01266252 ETH0.0002105510
Approve202374562024-07-05 2:55:2312 days ago1720148123IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000519169.26420537
Approve202125692024-07-01 15:29:3516 days ago1719847775IN
NAVRAS Tech: NAVRAS Token
0 ETH0.0008624515.38995837
Approve199293562024-05-23 1:38:5955 days ago1716428339IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000201647.97852297
Approve199293522024-05-23 1:38:1155 days ago1716428291IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000207858.22409711
Approve199293462024-05-23 1:36:5955 days ago1716428219IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000452768.07928393
Approve198200622024-05-07 18:45:1171 days ago1715107511IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000459848.23666523
Transfer198194322024-05-07 16:38:3571 days ago1715099915IN
NAVRAS Tech: NAVRAS Token
0 ETH0.00027636.55609685
Transfer198194292024-05-07 16:37:5971 days ago1715099879IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000294466.28555742
Transfer198194282024-05-07 16:37:4771 days ago1715099867IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000266375.67863684
Transfer198194252024-05-07 16:37:1171 days ago1715099831IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000318536.79246847
Transfer198194232024-05-07 16:36:4771 days ago1715099807IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000336247.16810898
Transfer198194212024-05-07 16:36:2371 days ago1715099783IN
NAVRAS Tech: NAVRAS Token
0 ETH0.0003497.44017651
Transfer198194182024-05-07 16:35:4771 days ago1715099747IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000342977.30978118
Transfer198194162024-05-07 16:35:2371 days ago1715099723IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000348317.42546035
Transfer198194142024-05-07 16:34:5971 days ago1715099699IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000362557.7269955
Transfer198194122024-05-07 16:34:3571 days ago1715099675IN
NAVRAS Tech: NAVRAS Token
0 ETH0.00033527.14424127
Transfer198194102024-05-07 16:34:1171 days ago1715099651IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000339867.24342848
Transfer198194072024-05-07 16:33:3571 days ago1715099615IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000368027.8436908
Transfer198194052024-05-07 16:33:1171 days ago1715099591IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000333087.10091494
Transfer198194022024-05-07 16:32:3571 days ago1715099555IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000287556.13171838
Transfer198194002024-05-07 16:32:1171 days ago1715099531IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000328016.99103429
Transfer198193972024-05-07 16:31:3571 days ago1715099495IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000285536.08709041
Transfer198193952024-05-07 16:31:1171 days ago1715099471IN
NAVRAS Tech: NAVRAS Token
0 ETH0.000315166.71707248
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
203201442024-07-16 16:03:4728 hrs ago1721145827
NAVRAS Tech: NAVRAS Token
0.00712711 ETH
203201442024-07-16 16:03:4728 hrs ago1721145827
NAVRAS Tech: NAVRAS Token
0.00356355 ETH
203201442024-07-16 16:03:4728 hrs ago1721145827
NAVRAS Tech: NAVRAS Token
0.00356355 ETH
203201442024-07-16 16:03:4728 hrs ago1721145827
NAVRAS Tech: NAVRAS Token
0.01425422 ETH
203201352024-07-16 16:01:5928 hrs ago1721145719
NAVRAS Tech: NAVRAS Token
0.0103032 ETH
203201352024-07-16 16:01:5928 hrs ago1721145719
NAVRAS Tech: NAVRAS Token
0.0051516 ETH
203201352024-07-16 16:01:5928 hrs ago1721145719
NAVRAS Tech: NAVRAS Token
0.0051516 ETH
203201352024-07-16 16:01:5928 hrs ago1721145719
NAVRAS Tech: NAVRAS Token
0.02060641 ETH
203081022024-07-14 23:43:112 days ago1721000591
NAVRAS Tech: NAVRAS Token
0.02019887 ETH
203081022024-07-14 23:43:112 days ago1721000591
NAVRAS Tech: NAVRAS Token
0.01009943 ETH
203081022024-07-14 23:43:112 days ago1721000591
NAVRAS Tech: NAVRAS Token
0.01009943 ETH
203081022024-07-14 23:43:112 days ago1721000591
NAVRAS Tech: NAVRAS Token
0.04039774 ETH
203080952024-07-14 23:41:472 days ago1721000507
NAVRAS Tech: NAVRAS Token
0.01597182 ETH
203080952024-07-14 23:41:472 days ago1721000507
NAVRAS Tech: NAVRAS Token
0.00798591 ETH
203080952024-07-14 23:41:472 days ago1721000507
NAVRAS Tech: NAVRAS Token
0.00798591 ETH
203080952024-07-14 23:41:472 days ago1721000507
NAVRAS Tech: NAVRAS Token
0.03194365 ETH
203080782024-07-14 23:38:232 days ago1721000303
NAVRAS Tech: NAVRAS Token
0.01755018 ETH
203080782024-07-14 23:38:232 days ago1721000303
NAVRAS Tech: NAVRAS Token
0.00877509 ETH
203080782024-07-14 23:38:232 days ago1721000303
NAVRAS Tech: NAVRAS Token
0.00877509 ETH
203080782024-07-14 23:38:232 days ago1721000303
NAVRAS Tech: NAVRAS Token
0.03510036 ETH
202992862024-07-13 18:11:234 days ago1720894283
NAVRAS Tech: NAVRAS Token
0.01659642 ETH
202992862024-07-13 18:11:234 days ago1720894283
NAVRAS Tech: NAVRAS Token
0.00829821 ETH
202992862024-07-13 18:11:234 days ago1720894283
NAVRAS Tech: NAVRAS Token
0.00829821 ETH
202992862024-07-13 18:11:234 days ago1720894283
NAVRAS Tech: NAVRAS Token
0.03319285 ETH
202788182024-07-10 21:34:236 days ago1720647263
NAVRAS Tech: NAVRAS Token
0.00971442 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NAVRAS

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2023-11-14
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;


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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    bool private _lock;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        require((amount == 0) || (_allowances[_msgSender()][spender] == 0), "Non-zero allowance already exists");
              _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");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }


function _approve(
    address owner,
    address spender,
    uint256 amount
) internal virtual {
    require(!_lock, "Reentrancy guard: already locked");
    _lock = true;

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

    _lock = false;
}

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

interface DexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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


    uint256 private constant _totalSupply = 600_000_000 * 1e18;

    //Router
    DexRouter public immutable uniswapRouter;
    address public immutable pairAddress;

    //Buy Taxes
    uint256 public BuyOperations = 30;
    uint256 public BuyDevelopment = 30;

    uint256 public buyTaxes = BuyOperations + BuyDevelopment;

    //Sell Taxes
    uint256 public SellOperations = 30;
    uint256 public SellDevelopment = 30;

    uint256 public sellTaxes = SellOperations + SellDevelopment;

    //Transfer Taxes
    uint256 public transferTaxes = 0;

    //Whitelisting from taxes and trading limits
    mapping(address => bool) private whitelisted;

    //Blacklist wallets
    mapping(address => bool) private blacklisted;

    //Swapping
    uint256 public swapTokensAtAmount = _totalSupply / 100000; //Collect 0.001% of total supply to swap to taxes
    bool public swapAndLiquifyEnabled = true;
    bool public isSwapping = false;
    bool public tradingEnabled = false;
    uint256 public startTradingBlock;

    //Wallets

    address payable public DevelopmentAddress = payable(0xD8EABD94e447e451c50E0094E0A89b9B552ae5a9);
    address payable public OperationsAddress = payable(0x26639e869bc736DE38879Faffc0995984f82C54b);
    
    //Events
    event DevelopmentAddressChanged(address indexed _trWallet); 
    event OperationsAddressChanged(address indexed _trWallet);
    event BuyFeesUpdated(uint256 indexed newBuyDevelopment, uint256 newBuyOperations);
    event SellFeesUpdated(uint256 indexed newSellDevelopment, uint256 newSellOperations);
    event SwapThresholdUpdated(uint256 indexed _newThreshold);
    event InternalSwapStatusUpdated(bool indexed _status);
    event Whitelist(address indexed _target, bool indexed _status);
    event Blacklist(address indexed _target, bool indexed _status);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() ERC20("NAVRAS Tech", "NAVRAS") {

        uniswapRouter = DexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pairAddress = DexFactory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        whitelisted[msg.sender] = true;
        whitelisted[address(uniswapRouter)] = true;
        whitelisted[DevelopmentAddress] = true;
        whitelisted[OperationsAddress] = true;
        whitelisted[address(this)] = true;       
        _mint(0xF8567e8161C885fb922Efdc819976f70f5F7D433, _totalSupply);

    }

    function setDevelopmentAddress(address _newaddress) external onlyOwner {
        require(_newaddress != address(0), "can not set marketing to dead wallet");
        DevelopmentAddress = payable(_newaddress);
        emit DevelopmentAddressChanged(_newaddress);
    }

    function setOperationsAddress(address _newaddress) external onlyOwner {
        require(_newaddress != address(0), "can not set marketing to dead wallet");
        OperationsAddress = payable(_newaddress);
        emit OperationsAddressChanged(_newaddress);
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        startTradingBlock = block.number;
    }

    function disableTrading() external onlyOwner {
        require(tradingEnabled, "Trading is already disabled");
        tradingEnabled = false;
    }

    function setBuyTaxes(uint256 _newBuyDevelopment, uint256 _newBuyOperations) external onlyOwner {
        BuyDevelopment = _newBuyDevelopment;
        BuyOperations = _newBuyOperations;
        buyTaxes = BuyDevelopment.add(BuyOperations);
        emit BuyFeesUpdated(BuyDevelopment, BuyOperations);
    }

    function setSellTaxes(uint256 _newSellDevelopment, uint256 _newSellOperations) external onlyOwner {
        SellDevelopment = _newSellDevelopment;
        SellOperations = _newSellOperations;
        sellTaxes = SellDevelopment.add(SellOperations);
        emit SellFeesUpdated(SellDevelopment, SellOperations);
    }

    function setSwapTokensAtAmount(uint256 _newAmount) external onlyOwner {
        require(_newAmount > 0 && _newAmount <= (_totalSupply * 5) / 1000, "Minimum swap amount must be greater than 0 and less than 0.5% of total supply!");
        swapTokensAtAmount = _newAmount;
        emit SwapThresholdUpdated(swapTokensAtAmount);
    }

    function toggleSwapping() external onlyOwner {
        swapAndLiquifyEnabled = (swapAndLiquifyEnabled) ? false : true;
    }

    function setWhitelistStatus(address _wallet, bool _status) external onlyOwner {
        whitelisted[_wallet] = _status;
        emit Whitelist(_wallet, _status);
    }

    function setBlacklist(address _address, bool _isBlacklisted) external onlyOwner {
        blacklisted[_address] = _isBlacklisted;
        emit Blacklist(_address, _isBlacklisted);
    }

    function checkWhitelist(address _wallet) external view returns (bool) {
        return whitelisted[_wallet];
    }

    function checkBlacklist(address _address) external view returns (bool) {
        return blacklisted[_address];
    }

    // this function is reponsible for managing tax, if _from or _to is whitelisted, we simply return _amount and skip all the limitations
    function _takeTax(
        address _from,
        address _to,
        uint256 _amount
    ) internal returns (uint256) {
        if (whitelisted[_from] || whitelisted[_to]) {
            return _amount;
        }
        uint256 totalTax = transferTaxes;

        if (_to == pairAddress) {
            totalTax = sellTaxes;
        } else if (_from == pairAddress) {
            totalTax = buyTaxes;
        }

        uint256 tax = 0;
        if (totalTax > 0) {
            tax = (_amount * totalTax) / 1000;
            super._transfer(_from, address(this), tax);
        }
        return (_amount - tax);
    }

function _transfer(
    address _from,
    address _to,
    uint256 _amount
) internal virtual override {
    require(_from != address(0), "transfer from address zero");
    require(_to != address(0), "transfer to address zero");
    require(_amount > 0, "Transfer amount must be greater than zero");
    require(!blacklisted[_from], "Transfer from blacklisted address");
    require(!blacklisted[_to], "Transfer to blacklisted address");
    uint256 toTransfer = _takeTax(_from, _to, _amount);

    bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
    if (
        !whitelisted[_from] &&
        !whitelisted[_to] &&
        !blacklisted[_from] &&
        !blacklisted[_to] 
    ) {
        require(tradingEnabled, "Trading not active");
        if (
            pairAddress == _to &&
            swapAndLiquifyEnabled &&
            canSwap &&
            !isSwapping
        ) {
            internalSwap();
        }
    }
    super._transfer(_from, _to, toTransfer);
}

    function internalSwap() internal {
    isSwapping = true;
    uint256 taxAmount = balanceOf(address(this)); 
    if (taxAmount == 0) {
        return;
    }

    uint256 totalFee = (buyTaxes).add(sellTaxes);

    uint256 DevelopmentShare =(BuyDevelopment).add(SellDevelopment);
    uint256 OperationsShare = (BuyOperations).add(SellOperations);

    if (DevelopmentShare == 0) {
        totalFee = DevelopmentShare.add(OperationsShare);
    }

    uint256 halfLPTokens = 0;
    if (totalFee > 0) {
        halfLPTokens = taxAmount.mul(DevelopmentShare).div(totalFee).div(2);
    }
    uint256 swapTokens = taxAmount.sub(halfLPTokens);
    uint256 initialBalance = address(this).balance;
    swapToETH(swapTokens);
    uint256 newBalance = address(this).balance.sub(initialBalance);

    uint256 ethForDevelopment = 0;
    if (DevelopmentShare > 0) {
        ethForDevelopment = newBalance.mul(DevelopmentShare).div(totalFee).div(2);
    
    addLiquidity(halfLPTokens, ethForDevelopment);
    emit SwapAndLiquify(halfLPTokens, ethForDevelopment, halfLPTokens);
    }
    uint256 ethForOperations = newBalance.mul(OperationsShare).div(totalFee);

    transferToAddressETH(DevelopmentAddress, ethForDevelopment);
    transferToAddressETH(OperationsAddress, ethForOperations);

    isSwapping = false;
}

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

    function swapToETH(uint256 _amount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), _amount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapRouter), tokenAmount);

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

    function withdrawStuckETH() external onlyOwner {
        uint256 balance = address(this).balance;
        require(balance > 0, "No ETH available to withdraw");

        (bool success, ) = address(msg.sender).call{value: balance}("");
        require(success, "transferring ETH failed");
    }

    function withdrawStuckTokens(address ERC20_token) external onlyOwner {
        require(ERC20_token != address(this), "Owner cannot claim native tokens");

        uint256 tokenBalance = IERC20(ERC20_token).balanceOf(address(this));
        require(tokenBalance > 0, "No tokens available to withdraw");

        bool success = IERC20(ERC20_token).transfer(msg.sender, tokenBalance);
        require(success, "transferring tokens failed!");
    }

    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":"_target","type":"address"},{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"Blacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newBuyDevelopment","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyOperations","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"DevelopmentAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"InternalSwapStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"OperationsAddressChanged","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":"uint256","name":"newSellDevelopment","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellOperations","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"SwapThresholdUpdated","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":true,"internalType":"address","name":"_target","type":"address"},{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"Whitelist","type":"event"},{"inputs":[],"name":"BuyDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevelopmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OperationsAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"buyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"checkWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","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":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisted","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyDevelopment","type":"uint256"},{"internalType":"uint256","name":"_newBuyOperations","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newaddress","type":"address"}],"name":"setDevelopmentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newaddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSellDevelopment","type":"uint256"},{"internalType":"uint256","name":"_newSellOperations","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"view","type":"function"},{"inputs":[],"name":"toggleSwapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ERC20_token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601e600655601e600755600754600654620000209190620008c5565b600855601e600955601e600a55600a546009546200003f9190620008c5565b600b556000600c55620186a06b01f04ef12cb04cf1580000006200006491906200092f565b600f556001601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff02191690831515021790555073d8eabd94e447e451c50e0094e0a89b9b552ae5a9601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507326639e869bc736de38879faffc0995984f82c54b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200016f57600080fd5b506040518060400160405280600b81526020017f4e415652415320546563680000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e415652415300000000000000000000000000000000000000000000000000008152508160039081620001ed919062000bd7565b508060049081620001ff919062000bd7565b50505062000222620002166200063c60201b60201c565b6200064460201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000d28565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000348573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036e919062000d28565b6040518363ffffffff1660e01b81526004016200038d92919062000d6b565b6020604051808303816000875af1158015620003ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d3919062000d28565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200063673f8567e8161c885fb922efdc819976f70f5f7d4336b01f04ef12cb04cf1580000006200070a60201b60201c565b62000e49565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200077c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007739062000df9565b60405180910390fd5b62000790600083836200088260201b60201c565b8060026000828254620007a49190620008c5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007fb9190620008c5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000862919062000e2c565b60405180910390a36200087e600083836200088760201b60201c565b5050565b505050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008d2826200088c565b9150620008df836200088c565b9250828201905080821115620008fa57620008f962000896565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200093c826200088c565b915062000949836200088c565b9250826200095c576200095b62000900565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009e957607f821691505b602082108103620009ff57620009fe620009a1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a2a565b62000a75868362000a2a565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000ab862000ab262000aac846200088c565b62000a8d565b6200088c565b9050919050565b6000819050919050565b62000ad48362000a97565b62000aec62000ae38262000abf565b84845462000a37565b825550505050565b600090565b62000b0362000af4565b62000b1081848462000ac9565b505050565b5b8181101562000b385762000b2c60008262000af9565b60018101905062000b16565b5050565b601f82111562000b875762000b518162000a05565b62000b5c8462000a1a565b8101602085101562000b6c578190505b62000b8462000b7b8562000a1a565b83018262000b15565b50505b505050565b600082821c905092915050565b600062000bac6000198460080262000b8c565b1980831691505092915050565b600062000bc7838362000b99565b9150826002028217905092915050565b62000be28262000967565b67ffffffffffffffff81111562000bfe5762000bfd62000972565b5b62000c0a8254620009d0565b62000c1782828562000b3c565b600060209050601f83116001811462000c4f576000841562000c3a578287015190505b62000c46858262000bb9565b86555062000cb6565b601f19841662000c5f8662000a05565b60005b8281101562000c895784890151825560018201915060208501945060208101905062000c62565b8683101562000ca9578489015162000ca5601f89168262000b99565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cf08262000cc3565b9050919050565b62000d028162000ce3565b811462000d0e57600080fd5b50565b60008151905062000d228162000cf7565b92915050565b60006020828403121562000d415762000d4062000cbe565b5b600062000d518482850162000d11565b91505092915050565b62000d658162000ce3565b82525050565b600060408201905062000d82600083018562000d5a565b62000d91602083018462000d5a565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000de1601f8362000d98565b915062000dee8262000da9565b602082019050919050565b6000602082019050818103600083015262000e148162000dd2565b9050919050565b62000e26816200088c565b82525050565b600060208201905062000e43600083018462000e1b565b92915050565b60805160a051614af062000ea760003960008181611878015281816127f801528181612a1e0152612a7b0152600081816114ca015281816130d5015281816131b6015281816131dd0152818161327901526132a00152614af06000f3fe60806040526004361061026b5760003560e01c8063864701a511610144578063cb963728116100b6578063e6807ca91161007a578063e6807ca91461091d578063ef586f711461095a578063f2fde38b14610971578063f4cf281b1461099a578063f5648a4f146109c5578063f66895a3146109dc57610272565b8063cb96372814610836578063d17d2f981461085f578063d1a0c9461461088a578063dd62ed3e146108b5578063e2f45605146108f257610272565b8063a457c2d711610108578063a457c2d714610714578063a8b0898214610751578063a9059cbb1461077c578063aa35822c146107b9578063afa4f3b2146107e2578063b88631151461080b57610272565b8063864701a5146106535780638a8c523c1461067e5780638da5cb5b1461069557806395d89b41146106c0578063a11a1682146106eb57610272565b806339509351116101dd5780635331803c116101a15780635331803c146105535780635f826e1d1461057e57806370a08231146105a9578063715018a6146105e6578063735de9f7146105fd57806376be96f31461062857610272565b8063395093511461046c5780634518e096146104a9578063499b8394146104d45780634a74bb02146104fd5780634ada218b1461052857610272565b806317700f011161022f57806317700f011461035c57806318160ddd146103735780631950c2181461039e57806323b872dd146103db57806329b1c15c14610418578063313ce5671461044157610272565b806306fdde0314610277578063071c2da3146102a2578063095ea7b3146102cd5780630c4242841461030a578063153b0d1e1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a07565b6040516102999190613439565b60405180910390f35b3480156102ae57600080fd5b506102b7610a99565b6040516102c49190613474565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef919061351e565b610a9f565b6040516103019190613579565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c91906135c0565b610b8d565b005b34801561033f57600080fd5b5061035a600480360381019061035591906135c0565b610caa565b005b34801561036857600080fd5b50610371610dc7565b005b34801561037f57600080fd5b50610388610eaf565b6040516103959190613474565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c09190613600565b610eb9565b6040516103d29190613579565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd919061362d565b610f0f565b60405161040f9190613579565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190613600565b611007565b005b34801561044d57600080fd5b50610456611179565b604051610463919061369c565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e919061351e565b611182565b6040516104a09190613579565b60405180910390f35b3480156104b557600080fd5b506104be61122e565b6040516104cb91906136d8565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613600565b611254565b005b34801561050957600080fd5b506105126113c6565b60405161051f9190613579565b60405180910390f35b34801561053457600080fd5b5061053d6113d9565b60405161054a9190613579565b60405180910390f35b34801561055f57600080fd5b506105686113ec565b6040516105759190613474565b60405180910390f35b34801561058a57600080fd5b506105936113f2565b6040516105a09190613474565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190613600565b6113f8565b6040516105dd9190613474565b60405180910390f35b3480156105f257600080fd5b506105fb611440565b005b34801561060957600080fd5b506106126114c8565b60405161061f9190613752565b60405180910390f35b34801561063457600080fd5b5061063d6114ec565b60405161064a9190613474565b60405180910390f35b34801561065f57600080fd5b506106686114f2565b6040516106759190613474565b60405180910390f35b34801561068a57600080fd5b506106936114f8565b005b3480156106a157600080fd5b506106aa6115e8565b6040516106b7919061377c565b60405180910390f35b3480156106cc57600080fd5b506106d5611612565b6040516106e29190613439565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190613797565b6116a4565b005b34801561072057600080fd5b5061073b6004803603810190610736919061351e565b61178b565b6040516107489190613579565b60405180910390f35b34801561075d57600080fd5b50610766611876565b604051610773919061377c565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e919061351e565b61189a565b6040516107b09190613579565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190613797565b6118b8565b005b3480156107ee57600080fd5b50610809600480360381019061080491906137d7565b61199f565b005b34801561081757600080fd5b50610820611ac8565b60405161082d9190613579565b60405180910390f35b34801561084257600080fd5b5061085d60048036038101906108589190613600565b611adb565b005b34801561086b57600080fd5b50610874611d4d565b6040516108819190613474565b60405180910390f35b34801561089657600080fd5b5061089f611d53565b6040516108ac91906136d8565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190613804565b611d79565b6040516108e99190613474565b60405180910390f35b3480156108fe57600080fd5b50610907611e00565b6040516109149190613474565b60405180910390f35b34801561092957600080fd5b50610944600480360381019061093f9190613600565b611e06565b6040516109519190613579565b60405180910390f35b34801561096657600080fd5b5061096f611e5c565b005b34801561097d57600080fd5b5061099860048036038101906109939190613600565b611f11565b005b3480156109a657600080fd5b506109af612008565b6040516109bc9190613474565b60405180910390f35b3480156109d157600080fd5b506109da61200e565b005b3480156109e857600080fd5b506109f1612182565b6040516109fe9190613474565b60405180910390f35b606060038054610a1690613873565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4290613873565b8015610a8f5780601f10610a6457610100808354040283529160200191610a8f565b820191906000526020600020905b815481529060010190602001808311610a7257829003601f168201915b5050505050905090565b60075481565b600080821480610b325750600060016000610ab8612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6890613916565b60405180910390fd5b610b83610b7c612188565b8484612190565b6001905092915050565b610b95612188565b73ffffffffffffffffffffffffffffffffffffffff16610bb36115e8565b73ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090613982565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d60405160405180910390a35050565b610cb2612188565b73ffffffffffffffffffffffffffffffffffffffff16610cd06115e8565b73ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d90613982565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167ff7e58a63a036e3a7ef7921f83b6ae47930cf5c293dd3bfe7a857c6863409046d60405160405180910390a35050565b610dcf612188565b73ffffffffffffffffffffffffffffffffffffffff16610ded6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a90613982565b60405180910390fd5b601060029054906101000a900460ff16610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906139ee565b60405180910390fd5b6000601060026101000a81548160ff021916908315150217905550565b6000600254905090565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610f1c8484846123df565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f67612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde90613a80565b60405180910390fd5b610ffb85610ff3612188565b858403612190565b60019150509392505050565b61100f612188565b73ffffffffffffffffffffffffffffffffffffffff1661102d6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90613982565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990613b12565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3a9137e7d5f9bca78f58987f4d95b9ad03519870332158356b684221456fb27060405160405180910390a250565b60006012905090565b600061122461118f612188565b84846001600061119d612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f9190613b61565b612190565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61125c612188565b73ffffffffffffffffffffffffffffffffffffffff1661127a6115e8565b73ffffffffffffffffffffffffffffffffffffffff16146112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790613982565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690613b12565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3e35a207bfd923192619f1bdadc7c52d3d5961f015e18efd870047dcf71c59e960405160405180910390a250565b601060009054906101000a900460ff1681565b601060029054906101000a900460ff1681565b600c5481565b60065481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611448612188565b73ffffffffffffffffffffffffffffffffffffffff166114666115e8565b73ffffffffffffffffffffffffffffffffffffffff16146114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390613982565b60405180910390fd5b6114c66000612889565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b60115481565b60085481565b611500612188565b73ffffffffffffffffffffffffffffffffffffffff1661151e6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b90613982565b60405180910390fd5b601060029054906101000a900460ff16156115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb90613be1565b60405180910390fd5b6001601060026101000a81548160ff02191690831515021790555043601181905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461162190613873565b80601f016020809104026020016040519081016040528092919081815260200182805461164d90613873565b801561169a5780601f1061166f5761010080835404028352916020019161169a565b820191906000526020600020905b81548152906001019060200180831161167d57829003601f168201915b5050505050905090565b6116ac612188565b73ffffffffffffffffffffffffffffffffffffffff166116ca6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790613982565b60405180910390fd5b81600a8190555080600981905550611745600954600a5461294f90919063ffffffff16565b600b81905550600a547f2c7448b63380296b372453c5287509524b5b645dc6a93ffe09e0af53e6b8935b60095460405161177f9190613474565b60405180910390a25050565b6000806001600061179a612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90613c73565b60405180910390fd5b61186b611862612188565b85858403612190565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006118ae6118a7612188565b84846123df565b6001905092915050565b6118c0612188565b73ffffffffffffffffffffffffffffffffffffffff166118de6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90613982565b60405180910390fd5b816007819055508060068190555061195960065460075461294f90919063ffffffff16565b6008819055506007547f480af1f773972b1df72af32ec463e0fdeb1b49f1ca37d07982f677919d5fdd0c6006546040516119939190613474565b60405180910390a25050565b6119a7612188565b73ffffffffffffffffffffffffffffffffffffffff166119c56115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290613982565b60405180910390fd5b600081118015611a5057506103e860056b01f04ef12cb04cf158000000611a429190613c93565b611a4c9190613d04565b8111155b611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613dcd565b60405180910390fd5b80600f81905550600f547f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647660405160405180910390a250565b601060019054906101000a900460ff1681565b611ae3612188565b73ffffffffffffffffffffffffffffffffffffffff16611b016115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e90613982565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90613e39565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c00919061377c565b602060405180830381865afa158015611c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c419190613e6e565b905060008111611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90613ee7565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611cc3929190613f07565b6020604051808303816000875af1158015611ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d069190613f45565b905080611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90613fbe565b60405180910390fd5b505050565b600a5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611e64612188565b73ffffffffffffffffffffffffffffffffffffffff16611e826115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf90613982565b60405180910390fd5b601060009054906101000a900460ff16611ef3576001611ef6565b60005b601060006101000a81548160ff021916908315150217905550565b611f19612188565b73ffffffffffffffffffffffffffffffffffffffff16611f376115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490613982565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390614050565b60405180910390fd5b61200581612889565b50565b60095481565b612016612188565b73ffffffffffffffffffffffffffffffffffffffff166120346115e8565b73ffffffffffffffffffffffffffffffffffffffff161461208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613982565b60405180910390fd5b6000479050600081116120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c9906140bc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16826040516120f89061410d565b60006040518083038185875af1925050503d8060008114612135576040519150601f19603f3d011682016040523d82523d6000602084013e61213a565b606091505b505090508061217e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121759061416e565b60405180910390fd5b5050565b600b5481565b600033905090565b600560009054906101000a900460ff16156121e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d7906141da565b60405180910390fd5b6001600560006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061426c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906142fe565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123b79190613474565b60405180910390a36000600560006101000a81548160ff021916908315150217905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124459061436a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b4906143d6565b60405180910390fd5b60008111612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614468565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561258d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612584906144fa565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561261a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261190614566565b60405180910390fd5b6000612627848484612965565b90506000600f54612637306113f8565b10159050600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126df5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127355750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561278b5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287757601060029054906101000a900460ff166127df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d6906145d2565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161480156128465750601060009054906101000a900460ff165b801561284f5750805b80156128685750601060019054906101000a900460ff16155b1561287657612875612b1c565b5b5b612882858584612d75565b5050505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361295d9190613b61565b905092915050565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a085750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a1557819050612b15565b6000600c5490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612a7957600b549050612ad3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612ad25760085490505b5b600080821115612b04576103e88285612aec9190613c93565b612af69190613d04565b9050612b03863083612d75565b5b8084612b1091906145f2565b925050505b9392505050565b6001601060016101000a81548160ff0219169083151502179055506000612b42306113f8565b905060008103612b525750612d73565b6000612b6b600b5460085461294f90919063ffffffff16565b90506000612b86600a5460075461294f90919063ffffffff16565b90506000612ba160095460065461294f90919063ffffffff16565b905060008203612bc157612bbe818361294f90919063ffffffff16565b92505b600080841115612c0657612c036002612bf586612be7878a612ff490919063ffffffff16565b61300a90919063ffffffff16565b61300a90919063ffffffff16565b90505b6000612c1b828761302090919063ffffffff16565b90506000479050612c2b82613036565b6000612c40824761302090919063ffffffff16565b9050600080871115612ccc57612c846002612c768a612c688b87612ff490919063ffffffff16565b61300a90919063ffffffff16565b61300a90919063ffffffff16565b9050612c908582613273565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858287604051612cc393929190614626565b60405180910390a15b6000612cf389612ce58986612ff490919063ffffffff16565b61300a90919063ffffffff16565b9050612d21601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613354565b612d4d601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613354565b6000601060016101000a81548160ff021916908315150217905550505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb906146cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614761565b60405180910390fd5b612e5e83838361339f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edb906147f3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f779190613b61565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fdb9190613474565b60405180910390a3612fee8484846133a4565b50505050565b600081836130029190613c93565b905092915050565b600081836130189190613d04565b905092915050565b6000818361302e91906145f2565b905092915050565b6000600267ffffffffffffffff81111561305357613052614813565b5b6040519080825280602002602001820160405280156130815781602001602082028036833780820191505090505b509050308160008151811061309957613098614842565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561313e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131629190614886565b8160018151811061317657613175614842565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131db307f000000000000000000000000000000000000000000000000000000000000000084612190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161323d9594939291906149ac565b600060405180830381600087803b15801561325757600080fd5b505af115801561326b573d6000803e3d6000fd5b505050505050565b61329e307f000000000000000000000000000000000000000000000000000000000000000084612190565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806132e86115e8565b426040518863ffffffff1660e01b815260040161330a96959493929190614a06565b60606040518083038185885af1158015613328573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061334d9190614a67565b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561339a573d6000803e3d6000fd5b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133e35780820151818401526020810190506133c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061340b826133a9565b61341581856133b4565b93506134258185602086016133c5565b61342e816133ef565b840191505092915050565b600060208201905081810360008301526134538184613400565b905092915050565b6000819050919050565b61346e8161345b565b82525050565b60006020820190506134896000830184613465565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134bf82613494565b9050919050565b6134cf816134b4565b81146134da57600080fd5b50565b6000813590506134ec816134c6565b92915050565b6134fb8161345b565b811461350657600080fd5b50565b600081359050613518816134f2565b92915050565b600080604083850312156135355761353461348f565b5b6000613543858286016134dd565b925050602061355485828601613509565b9150509250929050565b60008115159050919050565b6135738161355e565b82525050565b600060208201905061358e600083018461356a565b92915050565b61359d8161355e565b81146135a857600080fd5b50565b6000813590506135ba81613594565b92915050565b600080604083850312156135d7576135d661348f565b5b60006135e5858286016134dd565b92505060206135f6858286016135ab565b9150509250929050565b6000602082840312156136165761361561348f565b5b6000613624848285016134dd565b91505092915050565b6000806000606084860312156136465761364561348f565b5b6000613654868287016134dd565b9350506020613665868287016134dd565b925050604061367686828701613509565b9150509250925092565b600060ff82169050919050565b61369681613680565b82525050565b60006020820190506136b1600083018461368d565b92915050565b60006136c282613494565b9050919050565b6136d2816136b7565b82525050565b60006020820190506136ed60008301846136c9565b92915050565b6000819050919050565b600061371861371361370e84613494565b6136f3565b613494565b9050919050565b600061372a826136fd565b9050919050565b600061373c8261371f565b9050919050565b61374c81613731565b82525050565b60006020820190506137676000830184613743565b92915050565b613776816134b4565b82525050565b6000602082019050613791600083018461376d565b92915050565b600080604083850312156137ae576137ad61348f565b5b60006137bc85828601613509565b92505060206137cd85828601613509565b9150509250929050565b6000602082840312156137ed576137ec61348f565b5b60006137fb84828501613509565b91505092915050565b6000806040838503121561381b5761381a61348f565b5b6000613829858286016134dd565b925050602061383a858286016134dd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061388b57607f821691505b60208210810361389e5761389d613844565b5b50919050565b7f4e6f6e2d7a65726f20616c6c6f77616e636520616c726561647920657869737460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006139006021836133b4565b915061390b826138a4565b604082019050919050565b6000602082019050818103600083015261392f816138f3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061396c6020836133b4565b915061397782613936565b602082019050919050565b6000602082019050818103600083015261399b8161395f565b9050919050565b7f54726164696e6720697320616c72656164792064697361626c65640000000000600082015250565b60006139d8601b836133b4565b91506139e3826139a2565b602082019050919050565b60006020820190508181036000830152613a07816139cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a6a6028836133b4565b9150613a7582613a0e565b604082019050919050565b60006020820190508181036000830152613a9981613a5d565b9050919050565b7f63616e206e6f7420736574206d61726b6574696e6720746f206465616420776160008201527f6c6c657400000000000000000000000000000000000000000000000000000000602082015250565b6000613afc6024836133b4565b9150613b0782613aa0565b604082019050919050565b60006020820190508181036000830152613b2b81613aef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b6c8261345b565b9150613b778361345b565b9250828201905080821115613b8f57613b8e613b32565b5b92915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613bcb601a836133b4565b9150613bd682613b95565b602082019050919050565b60006020820190508181036000830152613bfa81613bbe565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c5d6025836133b4565b9150613c6882613c01565b604082019050919050565b60006020820190508181036000830152613c8c81613c50565b9050919050565b6000613c9e8261345b565b9150613ca98361345b565b9250828202613cb78161345b565b91508282048414831517613cce57613ccd613b32565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d0f8261345b565b9150613d1a8361345b565b925082613d2a57613d29613cd5565b5b828204905092915050565b7f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160008201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660208201527f20746f74616c20737570706c7921000000000000000000000000000000000000604082015250565b6000613db7604e836133b4565b9150613dc282613d35565b606082019050919050565b60006020820190508181036000830152613de681613daa565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b6000613e236020836133b4565b9150613e2e82613ded565b602082019050919050565b60006020820190508181036000830152613e5281613e16565b9050919050565b600081519050613e68816134f2565b92915050565b600060208284031215613e8457613e8361348f565b5b6000613e9284828501613e59565b91505092915050565b7f4e6f20746f6b656e7320617661696c61626c6520746f20776974686472617700600082015250565b6000613ed1601f836133b4565b9150613edc82613e9b565b602082019050919050565b60006020820190508181036000830152613f0081613ec4565b9050919050565b6000604082019050613f1c600083018561376d565b613f296020830184613465565b9392505050565b600081519050613f3f81613594565b92915050565b600060208284031215613f5b57613f5a61348f565b5b6000613f6984828501613f30565b91505092915050565b7f7472616e7366657272696e6720746f6b656e73206661696c6564210000000000600082015250565b6000613fa8601b836133b4565b9150613fb382613f72565b602082019050919050565b60006020820190508181036000830152613fd781613f9b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061403a6026836133b4565b915061404582613fde565b604082019050919050565b600060208201905081810360008301526140698161402d565b9050919050565b7f4e6f2045544820617661696c61626c6520746f20776974686472617700000000600082015250565b60006140a6601c836133b4565b91506140b182614070565b602082019050919050565b600060208201905081810360008301526140d581614099565b9050919050565b600081905092915050565b50565b60006140f76000836140dc565b9150614102826140e7565b600082019050919050565b6000614118826140ea565b9150819050919050565b7f7472616e7366657272696e6720455448206661696c6564000000000000000000600082015250565b60006141586017836133b4565b915061416382614122565b602082019050919050565b600060208201905081810360008301526141878161414b565b9050919050565b7f5265656e7472616e63792067756172643a20616c7265616479206c6f636b6564600082015250565b60006141c46020836133b4565b91506141cf8261418e565b602082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006142566024836133b4565b9150614261826141fa565b604082019050919050565b6000602082019050818103600083015261428581614249565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142e86022836133b4565b91506142f38261428c565b604082019050919050565b60006020820190508181036000830152614317816142db565b9050919050565b7f7472616e736665722066726f6d2061646472657373207a65726f000000000000600082015250565b6000614354601a836133b4565b915061435f8261431e565b602082019050919050565b6000602082019050818103600083015261438381614347565b9050919050565b7f7472616e7366657220746f2061646472657373207a65726f0000000000000000600082015250565b60006143c06018836133b4565b91506143cb8261438a565b602082019050919050565b600060208201905081810360008301526143ef816143b3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006144526029836133b4565b915061445d826143f6565b604082019050919050565b6000602082019050818103600083015261448181614445565b9050919050565b7f5472616e736665722066726f6d20626c61636b6c69737465642061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006144e46021836133b4565b91506144ef82614488565b604082019050919050565b60006020820190508181036000830152614513816144d7565b9050919050565b7f5472616e7366657220746f20626c61636b6c6973746564206164647265737300600082015250565b6000614550601f836133b4565b915061455b8261451a565b602082019050919050565b6000602082019050818103600083015261457f81614543565b9050919050565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b60006145bc6012836133b4565b91506145c782614586565b602082019050919050565b600060208201905081810360008301526145eb816145af565b9050919050565b60006145fd8261345b565b91506146088361345b565b92508282039050818111156146205761461f613b32565b5b92915050565b600060608201905061463b6000830186613465565b6146486020830185613465565b6146556040830184613465565b949350505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146b96025836133b4565b91506146c48261465d565b604082019050919050565b600060208201905081810360008301526146e8816146ac565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061474b6023836133b4565b9150614756826146ef565b604082019050919050565b6000602082019050818103600083015261477a8161473e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147dd6026836133b4565b91506147e882614781565b604082019050919050565b6000602082019050818103600083015261480c816147d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614880816134c6565b92915050565b60006020828403121561489c5761489b61348f565b5b60006148aa84828501614871565b91505092915050565b6000819050919050565b60006148d86148d36148ce846148b3565b6136f3565b61345b565b9050919050565b6148e8816148bd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614923816134b4565b82525050565b6000614935838361491a565b60208301905092915050565b6000602082019050919050565b6000614959826148ee565b61496381856148f9565b935061496e8361490a565b8060005b8381101561499f5781516149868882614929565b975061499183614941565b925050600181019050614972565b5085935050505092915050565b600060a0820190506149c16000830188613465565b6149ce60208301876148df565b81810360408301526149e0818661494e565b90506149ef606083018561376d565b6149fc6080830184613465565b9695505050505050565b600060c082019050614a1b600083018961376d565b614a286020830188613465565b614a3560408301876148df565b614a4260608301866148df565b614a4f608083018561376d565b614a5c60a0830184613465565b979650505050505050565b600080600060608486031215614a8057614a7f61348f565b5b6000614a8e86828701613e59565b9350506020614a9f86828701613e59565b9250506040614ab086828701613e59565b915050925092509256fea2646970667358221220530ecb49ca7b9c8f2b5ac4b042f4cccaf0f933ff18c22955ea7514e2f76dd29b64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063864701a511610144578063cb963728116100b6578063e6807ca91161007a578063e6807ca91461091d578063ef586f711461095a578063f2fde38b14610971578063f4cf281b1461099a578063f5648a4f146109c5578063f66895a3146109dc57610272565b8063cb96372814610836578063d17d2f981461085f578063d1a0c9461461088a578063dd62ed3e146108b5578063e2f45605146108f257610272565b8063a457c2d711610108578063a457c2d714610714578063a8b0898214610751578063a9059cbb1461077c578063aa35822c146107b9578063afa4f3b2146107e2578063b88631151461080b57610272565b8063864701a5146106535780638a8c523c1461067e5780638da5cb5b1461069557806395d89b41146106c0578063a11a1682146106eb57610272565b806339509351116101dd5780635331803c116101a15780635331803c146105535780635f826e1d1461057e57806370a08231146105a9578063715018a6146105e6578063735de9f7146105fd57806376be96f31461062857610272565b8063395093511461046c5780634518e096146104a9578063499b8394146104d45780634a74bb02146104fd5780634ada218b1461052857610272565b806317700f011161022f57806317700f011461035c57806318160ddd146103735780631950c2181461039e57806323b872dd146103db57806329b1c15c14610418578063313ce5671461044157610272565b806306fdde0314610277578063071c2da3146102a2578063095ea7b3146102cd5780630c4242841461030a578063153b0d1e1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a07565b6040516102999190613439565b60405180910390f35b3480156102ae57600080fd5b506102b7610a99565b6040516102c49190613474565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef919061351e565b610a9f565b6040516103019190613579565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c91906135c0565b610b8d565b005b34801561033f57600080fd5b5061035a600480360381019061035591906135c0565b610caa565b005b34801561036857600080fd5b50610371610dc7565b005b34801561037f57600080fd5b50610388610eaf565b6040516103959190613474565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c09190613600565b610eb9565b6040516103d29190613579565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd919061362d565b610f0f565b60405161040f9190613579565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a9190613600565b611007565b005b34801561044d57600080fd5b50610456611179565b604051610463919061369c565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e919061351e565b611182565b6040516104a09190613579565b60405180910390f35b3480156104b557600080fd5b506104be61122e565b6040516104cb91906136d8565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613600565b611254565b005b34801561050957600080fd5b506105126113c6565b60405161051f9190613579565b60405180910390f35b34801561053457600080fd5b5061053d6113d9565b60405161054a9190613579565b60405180910390f35b34801561055f57600080fd5b506105686113ec565b6040516105759190613474565b60405180910390f35b34801561058a57600080fd5b506105936113f2565b6040516105a09190613474565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190613600565b6113f8565b6040516105dd9190613474565b60405180910390f35b3480156105f257600080fd5b506105fb611440565b005b34801561060957600080fd5b506106126114c8565b60405161061f9190613752565b60405180910390f35b34801561063457600080fd5b5061063d6114ec565b60405161064a9190613474565b60405180910390f35b34801561065f57600080fd5b506106686114f2565b6040516106759190613474565b60405180910390f35b34801561068a57600080fd5b506106936114f8565b005b3480156106a157600080fd5b506106aa6115e8565b6040516106b7919061377c565b60405180910390f35b3480156106cc57600080fd5b506106d5611612565b6040516106e29190613439565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190613797565b6116a4565b005b34801561072057600080fd5b5061073b6004803603810190610736919061351e565b61178b565b6040516107489190613579565b60405180910390f35b34801561075d57600080fd5b50610766611876565b604051610773919061377c565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e919061351e565b61189a565b6040516107b09190613579565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190613797565b6118b8565b005b3480156107ee57600080fd5b50610809600480360381019061080491906137d7565b61199f565b005b34801561081757600080fd5b50610820611ac8565b60405161082d9190613579565b60405180910390f35b34801561084257600080fd5b5061085d60048036038101906108589190613600565b611adb565b005b34801561086b57600080fd5b50610874611d4d565b6040516108819190613474565b60405180910390f35b34801561089657600080fd5b5061089f611d53565b6040516108ac91906136d8565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190613804565b611d79565b6040516108e99190613474565b60405180910390f35b3480156108fe57600080fd5b50610907611e00565b6040516109149190613474565b60405180910390f35b34801561092957600080fd5b50610944600480360381019061093f9190613600565b611e06565b6040516109519190613579565b60405180910390f35b34801561096657600080fd5b5061096f611e5c565b005b34801561097d57600080fd5b5061099860048036038101906109939190613600565b611f11565b005b3480156109a657600080fd5b506109af612008565b6040516109bc9190613474565b60405180910390f35b3480156109d157600080fd5b506109da61200e565b005b3480156109e857600080fd5b506109f1612182565b6040516109fe9190613474565b60405180910390f35b606060038054610a1690613873565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4290613873565b8015610a8f5780601f10610a6457610100808354040283529160200191610a8f565b820191906000526020600020905b815481529060010190602001808311610a7257829003601f168201915b5050505050905090565b60075481565b600080821480610b325750600060016000610ab8612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6890613916565b60405180910390fd5b610b83610b7c612188565b8484612190565b6001905092915050565b610b95612188565b73ffffffffffffffffffffffffffffffffffffffff16610bb36115e8565b73ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0090613982565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d60405160405180910390a35050565b610cb2612188565b73ffffffffffffffffffffffffffffffffffffffff16610cd06115e8565b73ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d90613982565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167ff7e58a63a036e3a7ef7921f83b6ae47930cf5c293dd3bfe7a857c6863409046d60405160405180910390a35050565b610dcf612188565b73ffffffffffffffffffffffffffffffffffffffff16610ded6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a90613982565b60405180910390fd5b601060029054906101000a900460ff16610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906139ee565b60405180910390fd5b6000601060026101000a81548160ff021916908315150217905550565b6000600254905090565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610f1c8484846123df565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f67612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde90613a80565b60405180910390fd5b610ffb85610ff3612188565b858403612190565b60019150509392505050565b61100f612188565b73ffffffffffffffffffffffffffffffffffffffff1661102d6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90613982565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990613b12565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3a9137e7d5f9bca78f58987f4d95b9ad03519870332158356b684221456fb27060405160405180910390a250565b60006012905090565b600061122461118f612188565b84846001600061119d612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121f9190613b61565b612190565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61125c612188565b73ffffffffffffffffffffffffffffffffffffffff1661127a6115e8565b73ffffffffffffffffffffffffffffffffffffffff16146112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790613982565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690613b12565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3e35a207bfd923192619f1bdadc7c52d3d5961f015e18efd870047dcf71c59e960405160405180910390a250565b601060009054906101000a900460ff1681565b601060029054906101000a900460ff1681565b600c5481565b60065481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611448612188565b73ffffffffffffffffffffffffffffffffffffffff166114666115e8565b73ffffffffffffffffffffffffffffffffffffffff16146114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390613982565b60405180910390fd5b6114c66000612889565b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60115481565b60085481565b611500612188565b73ffffffffffffffffffffffffffffffffffffffff1661151e6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b90613982565b60405180910390fd5b601060029054906101000a900460ff16156115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb90613be1565b60405180910390fd5b6001601060026101000a81548160ff02191690831515021790555043601181905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461162190613873565b80601f016020809104026020016040519081016040528092919081815260200182805461164d90613873565b801561169a5780601f1061166f5761010080835404028352916020019161169a565b820191906000526020600020905b81548152906001019060200180831161167d57829003601f168201915b5050505050905090565b6116ac612188565b73ffffffffffffffffffffffffffffffffffffffff166116ca6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790613982565b60405180910390fd5b81600a8190555080600981905550611745600954600a5461294f90919063ffffffff16565b600b81905550600a547f2c7448b63380296b372453c5287509524b5b645dc6a93ffe09e0af53e6b8935b60095460405161177f9190613474565b60405180910390a25050565b6000806001600061179a612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90613c73565b60405180910390fd5b61186b611862612188565b85858403612190565b600191505092915050565b7f0000000000000000000000005b59992cedd0a8af234d0a4c5c6af063da21fdaa81565b60006118ae6118a7612188565b84846123df565b6001905092915050565b6118c0612188565b73ffffffffffffffffffffffffffffffffffffffff166118de6115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90613982565b60405180910390fd5b816007819055508060068190555061195960065460075461294f90919063ffffffff16565b6008819055506007547f480af1f773972b1df72af32ec463e0fdeb1b49f1ca37d07982f677919d5fdd0c6006546040516119939190613474565b60405180910390a25050565b6119a7612188565b73ffffffffffffffffffffffffffffffffffffffff166119c56115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290613982565b60405180910390fd5b600081118015611a5057506103e860056b01f04ef12cb04cf158000000611a429190613c93565b611a4c9190613d04565b8111155b611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613dcd565b60405180910390fd5b80600f81905550600f547f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647660405160405180910390a250565b601060019054906101000a900460ff1681565b611ae3612188565b73ffffffffffffffffffffffffffffffffffffffff16611b016115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e90613982565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90613e39565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c00919061377c565b602060405180830381865afa158015611c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c419190613e6e565b905060008111611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90613ee7565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611cc3929190613f07565b6020604051808303816000875af1158015611ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d069190613f45565b905080611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90613fbe565b60405180910390fd5b505050565b600a5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611e64612188565b73ffffffffffffffffffffffffffffffffffffffff16611e826115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf90613982565b60405180910390fd5b601060009054906101000a900460ff16611ef3576001611ef6565b60005b601060006101000a81548160ff021916908315150217905550565b611f19612188565b73ffffffffffffffffffffffffffffffffffffffff16611f376115e8565b73ffffffffffffffffffffffffffffffffffffffff1614611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490613982565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390614050565b60405180910390fd5b61200581612889565b50565b60095481565b612016612188565b73ffffffffffffffffffffffffffffffffffffffff166120346115e8565b73ffffffffffffffffffffffffffffffffffffffff161461208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613982565b60405180910390fd5b6000479050600081116120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c9906140bc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16826040516120f89061410d565b60006040518083038185875af1925050503d8060008114612135576040519150601f19603f3d011682016040523d82523d6000602084013e61213a565b606091505b505090508061217e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121759061416e565b60405180910390fd5b5050565b600b5481565b600033905090565b600560009054906101000a900460ff16156121e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d7906141da565b60405180910390fd5b6001600560006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061426c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906142fe565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123b79190613474565b60405180910390a36000600560006101000a81548160ff021916908315150217905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124459061436a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b4906143d6565b60405180910390fd5b60008111612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614468565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561258d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612584906144fa565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561261a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261190614566565b60405180910390fd5b6000612627848484612965565b90506000600f54612637306113f8565b10159050600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126df5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127355750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561278b5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561287757601060029054906101000a900460ff166127df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d6906145d2565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005b59992cedd0a8af234d0a4c5c6af063da21fdaa73ffffffffffffffffffffffffffffffffffffffff161480156128465750601060009054906101000a900460ff165b801561284f5750805b80156128685750601060019054906101000a900460ff16155b1561287657612875612b1c565b5b5b612882858584612d75565b5050505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361295d9190613b61565b905092915050565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a085750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a1557819050612b15565b6000600c5490507f0000000000000000000000005b59992cedd0a8af234d0a4c5c6af063da21fdaa73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612a7957600b549050612ad3565b7f0000000000000000000000005b59992cedd0a8af234d0a4c5c6af063da21fdaa73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612ad25760085490505b5b600080821115612b04576103e88285612aec9190613c93565b612af69190613d04565b9050612b03863083612d75565b5b8084612b1091906145f2565b925050505b9392505050565b6001601060016101000a81548160ff0219169083151502179055506000612b42306113f8565b905060008103612b525750612d73565b6000612b6b600b5460085461294f90919063ffffffff16565b90506000612b86600a5460075461294f90919063ffffffff16565b90506000612ba160095460065461294f90919063ffffffff16565b905060008203612bc157612bbe818361294f90919063ffffffff16565b92505b600080841115612c0657612c036002612bf586612be7878a612ff490919063ffffffff16565b61300a90919063ffffffff16565b61300a90919063ffffffff16565b90505b6000612c1b828761302090919063ffffffff16565b90506000479050612c2b82613036565b6000612c40824761302090919063ffffffff16565b9050600080871115612ccc57612c846002612c768a612c688b87612ff490919063ffffffff16565b61300a90919063ffffffff16565b61300a90919063ffffffff16565b9050612c908582613273565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858287604051612cc393929190614626565b60405180910390a15b6000612cf389612ce58986612ff490919063ffffffff16565b61300a90919063ffffffff16565b9050612d21601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613354565b612d4d601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613354565b6000601060016101000a81548160ff021916908315150217905550505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb906146cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614761565b60405180910390fd5b612e5e83838361339f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edb906147f3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f779190613b61565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fdb9190613474565b60405180910390a3612fee8484846133a4565b50505050565b600081836130029190613c93565b905092915050565b600081836130189190613d04565b905092915050565b6000818361302e91906145f2565b905092915050565b6000600267ffffffffffffffff81111561305357613052614813565b5b6040519080825280602002602001820160405280156130815781602001602082028036833780820191505090505b509050308160008151811061309957613098614842565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561313e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131629190614886565b8160018151811061317657613175614842565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131db307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612190565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161323d9594939291906149ac565b600060405180830381600087803b15801561325757600080fd5b505af115801561326b573d6000803e3d6000fd5b505050505050565b61329e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612190565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806132e86115e8565b426040518863ffffffff1660e01b815260040161330a96959493929190614a06565b60606040518083038185885af1158015613328573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061334d9190614a67565b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561339a573d6000803e3d6000fd5b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133e35780820151818401526020810190506133c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061340b826133a9565b61341581856133b4565b93506134258185602086016133c5565b61342e816133ef565b840191505092915050565b600060208201905081810360008301526134538184613400565b905092915050565b6000819050919050565b61346e8161345b565b82525050565b60006020820190506134896000830184613465565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134bf82613494565b9050919050565b6134cf816134b4565b81146134da57600080fd5b50565b6000813590506134ec816134c6565b92915050565b6134fb8161345b565b811461350657600080fd5b50565b600081359050613518816134f2565b92915050565b600080604083850312156135355761353461348f565b5b6000613543858286016134dd565b925050602061355485828601613509565b9150509250929050565b60008115159050919050565b6135738161355e565b82525050565b600060208201905061358e600083018461356a565b92915050565b61359d8161355e565b81146135a857600080fd5b50565b6000813590506135ba81613594565b92915050565b600080604083850312156135d7576135d661348f565b5b60006135e5858286016134dd565b92505060206135f6858286016135ab565b9150509250929050565b6000602082840312156136165761361561348f565b5b6000613624848285016134dd565b91505092915050565b6000806000606084860312156136465761364561348f565b5b6000613654868287016134dd565b9350506020613665868287016134dd565b925050604061367686828701613509565b9150509250925092565b600060ff82169050919050565b61369681613680565b82525050565b60006020820190506136b1600083018461368d565b92915050565b60006136c282613494565b9050919050565b6136d2816136b7565b82525050565b60006020820190506136ed60008301846136c9565b92915050565b6000819050919050565b600061371861371361370e84613494565b6136f3565b613494565b9050919050565b600061372a826136fd565b9050919050565b600061373c8261371f565b9050919050565b61374c81613731565b82525050565b60006020820190506137676000830184613743565b92915050565b613776816134b4565b82525050565b6000602082019050613791600083018461376d565b92915050565b600080604083850312156137ae576137ad61348f565b5b60006137bc85828601613509565b92505060206137cd85828601613509565b9150509250929050565b6000602082840312156137ed576137ec61348f565b5b60006137fb84828501613509565b91505092915050565b6000806040838503121561381b5761381a61348f565b5b6000613829858286016134dd565b925050602061383a858286016134dd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061388b57607f821691505b60208210810361389e5761389d613844565b5b50919050565b7f4e6f6e2d7a65726f20616c6c6f77616e636520616c726561647920657869737460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006139006021836133b4565b915061390b826138a4565b604082019050919050565b6000602082019050818103600083015261392f816138f3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061396c6020836133b4565b915061397782613936565b602082019050919050565b6000602082019050818103600083015261399b8161395f565b9050919050565b7f54726164696e6720697320616c72656164792064697361626c65640000000000600082015250565b60006139d8601b836133b4565b91506139e3826139a2565b602082019050919050565b60006020820190508181036000830152613a07816139cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a6a6028836133b4565b9150613a7582613a0e565b604082019050919050565b60006020820190508181036000830152613a9981613a5d565b9050919050565b7f63616e206e6f7420736574206d61726b6574696e6720746f206465616420776160008201527f6c6c657400000000000000000000000000000000000000000000000000000000602082015250565b6000613afc6024836133b4565b9150613b0782613aa0565b604082019050919050565b60006020820190508181036000830152613b2b81613aef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b6c8261345b565b9150613b778361345b565b9250828201905080821115613b8f57613b8e613b32565b5b92915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613bcb601a836133b4565b9150613bd682613b95565b602082019050919050565b60006020820190508181036000830152613bfa81613bbe565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c5d6025836133b4565b9150613c6882613c01565b604082019050919050565b60006020820190508181036000830152613c8c81613c50565b9050919050565b6000613c9e8261345b565b9150613ca98361345b565b9250828202613cb78161345b565b91508282048414831517613cce57613ccd613b32565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d0f8261345b565b9150613d1a8361345b565b925082613d2a57613d29613cd5565b5b828204905092915050565b7f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160008201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660208201527f20746f74616c20737570706c7921000000000000000000000000000000000000604082015250565b6000613db7604e836133b4565b9150613dc282613d35565b606082019050919050565b60006020820190508181036000830152613de681613daa565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b6000613e236020836133b4565b9150613e2e82613ded565b602082019050919050565b60006020820190508181036000830152613e5281613e16565b9050919050565b600081519050613e68816134f2565b92915050565b600060208284031215613e8457613e8361348f565b5b6000613e9284828501613e59565b91505092915050565b7f4e6f20746f6b656e7320617661696c61626c6520746f20776974686472617700600082015250565b6000613ed1601f836133b4565b9150613edc82613e9b565b602082019050919050565b60006020820190508181036000830152613f0081613ec4565b9050919050565b6000604082019050613f1c600083018561376d565b613f296020830184613465565b9392505050565b600081519050613f3f81613594565b92915050565b600060208284031215613f5b57613f5a61348f565b5b6000613f6984828501613f30565b91505092915050565b7f7472616e7366657272696e6720746f6b656e73206661696c6564210000000000600082015250565b6000613fa8601b836133b4565b9150613fb382613f72565b602082019050919050565b60006020820190508181036000830152613fd781613f9b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061403a6026836133b4565b915061404582613fde565b604082019050919050565b600060208201905081810360008301526140698161402d565b9050919050565b7f4e6f2045544820617661696c61626c6520746f20776974686472617700000000600082015250565b60006140a6601c836133b4565b91506140b182614070565b602082019050919050565b600060208201905081810360008301526140d581614099565b9050919050565b600081905092915050565b50565b60006140f76000836140dc565b9150614102826140e7565b600082019050919050565b6000614118826140ea565b9150819050919050565b7f7472616e7366657272696e6720455448206661696c6564000000000000000000600082015250565b60006141586017836133b4565b915061416382614122565b602082019050919050565b600060208201905081810360008301526141878161414b565b9050919050565b7f5265656e7472616e63792067756172643a20616c7265616479206c6f636b6564600082015250565b60006141c46020836133b4565b91506141cf8261418e565b602082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006142566024836133b4565b9150614261826141fa565b604082019050919050565b6000602082019050818103600083015261428581614249565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142e86022836133b4565b91506142f38261428c565b604082019050919050565b60006020820190508181036000830152614317816142db565b9050919050565b7f7472616e736665722066726f6d2061646472657373207a65726f000000000000600082015250565b6000614354601a836133b4565b915061435f8261431e565b602082019050919050565b6000602082019050818103600083015261438381614347565b9050919050565b7f7472616e7366657220746f2061646472657373207a65726f0000000000000000600082015250565b60006143c06018836133b4565b91506143cb8261438a565b602082019050919050565b600060208201905081810360008301526143ef816143b3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006144526029836133b4565b915061445d826143f6565b604082019050919050565b6000602082019050818103600083015261448181614445565b9050919050565b7f5472616e736665722066726f6d20626c61636b6c69737465642061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006144e46021836133b4565b91506144ef82614488565b604082019050919050565b60006020820190508181036000830152614513816144d7565b9050919050565b7f5472616e7366657220746f20626c61636b6c6973746564206164647265737300600082015250565b6000614550601f836133b4565b915061455b8261451a565b602082019050919050565b6000602082019050818103600083015261457f81614543565b9050919050565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b60006145bc6012836133b4565b91506145c782614586565b602082019050919050565b600060208201905081810360008301526145eb816145af565b9050919050565b60006145fd8261345b565b91506146088361345b565b92508282039050818111156146205761461f613b32565b5b92915050565b600060608201905061463b6000830186613465565b6146486020830185613465565b6146556040830184613465565b949350505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146b96025836133b4565b91506146c48261465d565b604082019050919050565b600060208201905081810360008301526146e8816146ac565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061474b6023836133b4565b9150614756826146ef565b604082019050919050565b6000602082019050818103600083015261477a8161473e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147dd6026836133b4565b91506147e882614781565b604082019050919050565b6000602082019050818103600083015261480c816147d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614880816134c6565b92915050565b60006020828403121561489c5761489b61348f565b5b60006148aa84828501614871565b91505092915050565b6000819050919050565b60006148d86148d36148ce846148b3565b6136f3565b61345b565b9050919050565b6148e8816148bd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614923816134b4565b82525050565b6000614935838361491a565b60208301905092915050565b6000602082019050919050565b6000614959826148ee565b61496381856148f9565b935061496e8361490a565b8060005b8381101561499f5781516149868882614929565b975061499183614941565b925050600181019050614972565b5085935050505092915050565b600060a0820190506149c16000830188613465565b6149ce60208301876148df565b81810360408301526149e0818661494e565b90506149ef606083018561376d565b6149fc6080830184613465565b9695505050505050565b600060c082019050614a1b600083018961376d565b614a286020830188613465565b614a3560408301876148df565b614a4260608301866148df565b614a4f608083018561376d565b614a5c60a0830184613465565b979650505050505050565b600080600060608486031215614a8057614a7f61348f565b5b6000614a8e86828701613e59565b9350506020614a9f86828701613e59565b9250506040614ab086828701613e59565b915050925092509256fea2646970667358221220530ecb49ca7b9c8f2b5ac4b042f4cccaf0f933ff18c22955ea7514e2f76dd29b64736f6c63430008120033

Deployed Bytecode Sourcemap

11006:10408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11314:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2560:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15721:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15899:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14438:151;;;;;;;;;;;;;:::i;:::-;;1967:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16095:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2856:490;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13685:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1866:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3354:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12252:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13963:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11967:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12051:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11615:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11274:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2083:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6912:94;;;;;;;;;;;;;:::i;:::-;;11165:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12092:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11357:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14238:192;;;;;;;;;;;;;:::i;:::-;;6689:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1754:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14914:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3577:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11212:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2218:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14597:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15244:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12014:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20922:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11481:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12150:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2401:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11853:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16219:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15587:126;;;;;;;;;;;;;:::i;:::-;;7014:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11440:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20616:298;;;;;;;;;;;;;:::i;:::-;;11525:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1646:100;1700:13;1733:5;1726:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:100;:::o;11314:34::-;;;;:::o;2560:290::-;2643:4;2679:1;2669:6;:11;2668:58;;;;2724:1;2686:11;:25;2698:12;:10;:12::i;:::-;2686:25;;;;;;;;;;;;;;;:34;2712:7;2686:34;;;;;;;;;;;;;;;;:39;2668:58;2660:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;2781:39;2790:12;:10;:12::i;:::-;2804:7;2813:6;2781:8;:39::i;:::-;2838:4;2831:11;;2560:290;;;;:::o;15721:170::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15833:7:::1;15810:11;:20;15822:7;15810:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15875:7;15856:27;;15866:7;15856:27;;;;;;;;;;;;15721:170:::0;;:::o;15899:188::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16014:14:::1;15990:11;:21;16002:8;15990:21;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16064:14;16044:35;;16054:8;16044:35;;;;;;;;;;;;15899:188:::0;;:::o;14438:151::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14502:14:::1;;;;;;;;;;;14494:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14576:5;14559:14;;:22;;;;;;;;;;;;;;;;;;14438:151::o:0;1967:108::-;2028:7;2055:12;;2048:19;;1967:108;:::o;16095:116::-;16159:4;16183:11;:20;16195:7;16183:20;;;;;;;;;;;;;;;;;;;;;;;;;16176:27;;16095:116;;;:::o;2856:490::-;2996:4;3013:36;3023:6;3031:9;3042:6;3013:9;:36::i;:::-;3062:24;3089:11;:19;3101:6;3089:19;;;;;;;;;;;;;;;:33;3109:12;:10;:12::i;:::-;3089:33;;;;;;;;;;;;;;;;3062:60;;3161:6;3141:16;:26;;3133:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3248:57;3257:6;3265:12;:10;:12::i;:::-;3298:6;3279:16;:25;3248:8;:57::i;:::-;3334:4;3327:11;;;2856:490;;;;;:::o;13685:270::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13798:1:::1;13775:25;;:11;:25;;::::0;13767:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13881:11;13852:18;;:41;;;;;;;;;;;;;;;;;;13935:11;13909:38;;;;;;;;;;;;13685:270:::0;:::o;1866:93::-;1924:5;1949:2;1942:9;;1866:93;:::o;3354:215::-;3442:4;3459:80;3468:12;:10;:12::i;:::-;3482:7;3528:10;3491:11;:25;3503:12;:10;:12::i;:::-;3491:25;;;;;;;;;;;;;;;:34;3517:7;3491:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3459:8;:80::i;:::-;3557:4;3550:11;;3354:215;;;;:::o;12252:94::-;;;;;;;;;;;;;:::o;13963:267::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14075:1:::1;14052:25;;:11;:25;;::::0;14044:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14157:11;14129:17;;:40;;;;;;;;;;;;;;;;;;14210:11;14185:37;;;;;;;;;;;;13963:267:::0;:::o;11967:40::-;;;;;;;;;;;;;:::o;12051:34::-;;;;;;;;;;;;;:::o;11615:32::-;;;;:::o;11274:33::-;;;;:::o;2083:127::-;2157:7;2184:9;:18;2194:7;2184:18;;;;;;;;;;;;;;;;2177:25;;2083:127;;;:::o;6912:94::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6977:21:::1;6995:1;6977:9;:21::i;:::-;6912:94::o:0;11165:40::-;;;:::o;12092:32::-;;;;:::o;11357:56::-;;;;:::o;14238:192::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14302:14:::1;;;;;;;;;;;14301:15;14293:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14375:4;14358:14;;:21;;;;;;;;;;;;;;;;;;14410:12;14390:17;:32;;;;14238:192::o:0;6689:87::-;6735:7;6762:6;;;;;;;;;;;6755:13;;6689:87;:::o;1754:104::-;1810:13;1843:7;1836:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1754:104;:::o;14914:322::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15041:19:::1;15023:15;:37;;;;15088:18;15071:14;:35;;;;15129;15149:14;;15129:15;;:19;;:35;;;;:::i;:::-;15117:9;:47;;;;15196:15;;15180:48;15213:14;;15180:48;;;;;;:::i;:::-;;;;;;;;14914:322:::0;;:::o;3577:411::-;3670:4;3687:24;3714:11;:25;3726:12;:10;:12::i;:::-;3714:25;;;;;;;;;;;;;;;:34;3740:7;3714:34;;;;;;;;;;;;;;;;3687:61;;3787:15;3767:16;:35;;3759:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3880:67;3889:12;:10;:12::i;:::-;3903:7;3931:15;3912:16;:34;3880:8;:67::i;:::-;3976:4;3969:11;;;3577:411;;;;:::o;11212:36::-;;;:::o;2218:175::-;2304:4;2321:42;2331:12;:10;:12::i;:::-;2345:9;2356:6;2321:9;:42::i;:::-;2381:4;2374:11;;2218:175;;;;:::o;14597:309::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14720:18:::1;14703:14;:35;;;;14765:17;14749:13;:33;;;;14804;14823:13;;14804:14;;:18;;:33;;;;:::i;:::-;14793:8;:44;;;;14868:14;;14853:45;14884:13;;14853:45;;;;;;:::i;:::-;;;;;;;;14597:309:::0;;:::o;15244:335::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15346:1:::1;15333:10;:14;:57;;;;;15386:4;15381:1;11124:18;15366:16;;;;:::i;:::-;15365:25;;;;:::i;:::-;15351:10;:39;;15333:57;15325:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;15505:10;15484:18;:31;;;;15552:18;;15531:40;;;;;;;;;;15244:335:::0;:::o;12014:30::-;;;;;;;;;;;;;:::o;20922:452::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21033:4:::1;21010:28;;:11;:28;;::::0;21002:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21088:20;21118:11;21111:29;;;21149:4;21111:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21088:67;;21189:1;21174:12;:16;21166:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21239:12;21261:11;21254:28;;;21283:10;21295:12;21254:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21239:69;;21327:7;21319:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;20991:383;;20922:452:::0;:::o;11481:35::-;;;;:::o;12150:95::-;;;;;;;;;;;;;:::o;2401:151::-;2490:7;2517:11;:18;2529:5;2517:18;;;;;;;;;;;;;;;:27;2536:7;2517:27;;;;;;;;;;;;;;;;2510:34;;2401:151;;;;:::o;11853:57::-;;;;:::o;16219:118::-;16284:4;16308:11;:21;16320:8;16308:21;;;;;;;;;;;;;;;;;;;;;;;;;16301:28;;16219:118;;;:::o;15587:126::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15668:21:::1;;;;;;;;;;;15667:38;;15701:4;15667:38;;;15693:5;15667:38;15643:21;;:62;;;;;;;;;;;;;;;;;;15587:126::o:0;7014:192::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7123:1:::1;7103:22;;:8;:22;;::::0;7095:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7179:19;7189:8;7179:9;:19::i;:::-;7014:192:::0;:::o;11440:34::-;;;;:::o;20616:298::-;6835:12;:10;:12::i;:::-;6824:23;;:7;:5;:7::i;:::-;:23;;;6816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20674:15:::1;20692:21;20674:39;;20742:1;20732:7;:11;20724:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20790:12;20816:10;20808:24;;20840:7;20808:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20789:63;;;20871:7;20863:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20663:251;;20616:298::o:0;11525:59::-;;;;:::o;1003:98::-;1056:7;1083:10;1076:17;;1003:98;:::o;5741:445::-;5858:5;;;;;;;;;;;5857:6;5849:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;5915:4;5907:5;;:12;;;;;;;;;;;;;;;;;;5953:1;5936:19;;:5;:19;;;5928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6030:1;6011:21;;:7;:21;;;6003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6110:6;6080:11;:18;6092:5;6080:18;;;;;;;;;;;;;;;:27;6099:7;6080:27;;;;;;;;;;;;;;;:36;;;;6144:7;6128:32;;6137:5;6128:32;;;6153:6;6128:32;;;;;;:::i;:::-;;;;;;;;6177:5;6169;;:13;;;;;;;;;;;;;;;;;;5741:445;;;:::o;17126:1016::-;17266:1;17249:19;;:5;:19;;;17241:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17329:1;17314:17;;:3;:17;;;17306:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;17385:1;17375:7;:11;17367:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17448:11;:18;17460:5;17448:18;;;;;;;;;;;;;;;;;;;;;;;;;17447:19;17439:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17520:11;:16;17532:3;17520:16;;;;;;;;;;;;;;;;;;;;;;;;;17519:17;17511:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17579:18;17600:29;17609:5;17616:3;17621:7;17600:8;:29::i;:::-;17579:50;;17638:12;17681:18;;17653:24;17671:4;17653:9;:24::i;:::-;:46;;17638:61;;17721:11;:18;17733:5;17721:18;;;;;;;;;;;;;;;;;;;;;;;;;17720:19;:49;;;;;17753:11;:16;17765:3;17753:16;;;;;;;;;;;;;;;;;;;;;;;;;17752:17;17720:49;:81;;;;;17783:11;:18;17795:5;17783:18;;;;;;;;;;;;;;;;;;;;;;;;;17782:19;17720:81;:111;;;;;17815:11;:16;17827:3;17815:16;;;;;;;;;;;;;;;;;;;;;;;;;17814:17;17720:111;17706:387;;;17859:14;;;;;;;;;;;17851:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;17940:3;17925:18;;:11;:18;;;:56;;;;;17960:21;;;;;;;;;;;17925:56;:80;;;;;17998:7;17925:80;:108;;;;;18023:10;;;;;;;;;;;18022:11;17925:108;17907:179;;;18060:14;:12;:14::i;:::-;17907:179;17706:387;18099:39;18115:5;18122:3;18127:10;18099:15;:39::i;:::-;17234:908;;17126:1016;;;:::o;7214:173::-;7270:16;7289:6;;;;;;;;;;;7270:25;;7315:8;7306:6;;:17;;;;;;;;;;;;;;;;;;7370:8;7339:40;;7360:8;7339:40;;;;;;;;;;;;7259:128;7214:173;:::o;8926:98::-;8984:7;9015:1;9011;:5;;;;:::i;:::-;9004:12;;8926:98;;;;:::o;16485:637::-;16600:7;16624:11;:18;16636:5;16624:18;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;16646:11;:16;16658:3;16646:16;;;;;;;;;;;;;;;;;;;;;;;;;16624:38;16620:85;;;16686:7;16679:14;;;;16620:85;16715:16;16734:13;;16715:32;;16771:11;16764:18;;:3;:18;;;16760:149;;16810:9;;16799:20;;16760:149;;;16850:11;16841:20;;:5;:20;;;16837:72;;16889:8;;16878:19;;16837:72;16760:149;16921:11;16962:1;16951:8;:12;16947:135;;;17009:4;16997:8;16987:7;:18;;;;:::i;:::-;16986:27;;;;:::i;:::-;16980:33;;17028:42;17044:5;17059:4;17066:3;17028:15;:42::i;:::-;16947:135;17110:3;17100:7;:13;;;;:::i;:::-;17092:22;;;;16485:637;;;;;;:::o;18150:1338::-;18203:4;18190:10;;:17;;;;;;;;;;;;;;;;;;18214;18234:24;18252:4;18234:9;:24::i;:::-;18214:44;;18283:1;18270:9;:14;18266:45;;18297:7;;;18266:45;18319:16;18338:25;18353:9;;18339:8;;18338:14;;:25;;;;:::i;:::-;18319:44;;18372:24;18398:37;18419:15;;18399:14;;18398:20;;:37;;;;:::i;:::-;18372:63;;18442:23;18468:35;18488:14;;18469:13;;18468:19;;:35;;;;:::i;:::-;18442:61;;18536:1;18516:16;:21;18512:94;;18561:37;18582:15;18561:16;:20;;:37;;;;:::i;:::-;18550:48;;18512:94;18614:20;18660:1;18649:8;:12;18645:104;;;18689:52;18739:1;18689:45;18725:8;18689:31;18703:16;18689:9;:13;;:31;;;;:::i;:::-;:35;;:45;;;;:::i;:::-;:49;;:52;;;;:::i;:::-;18674:67;;18645:104;18755:18;18776:27;18790:12;18776:9;:13;;:27;;;;:::i;:::-;18755:48;;18810:22;18835:21;18810:46;;18863:21;18873:10;18863:9;:21::i;:::-;18891:18;18912:41;18938:14;18912:21;:25;;:41;;;;:::i;:::-;18891:62;;18962:25;19021:1;19002:16;:20;18998:249;;;19055:53;19106:1;19055:46;19092:8;19055:32;19070:16;19055:10;:14;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;:50;;:53;;;;:::i;:::-;19035:73;;19121:45;19134:12;19148:17;19121:12;:45::i;:::-;19178:61;19193:12;19207:17;19226:12;19178:61;;;;;;;;:::i;:::-;;;;;;;;18998:249;19253:24;19280:45;19316:8;19280:31;19295:15;19280:10;:14;;:31;;;;:::i;:::-;:35;;:45;;;;:::i;:::-;19253:72;;19334:59;19355:18;;;;;;;;;;;19375:17;19334:20;:59::i;:::-;19400:57;19421:17;;;;;;;;;;;19440:16;19400:20;:57::i;:::-;19479:5;19466:10;;:18;;;;;;;;;;;;;;;;;;18183:1305;;;;;;;;;;18150:1338;:::o;3996:733::-;4154:1;4136:20;;:6;:20;;;4128:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4238:1;4217:23;;:9;:23;;;4209:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4293:47;4314:6;4322:9;4333:6;4293:20;:47::i;:::-;4353:21;4377:9;:17;4387:6;4377:17;;;;;;;;;;;;;;;;4353:41;;4430:6;4413:13;:23;;4405:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4551:6;4535:13;:22;4515:9;:17;4525:6;4515:17;;;;;;;;;;;;;;;:42;;;;4603:6;4579:9;:20;4589:9;4579:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4644:9;4627:35;;4636:6;4627:35;;;4655:6;4627:35;;;;;;:::i;:::-;;;;;;;;4675:46;4695:6;4703:9;4714:6;4675:19;:46::i;:::-;4117:612;3996:733;;;:::o;9138:98::-;9196:7;9227:1;9223;:5;;;;:::i;:::-;9216:12;;9138:98;;;;:::o;9244:::-;9302:7;9333:1;9329;:5;;;;:::i;:::-;9322:12;;9244:98;;;;:::o;9032:::-;9090:7;9121:1;9117;:5;;;;:::i;:::-;9110:12;;9032:98;;;;:::o;19640:447::-;19696:21;19734:1;19720:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19696:40;;19765:4;19747;19752:1;19747:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19791:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19781:4;19786:1;19781:7;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;;;;19822:56;19839:4;19854:13;19870:7;19822:8;:56::i;:::-;19889:13;:64;;;19968:7;19990:1;20006:4;20033;20053:15;19889:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19685:402;19640:447;:::o;20099:509::-;20247:60;20264:4;20279:13;20295:11;20247:8;:60::i;:::-;20350:13;:29;;;20387:9;20420:4;20440:11;20466:1;20509;20552:7;:5;:7::i;:::-;20574:15;20350:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20099:509;;:::o;19496:132::-;19594:9;:18;;:26;19613:6;19594:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19496:132;;:::o;6194:125::-;;;;:::o;6327:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:468::-;4124:6;4132;4181:2;4169:9;4160:7;4156:23;4152:32;4149:119;;;4187:79;;:::i;:::-;4149:119;4307:1;4332:53;4377:7;4368:6;4357:9;4353:22;4332:53;:::i;:::-;4322:63;;4278:117;4434:2;4460:50;4502:7;4493:6;4482:9;4478:22;4460:50;:::i;:::-;4450:60;;4405:115;4059:468;;;;;:::o;4533:329::-;4592:6;4641:2;4629:9;4620:7;4616:23;4612:32;4609:119;;;4647:79;;:::i;:::-;4609:119;4767:1;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4738:117;4533:329;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:104::-;5968:7;5997:24;6015:5;5997:24;:::i;:::-;5986:35;;5923:104;;;:::o;6033:142::-;6136:32;6162:5;6136:32;:::i;:::-;6131:3;6124:45;6033:142;;:::o;6181:254::-;6290:4;6328:2;6317:9;6313:18;6305:26;;6341:87;6425:1;6414:9;6410:17;6401:6;6341:87;:::i;:::-;6181:254;;;;:::o;6441:60::-;6469:3;6490:5;6483:12;;6441:60;;;:::o;6507:142::-;6557:9;6590:53;6608:34;6617:24;6635:5;6617:24;:::i;:::-;6608:34;:::i;:::-;6590:53;:::i;:::-;6577:66;;6507:142;;;:::o;6655:126::-;6705:9;6738:37;6769:5;6738:37;:::i;:::-;6725:50;;6655:126;;;:::o;6787:144::-;6855:9;6888:37;6919:5;6888:37;:::i;:::-;6875:50;;6787:144;;;:::o;6937:167::-;7042:55;7091:5;7042:55;:::i;:::-;7037:3;7030:68;6937:167;;:::o;7110:258::-;7221:4;7259:2;7248:9;7244:18;7236:26;;7272:89;7358:1;7347:9;7343:17;7334:6;7272:89;:::i;:::-;7110:258;;;;:::o;7374:118::-;7461:24;7479:5;7461:24;:::i;:::-;7456:3;7449:37;7374:118;;:::o;7498:222::-;7591:4;7629:2;7618:9;7614:18;7606:26;;7642:71;7710:1;7699:9;7695:17;7686:6;7642:71;:::i;:::-;7498:222;;;;:::o;7726:474::-;7794:6;7802;7851:2;7839:9;7830:7;7826:23;7822:32;7819:119;;;7857:79;;:::i;:::-;7819:119;7977:1;8002:53;8047:7;8038:6;8027:9;8023:22;8002:53;:::i;:::-;7992:63;;7948:117;8104:2;8130:53;8175:7;8166:6;8155:9;8151:22;8130:53;:::i;:::-;8120:63;;8075:118;7726:474;;;;;:::o;8206:329::-;8265:6;8314:2;8302:9;8293:7;8289:23;8285:32;8282:119;;;8320:79;;:::i;:::-;8282:119;8440:1;8465:53;8510:7;8501:6;8490:9;8486:22;8465:53;:::i;:::-;8455:63;;8411:117;8206:329;;;;:::o;8541:474::-;8609:6;8617;8666:2;8654:9;8645:7;8641:23;8637:32;8634:119;;;8672:79;;:::i;:::-;8634:119;8792:1;8817:53;8862:7;8853:6;8842:9;8838:22;8817:53;:::i;:::-;8807:63;;8763:117;8919:2;8945:53;8990:7;8981:6;8970:9;8966:22;8945:53;:::i;:::-;8935:63;;8890:118;8541:474;;;;;:::o;9021:180::-;9069:77;9066:1;9059:88;9166:4;9163:1;9156:15;9190:4;9187:1;9180:15;9207:320;9251:6;9288:1;9282:4;9278:12;9268:22;;9335:1;9329:4;9325:12;9356:18;9346:81;;9412:4;9404:6;9400:17;9390:27;;9346:81;9474:2;9466:6;9463:14;9443:18;9440:38;9437:84;;9493:18;;:::i;:::-;9437:84;9258:269;9207:320;;;:::o;9533:220::-;9673:34;9669:1;9661:6;9657:14;9650:58;9742:3;9737:2;9729:6;9725:15;9718:28;9533:220;:::o;9759:366::-;9901:3;9922:67;9986:2;9981:3;9922:67;:::i;:::-;9915:74;;9998:93;10087:3;9998:93;:::i;:::-;10116:2;10111:3;10107:12;10100:19;;9759:366;;;:::o;10131:419::-;10297:4;10335:2;10324:9;10320:18;10312:26;;10384:9;10378:4;10374:20;10370:1;10359:9;10355:17;10348:47;10412:131;10538:4;10412:131;:::i;:::-;10404:139;;10131:419;;;:::o;10556:182::-;10696:34;10692:1;10684:6;10680:14;10673:58;10556:182;:::o;10744:366::-;10886:3;10907:67;10971:2;10966:3;10907:67;:::i;:::-;10900:74;;10983:93;11072:3;10983:93;:::i;:::-;11101:2;11096:3;11092:12;11085:19;;10744:366;;;:::o;11116:419::-;11282:4;11320:2;11309:9;11305:18;11297:26;;11369:9;11363:4;11359:20;11355:1;11344:9;11340:17;11333:47;11397:131;11523:4;11397:131;:::i;:::-;11389:139;;11116:419;;;:::o;11541:177::-;11681:29;11677:1;11669:6;11665:14;11658:53;11541:177;:::o;11724:366::-;11866:3;11887:67;11951:2;11946:3;11887:67;:::i;:::-;11880:74;;11963:93;12052:3;11963:93;:::i;:::-;12081:2;12076:3;12072:12;12065:19;;11724:366;;;:::o;12096:419::-;12262:4;12300:2;12289:9;12285:18;12277:26;;12349:9;12343:4;12339:20;12335:1;12324:9;12320:17;12313:47;12377:131;12503:4;12377:131;:::i;:::-;12369:139;;12096:419;;;:::o;12521:227::-;12661:34;12657:1;12649:6;12645:14;12638:58;12730:10;12725:2;12717:6;12713:15;12706:35;12521:227;:::o;12754:366::-;12896:3;12917:67;12981:2;12976:3;12917:67;:::i;:::-;12910:74;;12993:93;13082:3;12993:93;:::i;:::-;13111:2;13106:3;13102:12;13095:19;;12754:366;;;:::o;13126:419::-;13292:4;13330:2;13319:9;13315:18;13307:26;;13379:9;13373:4;13369:20;13365:1;13354:9;13350:17;13343:47;13407:131;13533:4;13407:131;:::i;:::-;13399:139;;13126:419;;;:::o;13551:223::-;13691:34;13687:1;13679:6;13675:14;13668:58;13760:6;13755:2;13747:6;13743:15;13736:31;13551:223;:::o;13780:366::-;13922:3;13943:67;14007:2;14002:3;13943:67;:::i;:::-;13936:74;;14019:93;14108:3;14019:93;:::i;:::-;14137:2;14132:3;14128:12;14121:19;;13780:366;;;:::o;14152:419::-;14318:4;14356:2;14345:9;14341:18;14333:26;;14405:9;14399:4;14395:20;14391:1;14380:9;14376:17;14369:47;14433:131;14559:4;14433:131;:::i;:::-;14425:139;;14152:419;;;:::o;14577:180::-;14625:77;14622:1;14615:88;14722:4;14719:1;14712:15;14746:4;14743:1;14736:15;14763:191;14803:3;14822:20;14840:1;14822:20;:::i;:::-;14817:25;;14856:20;14874:1;14856:20;:::i;:::-;14851:25;;14899:1;14896;14892:9;14885:16;;14920:3;14917:1;14914:10;14911:36;;;14927:18;;:::i;:::-;14911:36;14763:191;;;;:::o;14960:176::-;15100:28;15096:1;15088:6;15084:14;15077:52;14960:176;:::o;15142:366::-;15284:3;15305:67;15369:2;15364:3;15305:67;:::i;:::-;15298:74;;15381:93;15470:3;15381:93;:::i;:::-;15499:2;15494:3;15490:12;15483:19;;15142:366;;;:::o;15514:419::-;15680:4;15718:2;15707:9;15703:18;15695:26;;15767:9;15761:4;15757:20;15753:1;15742:9;15738:17;15731:47;15795:131;15921:4;15795:131;:::i;:::-;15787:139;;15514:419;;;:::o;15939:224::-;16079:34;16075:1;16067:6;16063:14;16056:58;16148:7;16143:2;16135:6;16131:15;16124:32;15939:224;:::o;16169:366::-;16311:3;16332:67;16396:2;16391:3;16332:67;:::i;:::-;16325:74;;16408:93;16497:3;16408:93;:::i;:::-;16526:2;16521:3;16517:12;16510:19;;16169:366;;;:::o;16541:419::-;16707:4;16745:2;16734:9;16730:18;16722:26;;16794:9;16788:4;16784:20;16780:1;16769:9;16765:17;16758:47;16822:131;16948:4;16822:131;:::i;:::-;16814:139;;16541:419;;;:::o;16966:410::-;17006:7;17029:20;17047:1;17029:20;:::i;:::-;17024:25;;17063:20;17081:1;17063:20;:::i;:::-;17058:25;;17118:1;17115;17111:9;17140:30;17158:11;17140:30;:::i;:::-;17129:41;;17319:1;17310:7;17306:15;17303:1;17300:22;17280:1;17273:9;17253:83;17230:139;;17349:18;;:::i;:::-;17230:139;17014:362;16966:410;;;;:::o;17382:180::-;17430:77;17427:1;17420:88;17527:4;17524:1;17517:15;17551:4;17548:1;17541:15;17568:185;17608:1;17625:20;17643:1;17625:20;:::i;:::-;17620:25;;17659:20;17677:1;17659:20;:::i;:::-;17654:25;;17698:1;17688:35;;17703:18;;:::i;:::-;17688:35;17745:1;17742;17738:9;17733:14;;17568:185;;;;:::o;17759:302::-;17899:34;17895:1;17887:6;17883:14;17876:58;17968:34;17963:2;17955:6;17951:15;17944:59;18037:16;18032:2;18024:6;18020:15;18013:41;17759:302;:::o;18067:366::-;18209:3;18230:67;18294:2;18289:3;18230:67;:::i;:::-;18223:74;;18306:93;18395:3;18306:93;:::i;:::-;18424:2;18419:3;18415:12;18408:19;;18067:366;;;:::o;18439:419::-;18605:4;18643:2;18632:9;18628:18;18620:26;;18692:9;18686:4;18682:20;18678:1;18667:9;18663:17;18656:47;18720:131;18846:4;18720:131;:::i;:::-;18712:139;;18439:419;;;:::o;18864:182::-;19004:34;19000:1;18992:6;18988:14;18981:58;18864:182;:::o;19052:366::-;19194:3;19215:67;19279:2;19274:3;19215:67;:::i;:::-;19208:74;;19291:93;19380:3;19291:93;:::i;:::-;19409:2;19404:3;19400:12;19393:19;;19052:366;;;:::o;19424:419::-;19590:4;19628:2;19617:9;19613:18;19605:26;;19677:9;19671:4;19667:20;19663:1;19652:9;19648:17;19641:47;19705:131;19831:4;19705:131;:::i;:::-;19697:139;;19424:419;;;:::o;19849:143::-;19906:5;19937:6;19931:13;19922:22;;19953:33;19980:5;19953:33;:::i;:::-;19849:143;;;;:::o;19998:351::-;20068:6;20117:2;20105:9;20096:7;20092:23;20088:32;20085:119;;;20123:79;;:::i;:::-;20085:119;20243:1;20268:64;20324:7;20315:6;20304:9;20300:22;20268:64;:::i;:::-;20258:74;;20214:128;19998:351;;;;:::o;20355:181::-;20495:33;20491:1;20483:6;20479:14;20472:57;20355:181;:::o;20542:366::-;20684:3;20705:67;20769:2;20764:3;20705:67;:::i;:::-;20698:74;;20781:93;20870:3;20781:93;:::i;:::-;20899:2;20894:3;20890:12;20883:19;;20542:366;;;:::o;20914:419::-;21080:4;21118:2;21107:9;21103:18;21095:26;;21167:9;21161:4;21157:20;21153:1;21142:9;21138:17;21131:47;21195:131;21321:4;21195:131;:::i;:::-;21187:139;;20914:419;;;:::o;21339:332::-;21460:4;21498:2;21487:9;21483:18;21475:26;;21511:71;21579:1;21568:9;21564:17;21555:6;21511:71;:::i;:::-;21592:72;21660:2;21649:9;21645:18;21636:6;21592:72;:::i;:::-;21339:332;;;;;:::o;21677:137::-;21731:5;21762:6;21756:13;21747:22;;21778:30;21802:5;21778:30;:::i;:::-;21677:137;;;;:::o;21820:345::-;21887:6;21936:2;21924:9;21915:7;21911:23;21907:32;21904:119;;;21942:79;;:::i;:::-;21904:119;22062:1;22087:61;22140:7;22131:6;22120:9;22116:22;22087:61;:::i;:::-;22077:71;;22033:125;21820:345;;;;:::o;22171:177::-;22311:29;22307:1;22299:6;22295:14;22288:53;22171:177;:::o;22354:366::-;22496:3;22517:67;22581:2;22576:3;22517:67;:::i;:::-;22510:74;;22593:93;22682:3;22593:93;:::i;:::-;22711:2;22706:3;22702:12;22695:19;;22354:366;;;:::o;22726:419::-;22892:4;22930:2;22919:9;22915:18;22907:26;;22979:9;22973:4;22969:20;22965:1;22954:9;22950:17;22943:47;23007:131;23133:4;23007:131;:::i;:::-;22999:139;;22726:419;;;:::o;23151:225::-;23291:34;23287:1;23279:6;23275:14;23268:58;23360:8;23355:2;23347:6;23343:15;23336:33;23151:225;:::o;23382:366::-;23524:3;23545:67;23609:2;23604:3;23545:67;:::i;:::-;23538:74;;23621:93;23710:3;23621:93;:::i;:::-;23739:2;23734:3;23730:12;23723:19;;23382:366;;;:::o;23754:419::-;23920:4;23958:2;23947:9;23943:18;23935:26;;24007:9;24001:4;23997:20;23993:1;23982:9;23978:17;23971:47;24035:131;24161:4;24035:131;:::i;:::-;24027:139;;23754:419;;;:::o;24179:178::-;24319:30;24315:1;24307:6;24303:14;24296:54;24179:178;:::o;24363:366::-;24505:3;24526:67;24590:2;24585:3;24526:67;:::i;:::-;24519:74;;24602:93;24691:3;24602:93;:::i;:::-;24720:2;24715:3;24711:12;24704:19;;24363:366;;;:::o;24735:419::-;24901:4;24939:2;24928:9;24924:18;24916:26;;24988:9;24982:4;24978:20;24974:1;24963:9;24959:17;24952:47;25016:131;25142:4;25016:131;:::i;:::-;25008:139;;24735:419;;;:::o;25160:147::-;25261:11;25298:3;25283:18;;25160:147;;;;:::o;25313:114::-;;:::o;25433:398::-;25592:3;25613:83;25694:1;25689:3;25613:83;:::i;:::-;25606:90;;25705:93;25794:3;25705:93;:::i;:::-;25823:1;25818:3;25814:11;25807:18;;25433:398;;;:::o;25837:379::-;26021:3;26043:147;26186:3;26043:147;:::i;:::-;26036:154;;26207:3;26200:10;;25837:379;;;:::o;26222:173::-;26362:25;26358:1;26350:6;26346:14;26339:49;26222:173;:::o;26401:366::-;26543:3;26564:67;26628:2;26623:3;26564:67;:::i;:::-;26557:74;;26640:93;26729:3;26640:93;:::i;:::-;26758:2;26753:3;26749:12;26742:19;;26401:366;;;:::o;26773:419::-;26939:4;26977:2;26966:9;26962:18;26954:26;;27026:9;27020:4;27016:20;27012:1;27001:9;26997:17;26990:47;27054:131;27180:4;27054:131;:::i;:::-;27046:139;;26773:419;;;:::o;27198:182::-;27338:34;27334:1;27326:6;27322:14;27315:58;27198:182;:::o;27386:366::-;27528:3;27549:67;27613:2;27608:3;27549:67;:::i;:::-;27542:74;;27625:93;27714:3;27625:93;:::i;:::-;27743:2;27738:3;27734:12;27727:19;;27386:366;;;:::o;27758:419::-;27924:4;27962:2;27951:9;27947:18;27939:26;;28011:9;28005:4;28001:20;27997:1;27986:9;27982:17;27975:47;28039:131;28165:4;28039:131;:::i;:::-;28031:139;;27758:419;;;:::o;28183:223::-;28323:34;28319:1;28311:6;28307:14;28300:58;28392:6;28387:2;28379:6;28375:15;28368:31;28183:223;:::o;28412:366::-;28554:3;28575:67;28639:2;28634:3;28575:67;:::i;:::-;28568:74;;28651:93;28740:3;28651:93;:::i;:::-;28769:2;28764:3;28760:12;28753:19;;28412:366;;;:::o;28784:419::-;28950:4;28988:2;28977:9;28973:18;28965:26;;29037:9;29031:4;29027:20;29023:1;29012:9;29008:17;29001:47;29065:131;29191:4;29065:131;:::i;:::-;29057:139;;28784:419;;;:::o;29209:221::-;29349:34;29345:1;29337:6;29333:14;29326:58;29418:4;29413:2;29405:6;29401:15;29394:29;29209:221;:::o;29436:366::-;29578:3;29599:67;29663:2;29658:3;29599:67;:::i;:::-;29592:74;;29675:93;29764:3;29675:93;:::i;:::-;29793:2;29788:3;29784:12;29777:19;;29436:366;;;:::o;29808:419::-;29974:4;30012:2;30001:9;29997:18;29989:26;;30061:9;30055:4;30051:20;30047:1;30036:9;30032:17;30025:47;30089:131;30215:4;30089:131;:::i;:::-;30081:139;;29808:419;;;:::o;30233:176::-;30373:28;30369:1;30361:6;30357:14;30350:52;30233:176;:::o;30415:366::-;30557:3;30578:67;30642:2;30637:3;30578:67;:::i;:::-;30571:74;;30654:93;30743:3;30654:93;:::i;:::-;30772:2;30767:3;30763:12;30756:19;;30415:366;;;:::o;30787:419::-;30953:4;30991:2;30980:9;30976:18;30968:26;;31040:9;31034:4;31030:20;31026:1;31015:9;31011:17;31004:47;31068:131;31194:4;31068:131;:::i;:::-;31060:139;;30787:419;;;:::o;31212:174::-;31352:26;31348:1;31340:6;31336:14;31329:50;31212:174;:::o;31392:366::-;31534:3;31555:67;31619:2;31614:3;31555:67;:::i;:::-;31548:74;;31631:93;31720:3;31631:93;:::i;:::-;31749:2;31744:3;31740:12;31733:19;;31392:366;;;:::o;31764:419::-;31930:4;31968:2;31957:9;31953:18;31945:26;;32017:9;32011:4;32007:20;32003:1;31992:9;31988:17;31981:47;32045:131;32171:4;32045:131;:::i;:::-;32037:139;;31764:419;;;:::o;32189:228::-;32329:34;32325:1;32317:6;32313:14;32306:58;32398:11;32393:2;32385:6;32381:15;32374:36;32189:228;:::o;32423:366::-;32565:3;32586:67;32650:2;32645:3;32586:67;:::i;:::-;32579:74;;32662:93;32751:3;32662:93;:::i;:::-;32780:2;32775:3;32771:12;32764:19;;32423:366;;;:::o;32795:419::-;32961:4;32999:2;32988:9;32984:18;32976:26;;33048:9;33042:4;33038:20;33034:1;33023:9;33019:17;33012:47;33076:131;33202:4;33076:131;:::i;:::-;33068:139;;32795:419;;;:::o;33220:220::-;33360:34;33356:1;33348:6;33344:14;33337:58;33429:3;33424:2;33416:6;33412:15;33405:28;33220:220;:::o;33446:366::-;33588:3;33609:67;33673:2;33668:3;33609:67;:::i;:::-;33602:74;;33685:93;33774:3;33685:93;:::i;:::-;33803:2;33798:3;33794:12;33787:19;;33446:366;;;:::o;33818:419::-;33984:4;34022:2;34011:9;34007:18;33999:26;;34071:9;34065:4;34061:20;34057:1;34046:9;34042:17;34035:47;34099:131;34225:4;34099:131;:::i;:::-;34091:139;;33818:419;;;:::o;34243:181::-;34383:33;34379:1;34371:6;34367:14;34360:57;34243:181;:::o;34430:366::-;34572:3;34593:67;34657:2;34652:3;34593:67;:::i;:::-;34586:74;;34669:93;34758:3;34669:93;:::i;:::-;34787:2;34782:3;34778:12;34771:19;;34430:366;;;:::o;34802:419::-;34968:4;35006:2;34995:9;34991:18;34983:26;;35055:9;35049:4;35045:20;35041:1;35030:9;35026:17;35019:47;35083:131;35209:4;35083:131;:::i;:::-;35075:139;;34802:419;;;:::o;35227:168::-;35367:20;35363:1;35355:6;35351:14;35344:44;35227:168;:::o;35401:366::-;35543:3;35564:67;35628:2;35623:3;35564:67;:::i;:::-;35557:74;;35640:93;35729:3;35640:93;:::i;:::-;35758:2;35753:3;35749:12;35742:19;;35401:366;;;:::o;35773:419::-;35939:4;35977:2;35966:9;35962:18;35954:26;;36026:9;36020:4;36016:20;36012:1;36001:9;35997:17;35990:47;36054:131;36180:4;36054:131;:::i;:::-;36046:139;;35773:419;;;:::o;36198:194::-;36238:4;36258:20;36276:1;36258:20;:::i;:::-;36253:25;;36292:20;36310:1;36292:20;:::i;:::-;36287:25;;36336:1;36333;36329:9;36321:17;;36360:1;36354:4;36351:11;36348:37;;;36365:18;;:::i;:::-;36348:37;36198:194;;;;:::o;36398:442::-;36547:4;36585:2;36574:9;36570:18;36562:26;;36598:71;36666:1;36655:9;36651:17;36642:6;36598:71;:::i;:::-;36679:72;36747:2;36736:9;36732:18;36723:6;36679:72;:::i;:::-;36761;36829:2;36818:9;36814:18;36805:6;36761:72;:::i;:::-;36398:442;;;;;;:::o;36846:224::-;36986:34;36982:1;36974:6;36970:14;36963:58;37055:7;37050:2;37042:6;37038:15;37031:32;36846:224;:::o;37076:366::-;37218:3;37239:67;37303:2;37298:3;37239:67;:::i;:::-;37232:74;;37315:93;37404:3;37315:93;:::i;:::-;37433:2;37428:3;37424:12;37417:19;;37076:366;;;:::o;37448:419::-;37614:4;37652:2;37641:9;37637:18;37629:26;;37701:9;37695:4;37691:20;37687:1;37676:9;37672:17;37665:47;37729:131;37855:4;37729:131;:::i;:::-;37721:139;;37448:419;;;:::o;37873:222::-;38013:34;38009:1;38001:6;37997:14;37990:58;38082:5;38077:2;38069:6;38065:15;38058:30;37873:222;:::o;38101:366::-;38243:3;38264:67;38328:2;38323:3;38264:67;:::i;:::-;38257:74;;38340:93;38429:3;38340:93;:::i;:::-;38458:2;38453:3;38449:12;38442:19;;38101:366;;;:::o;38473:419::-;38639:4;38677:2;38666:9;38662:18;38654:26;;38726:9;38720:4;38716:20;38712:1;38701:9;38697:17;38690:47;38754:131;38880:4;38754:131;:::i;:::-;38746:139;;38473:419;;;:::o;38898:225::-;39038:34;39034:1;39026:6;39022:14;39015:58;39107:8;39102:2;39094:6;39090:15;39083:33;38898:225;:::o;39129:366::-;39271:3;39292:67;39356:2;39351:3;39292:67;:::i;:::-;39285:74;;39368:93;39457:3;39368:93;:::i;:::-;39486:2;39481:3;39477:12;39470:19;;39129:366;;;:::o;39501:419::-;39667:4;39705:2;39694:9;39690:18;39682:26;;39754:9;39748:4;39744:20;39740:1;39729:9;39725:17;39718:47;39782:131;39908:4;39782:131;:::i;:::-;39774:139;;39501:419;;;:::o;39926:180::-;39974:77;39971:1;39964:88;40071:4;40068:1;40061:15;40095:4;40092:1;40085:15;40112:180;40160:77;40157:1;40150:88;40257:4;40254:1;40247:15;40281:4;40278:1;40271:15;40298:143;40355:5;40386:6;40380:13;40371:22;;40402:33;40429:5;40402:33;:::i;:::-;40298:143;;;;:::o;40447:351::-;40517:6;40566:2;40554:9;40545:7;40541:23;40537:32;40534:119;;;40572:79;;:::i;:::-;40534:119;40692:1;40717:64;40773:7;40764:6;40753:9;40749:22;40717:64;:::i;:::-;40707:74;;40663:128;40447:351;;;;:::o;40804:85::-;40849:7;40878:5;40867:16;;40804:85;;;:::o;40895:158::-;40953:9;40986:61;41004:42;41013:32;41039:5;41013:32;:::i;:::-;41004:42;:::i;:::-;40986:61;:::i;:::-;40973:74;;40895:158;;;:::o;41059:147::-;41154:45;41193:5;41154:45;:::i;:::-;41149:3;41142:58;41059:147;;:::o;41212:114::-;41279:6;41313:5;41307:12;41297:22;;41212:114;;;:::o;41332:184::-;41431:11;41465:6;41460:3;41453:19;41505:4;41500:3;41496:14;41481:29;;41332:184;;;;:::o;41522:132::-;41589:4;41612:3;41604:11;;41642:4;41637:3;41633:14;41625:22;;41522:132;;;:::o;41660:108::-;41737:24;41755:5;41737:24;:::i;:::-;41732:3;41725:37;41660:108;;:::o;41774:179::-;41843:10;41864:46;41906:3;41898:6;41864:46;:::i;:::-;41942:4;41937:3;41933:14;41919:28;;41774:179;;;;:::o;41959:113::-;42029:4;42061;42056:3;42052:14;42044:22;;41959:113;;;:::o;42108:732::-;42227:3;42256:54;42304:5;42256:54;:::i;:::-;42326:86;42405:6;42400:3;42326:86;:::i;:::-;42319:93;;42436:56;42486:5;42436:56;:::i;:::-;42515:7;42546:1;42531:284;42556:6;42553:1;42550:13;42531:284;;;42632:6;42626:13;42659:63;42718:3;42703:13;42659:63;:::i;:::-;42652:70;;42745:60;42798:6;42745:60;:::i;:::-;42735:70;;42591:224;42578:1;42575;42571:9;42566:14;;42531:284;;;42535:14;42831:3;42824:10;;42232:608;;;42108:732;;;;:::o;42846:831::-;43109:4;43147:3;43136:9;43132:19;43124:27;;43161:71;43229:1;43218:9;43214:17;43205:6;43161:71;:::i;:::-;43242:80;43318:2;43307:9;43303:18;43294:6;43242:80;:::i;:::-;43369:9;43363:4;43359:20;43354:2;43343:9;43339:18;43332:48;43397:108;43500:4;43491:6;43397:108;:::i;:::-;43389:116;;43515:72;43583:2;43572:9;43568:18;43559:6;43515:72;:::i;:::-;43597:73;43665:3;43654:9;43650:19;43641:6;43597:73;:::i;:::-;42846:831;;;;;;;;:::o;43683:807::-;43932:4;43970:3;43959:9;43955:19;43947:27;;43984:71;44052:1;44041:9;44037:17;44028:6;43984:71;:::i;:::-;44065:72;44133:2;44122:9;44118:18;44109:6;44065:72;:::i;:::-;44147:80;44223:2;44212:9;44208:18;44199:6;44147:80;:::i;:::-;44237;44313:2;44302:9;44298:18;44289:6;44237:80;:::i;:::-;44327:73;44395:3;44384:9;44380:19;44371:6;44327:73;:::i;:::-;44410;44478:3;44467:9;44463:19;44454:6;44410:73;:::i;:::-;43683:807;;;;;;;;;:::o;44496:663::-;44584:6;44592;44600;44649:2;44637:9;44628:7;44624:23;44620:32;44617:119;;;44655:79;;:::i;:::-;44617:119;44775:1;44800:64;44856:7;44847:6;44836:9;44832:22;44800:64;:::i;:::-;44790:74;;44746:128;44913:2;44939:64;44995:7;44986:6;44975:9;44971:22;44939:64;:::i;:::-;44929:74;;44884:129;45052:2;45078:64;45134:7;45125:6;45114:9;45110:22;45078:64;:::i;:::-;45068:74;;45023:129;44496:663;;;;;:::o

Swarm Source

ipfs://530ecb49ca7b9c8f2b5ac4b042f4cccaf0f933ff18c22955ea7514e2f76dd29b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

NAVRAS Tech aims to serve as a bridge between the old and new with applications that provide solutions that are intuitive for both the consumer and provider. Our journey is ambitious, bold, and broad in scope, but we believe that our technologies will quickly interrupt the mediocre norm that exists.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.