ETH Price: $3,364.28 (+0.49%)

Contract

0x6FF2241756549B5816A177659E766EAf14B34429
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

AQTIS Token (AQTIS) (@$0.0008)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212499982024-11-23 10:59:2322 mins ago1732359563IN
AQTIS: AQTIS Token
0 ETH0.0002661810.6541629
Approve212499982024-11-23 10:59:2322 mins ago1732359563IN
AQTIS: AQTIS Token
0 ETH0.0002655410.6541629
Approve212499952024-11-23 10:58:4723 mins ago1732359527IN
AQTIS: AQTIS Token
0 ETH0.0002657810.63812511
Approve212498672024-11-23 10:33:1148 mins ago1732357991IN
AQTIS: AQTIS Token
0 ETH0.0005540111.73558432
Approve212472022024-11-23 1:38:359 hrs ago1732325915IN
AQTIS: AQTIS Token
0 ETH0.0006422113.58672072
Approve212467012024-11-22 23:58:1111 hrs ago1732319891IN
AQTIS: AQTIS Token
0 ETH0.0006820814.43021131
Approve212456962024-11-22 20:36:2314 hrs ago1732307783IN
AQTIS: AQTIS Token
0 ETH0.0006170213.07044247
Approve212456742024-11-22 20:31:5914 hrs ago1732307519IN
AQTIS: AQTIS Token
0 ETH0.0006200413.11758341
Transfer212455632024-11-22 20:09:4715 hrs ago1732306187IN
AQTIS: AQTIS Token
0 ETH0.0008794112.86799848
Approve212453252024-11-22 19:21:5916 hrs ago1732303319IN
AQTIS: AQTIS Token
0 ETH0.0003534114.17962296
Approve212451602024-11-22 18:48:5916 hrs ago1732301339IN
AQTIS: AQTIS Token
0 ETH0.0008484618.07407434
Approve212439642024-11-22 14:47:3520 hrs ago1732286855IN
AQTIS: AQTIS Token
0 ETH0.0007312315.46995867
Approve212428682024-11-22 11:07:1124 hrs ago1732273631IN
AQTIS: AQTIS Token
0 ETH0.0005634811.93615869
Transfer212424862024-11-22 9:50:3525 hrs ago1732269035IN
AQTIS: AQTIS Token
0 ETH0.0007873411.52087416
Approve212410362024-11-22 4:58:4730 hrs ago1732251527IN
AQTIS: AQTIS Token
0 ETH0.000427849.11619006
Approve212398632024-11-22 1:03:2334 hrs ago1732237403IN
AQTIS: AQTIS Token
0 ETH0.0005752512.18562448
Approve212359382024-11-21 11:55:1147 hrs ago1732190111IN
AQTIS: AQTIS Token
0 ETH0.0007304615.45376542
Approve212354342024-11-21 10:13:232 days ago1732184003IN
AQTIS: AQTIS Token
0 ETH0.0006614113.99279332
Transfer212344172024-11-21 6:48:352 days ago1732171715IN
AQTIS: AQTIS Token
0 ETH0.0009018913.19925027
Transfer212338872024-11-21 5:01:352 days ago1732165295IN
AQTIS: AQTIS Token
0 ETH0.0013053819.10098765
Approve212300792024-11-20 16:16:112 days ago1732119371IN
AQTIS: AQTIS Token
0 ETH0.0008955119.05670165
Approve212289782024-11-20 12:33:592 days ago1732106039IN
AQTIS: AQTIS Token
0 ETH0.0005758912.1837074
Approve212282372024-11-20 10:04:593 days ago1732097099IN
AQTIS: AQTIS Token
0 ETH0.000314712.62643021
Approve212281802024-11-20 9:53:233 days ago1732096403IN
AQTIS: AQTIS Token
0 ETH0.0002884511.54572259
Approve212281632024-11-20 9:49:593 days ago1732096199IN
AQTIS: AQTIS Token
0 ETH0.000303612.18115672
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
212375062024-11-21 17:10:1142 hrs ago1732209011
AQTIS: AQTIS Token
0.02416242 ETH
212375062024-11-21 17:10:1142 hrs ago1732209011
AQTIS: AQTIS Token
0.02416242 ETH
212227662024-11-19 15:46:473 days ago1732031207
AQTIS: AQTIS Token
0.01678538 ETH
212227662024-11-19 15:46:473 days ago1732031207
AQTIS: AQTIS Token
0.01678538 ETH
212066912024-11-17 10:00:476 days ago1731837647
AQTIS: AQTIS Token
0.02155932 ETH
212066912024-11-17 10:00:476 days ago1731837647
AQTIS: AQTIS Token
0.02155932 ETH
212047592024-11-17 3:32:116 days ago1731814331
AQTIS: AQTIS Token
0.01549567 ETH
212047592024-11-17 3:32:116 days ago1731814331
AQTIS: AQTIS Token
0.01549567 ETH
211871432024-11-14 16:31:358 days ago1731601895
AQTIS: AQTIS Token
0.02066351 ETH
211871432024-11-14 16:31:358 days ago1731601895
AQTIS: AQTIS Token
0.02066351 ETH
211776852024-11-13 8:50:2310 days ago1731487823
AQTIS: AQTIS Token
0.02119639 ETH
211776852024-11-13 8:50:2310 days ago1731487823
AQTIS: AQTIS Token
0.02119639 ETH
211663592024-11-11 18:54:2311 days ago1731351263
AQTIS: AQTIS Token
0.01885372 ETH
211663592024-11-11 18:54:2311 days ago1731351263
AQTIS: AQTIS Token
0.01885372 ETH
211580402024-11-10 15:02:5912 days ago1731250979
AQTIS: AQTIS Token
0.02557577 ETH
211580402024-11-10 15:02:5912 days ago1731250979
AQTIS: AQTIS Token
0.02557577 ETH
211577582024-11-10 14:06:3512 days ago1731247595
AQTIS: AQTIS Token
0.08889837 ETH
211577582024-11-10 14:06:3512 days ago1731247595
AQTIS: AQTIS Token
0.08889837 ETH
211570502024-11-10 11:44:3512 days ago1731239075
AQTIS: AQTIS Token
0.02855858 ETH
211570502024-11-10 11:44:3512 days ago1731239075
AQTIS: AQTIS Token
0.02855858 ETH
211544642024-11-10 3:05:2313 days ago1731207923
AQTIS: AQTIS Token
0.02808722 ETH
211544642024-11-10 3:05:2313 days ago1731207923
AQTIS: AQTIS Token
0.02808722 ETH
211528252024-11-09 21:36:3513 days ago1731188195
AQTIS: AQTIS Token
0.03860876 ETH
211528252024-11-09 21:36:3513 days ago1731188195
AQTIS: AQTIS Token
0.03860876 ETH
211494052024-11-09 10:09:2314 days ago1731146963
AQTIS: AQTIS Token
0.02819372 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AqtisToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-05
*/

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

/**
 * OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

/**
 * OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
 */
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

/**
 * OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

/**
 * OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)
 */
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;

    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 to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            _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(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

/**
 * OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
 */
abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

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

contract AqtisToken is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address taxAddress;

    uint256 public tradingActiveBlock = 0;
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public swapToEth = false;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyTaxFee;

    uint256 public sellTotalFees;
    uint256 public sellTaxFee;

    uint256 public tokensForTax;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();
    
    event RemovedLimits();
    
    event ExcludeFromFees(address indexed account, bool isExcluded);
    
    event UpdatedMaxBuyAmount(uint256 newAmount);
    
    event UpdatedMaxSellAmount(uint256 newAmount);
    
    event UpdatedMaxWalletAmount(uint256 newAmount);
    
    event MaxTransactionExclusion(address _address, bool excluded);
    
    event OwnerForcedSwapBack(uint256 timestamp);
    
    event CaughtEarlyBuyer(address sniper);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("AQTIS Token", "AQTIS") {
        address contractOwner = msg.sender; 

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 3_000_000_000 * 1e18;

        maxBuyAmount = totalSupply * 15 / 1000;
        maxSellAmount = totalSupply * 15 / 1000;
        maxWalletAmount = totalSupply * 15 / 1000;
        swapTokensAtAmount = totalSupply * 1 / 1000;

        buyTaxFee = 5;
        buyTotalFees = buyTaxFee;

        sellTaxFee = 5;
        sellTotalFees = sellTaxFee;

        taxAddress = payable(0x1eD086f9bdc70788EcdA67899AB8C922Ff7F305d);

        _excludeFromMaxTransaction(contractOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(taxAddress, true);

        excludeFromFees(contractOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(taxAddress, true);

        _mint(contractOwner, totalSupply);
        transferOwnership(contractOwner);
    }

    receive() external payable {}

    function enableTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function manageBoughtEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    function massManageBoughtEarly(address[] calldata wallets, bool flag) external onlyOwner {
        for(uint256 i = 0; i < wallets.length; i++){
            boughtEarly[wallets[i]] = flag;
        }
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max buy amount lower than 0.2%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max sell amount lower than 0.2%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove Uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setSwapToEth(bool _swapToEth) public onlyOwner {
        swapToEth = _swapToEth;
    }

    function updateBuyFees(uint256 _taxFee) external onlyOwner {
        buyTaxFee = _taxFee;
        buyTotalFees = buyTaxFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less.");
    }

    function updateSellFees(uint256 _taxFee) external onlyOwner {
        sellTaxFee = _taxFee;
        sellTotalFees = sellTaxFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% or less.");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(blockForPenaltyEnd > 0){
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed max wallet.");
                }
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed max wallet.");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        if(takeFee){
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
                tokensForTax += fees * buyTaxFee / buyTotalFees;
            }

            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForTax += fees * sellTaxFee / sellTotalFees;
            }

            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
                tokensForTax += fees * buyTaxFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap =  tokensForTax;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
            contractBalance = swapTokensAtAmount * 20;
        }

        bool success;

        if (swapToEth) {
            swapTokensForEth(contractBalance);
            tokensForTax = 0;
            (success,) = address(taxAddress).call{value: address(this).balance}("");
        }

        if (!swapToEth) {
            _transfer(address(this), taxAddress, contractBalance);
            tokensForTax = 0;
            success = true;
        }
    }

    // Withdraw ETH from contract address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function updateTaxAddress(address _taxAddress) external onlyOwner {
        require(_taxAddress != address(0), "_taxAddress address cannot be 0");
        taxAddress = payable(_taxAddress);
    }

    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapToEth","type":"bool"}],"name":"setSwapToEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapToEth","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":"tokensForTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"updateTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506000601160036101000a81548160ff0219169083151502179055506001601360006101000a81548160ff0219169083151502179055503480156200009d57600080fd5b506040518060400160405280600b81526020017f415154495320546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f415154495300000000000000000000000000000000000000000000000000000081525081600390816200011b919062000df6565b5080600490816200012d919062000df6565b5050506200015062000144620005e260201b60201c565b620005ea60201b60201c565b60003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000221919062000f47565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af919062000f47565b6040518363ffffffff1660e01b8152600401620002ce92919062000f8a565b6020604051808303816000875af1158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000314919062000f47565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000389600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006b060201b60201c565b620003be600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200074660201b60201c565b60006b09b18ab5df7180b6b800000090506103e8600f82620003e1919062000fe6565b620003ed919062001060565b6006819055506103e8600f8262000405919062000fe6565b62000411919062001060565b6007819055506103e8600f8262000429919062000fe6565b62000435919062001060565b6008819055506103e86001826200044d919062000fe6565b62000459919062001060565b600b8190555060056015819055506015546014819055506005601781905550601754601681905550731ed086f9bdc70788ecda67899ab8c922ff7f305d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004e9836001620006b060201b60201c565b620004fc306001620006b060201b60201c565b6200051161dead6001620006b060201b60201c565b62000546600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006b060201b60201c565b62000559836001620007f960201b60201c565b6200056c306001620007f960201b60201c565b6200058161dead6001620007f960201b60201c565b620005b6600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007f960201b60201c565b620005c88382620008b460201b60201c565b620005d98362000a2160201b60201c565b505050620012f5565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200073a929190620010b5565b60405180910390a15050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007af8282620006b060201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200080962000ab760201b60201c565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008a89190620010e2565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091d9062001160565b60405180910390fd5b6200093a6000838362000b4860201b60201c565b80600260008282546200094e919062001182565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a019190620011ce565b60405180910390a362000a1d6000838362000b4d60201b60201c565b5050565b62000a3162000ab760201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a9a9062001261565b60405180910390fd5b62000ab481620005ea60201b60201c565b50565b62000ac7620005e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000aed62000b5260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000b46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3d90620012d3565b60405180910390fd5b565b505050565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bfe57607f821691505b60208210810362000c145762000c1362000bb6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c3f565b62000c8a868362000c3f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cd762000cd162000ccb8462000ca2565b62000cac565b62000ca2565b9050919050565b6000819050919050565b62000cf38362000cb6565b62000d0b62000d028262000cde565b84845462000c4c565b825550505050565b600090565b62000d2262000d13565b62000d2f81848462000ce8565b505050565b5b8181101562000d575762000d4b60008262000d18565b60018101905062000d35565b5050565b601f82111562000da65762000d708162000c1a565b62000d7b8462000c2f565b8101602085101562000d8b578190505b62000da362000d9a8562000c2f565b83018262000d34565b50505b505050565b600082821c905092915050565b600062000dcb6000198460080262000dab565b1980831691505092915050565b600062000de6838362000db8565b9150826002028217905092915050565b62000e018262000b7c565b67ffffffffffffffff81111562000e1d5762000e1c62000b87565b5b62000e29825462000be5565b62000e3682828562000d5b565b600060209050601f83116001811462000e6e576000841562000e59578287015190505b62000e65858262000dd8565b86555062000ed5565b601f19841662000e7e8662000c1a565b60005b8281101562000ea85784890151825560018201915060208501945060208101905062000e81565b8683101562000ec8578489015162000ec4601f89168262000db8565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f0f8262000ee2565b9050919050565b62000f218162000f02565b811462000f2d57600080fd5b50565b60008151905062000f418162000f16565b92915050565b60006020828403121562000f605762000f5f62000edd565b5b600062000f708482850162000f30565b91505092915050565b62000f848162000f02565b82525050565b600060408201905062000fa1600083018562000f79565b62000fb0602083018462000f79565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ff38262000ca2565b9150620010008362000ca2565b9250828202620010108162000ca2565b915082820484148315176200102a576200102962000fb7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200106d8262000ca2565b91506200107a8362000ca2565b9250826200108d576200108c62001031565b5b828204905092915050565b60008115159050919050565b620010af8162001098565b82525050565b6000604082019050620010cc600083018562000f79565b620010db6020830184620010a4565b9392505050565b6000602082019050620010f96000830184620010a4565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001148601f83620010ff565b9150620011558262001110565b602082019050919050565b600060208201905081810360008301526200117b8162001139565b9050919050565b60006200118f8262000ca2565b91506200119c8362000ca2565b9250828201905080821115620011b757620011b662000fb7565b5b92915050565b620011c88162000ca2565b82525050565b6000602082019050620011e56000830184620011bd565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001249602683620010ff565b91506200125682620011eb565b604082019050919050565b600060208201905081810360008301526200127c816200123a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012bb602083620010ff565b9150620012c88262001283565b602082019050919050565b60006020820190508181036000830152620012ee81620012ac565b9050919050565b61503d80620013056000396000f3fe6080604052600436106103545760003560e01c806385ecfd28116101c6578063c876d0b9116100f7578063e800dff711610095578063ee40166e1161006f578063ee40166e14610c39578063f2fde38b14610c64578063f5648a4f14610c8d578063f8a25a9414610ca45761035b565b8063e800dff714610bd0578063e884f26014610bf9578063eba4c33314610c105761035b565b8063dc3f0d0f116100d1578063dc3f0d0f14610b14578063dd62ed3e14610b3d578063e2f4560514610b7a578063e620a25c14610ba55761035b565b8063c876d0b914610a95578063d257b34f14610ac0578063d85ba06314610ae95761035b565b8063a62068ce11610164578063b62496f51161013e578063b62496f5146109db578063bbc0c74214610a18578063c024666814610a43578063c18bc19514610a6c5761035b565b8063a62068ce14610948578063a9059cbb14610973578063aa4bde28146109b05761035b565b8063941fa5cd116101a0578063941fa5cd1461088c57806395d89b41146108b75780639a7a23d6146108e2578063a457c2d71461090b5761035b565b806385ecfd28146107f957806388e765ff146108365780638da5cb5b146108615761035b565b806351f205e4116102a05780636ddd17131161023e57806371fc46881161021857806371fc468814610767578063751039fc146107905780637571336a146107a757806382aa7c68146107d05761035b565b80636ddd1713146106e857806370a0823114610713578063715018a6146107505761035b565b806366d602ae1161027a57806366d602ae1461063c5780636a486a8e146106675780636b0a894c146106925780636d7adcad146106bd5761035b565b806351f205e4146105d157806358a6d531146105e85780635adf655a146106135761035b565b806323b872dd1161030d578063313ce567116102e7578063313ce56714610513578063395093511461053e578063452ed4f11461057b5780634a62bb65146105a65761035b565b806323b872dd14610484578063281f2a0a146104c15780632be32b61146104ea5761035b565b806306fdde03146103605780630758d9241461038b578063095ea7b3146103b657806310d5de53146103f3578063130a2c3c1461043057806318160ddd146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ccf565b60405161038291906138e2565b60405180910390f35b34801561039757600080fd5b506103a0610d61565b6040516103ad9190613983565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190613a1c565b610d87565b6040516103ea9190613a77565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190613a92565b610daa565b6040516104279190613a77565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613b50565b610dca565b005b34801561046557600080fd5b5061046e610e77565b60405161047b9190613bbf565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613bda565b610e81565b6040516104b89190613a77565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613c2d565b610eb0565b005b3480156104f657600080fd5b50610511600480360381019061050c9190613c5a565b610ed5565b005b34801561051f57600080fd5b50610528610fa9565b6040516105359190613ca3565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a1c565b610fb2565b6040516105729190613a77565b60405180910390f35b34801561058757600080fd5b50610590610fe9565b60405161059d9190613ccd565b60405180910390f35b3480156105b257600080fd5b506105bb61100f565b6040516105c89190613a77565b60405180910390f35b3480156105dd57600080fd5b506105e6611022565b005b3480156105f457600080fd5b506105fd6110ee565b60405161060a9190613a77565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613a92565b6110fa565b005b34801561064857600080fd5b506106516111b5565b60405161065e9190613bbf565b60405180910390f35b34801561067357600080fd5b5061067c6111bb565b6040516106899190613bbf565b60405180910390f35b34801561069e57600080fd5b506106a76111c1565b6040516106b49190613bbf565b60405180910390f35b3480156106c957600080fd5b506106d26111c7565b6040516106df9190613bbf565b60405180910390f35b3480156106f457600080fd5b506106fd6111cd565b60405161070a9190613a77565b60405180910390f35b34801561071f57600080fd5b5061073a60048036038101906107359190613a92565b6111e0565b6040516107479190613bbf565b60405180910390f35b34801561075c57600080fd5b50610765611228565b005b34801561077357600080fd5b5061078e60048036038101906107899190613c5a565b61123c565b005b34801561079c57600080fd5b506107a561129d565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190613ce8565b611309565b005b3480156107dc57600080fd5b506107f760048036038101906107f29190613c5a565b611402565b005b34801561080557600080fd5b50610820600480360381019061081b9190613a92565b6114da565b60405161082d9190613a77565b60405180910390f35b34801561084257600080fd5b5061084b6114fa565b6040516108589190613bbf565b60405180910390f35b34801561086d57600080fd5b50610876611500565b6040516108839190613ccd565b60405180910390f35b34801561089857600080fd5b506108a161152a565b6040516108ae9190613bbf565b60405180910390f35b3480156108c357600080fd5b506108cc611530565b6040516108d991906138e2565b60405180910390f35b3480156108ee57600080fd5b5061090960048036038101906109049190613ce8565b6115c2565b005b34801561091757600080fd5b50610932600480360381019061092d9190613a1c565b6116ae565b60405161093f9190613a77565b60405180910390f35b34801561095457600080fd5b5061095d611725565b60405161096a9190613bbf565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190613a1c565b61172b565b6040516109a79190613a77565b60405180910390f35b3480156109bc57600080fd5b506109c561174e565b6040516109d29190613bbf565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190613a92565b611754565b604051610a0f9190613a77565b60405180910390f35b348015610a2457600080fd5b50610a2d611774565b604051610a3a9190613a77565b60405180910390f35b348015610a4f57600080fd5b50610a6a6004803603810190610a659190613ce8565b611787565b005b348015610a7857600080fd5b50610a936004803603810190610a8e9190613c5a565b611838565b005b348015610aa157600080fd5b50610aaa61190c565b604051610ab79190613a77565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190613c5a565b61191f565b005b348015610af557600080fd5b50610afe6119f8565b604051610b0b9190613bbf565b60405180910390f35b348015610b2057600080fd5b50610b3b6004803603810190610b369190613c5a565b6119fe565b005b348015610b4957600080fd5b50610b646004803603810190610b5f9190613d28565b611ad2565b604051610b719190613bbf565b60405180910390f35b348015610b8657600080fd5b50610b8f611b59565b604051610b9c9190613bbf565b60405180910390f35b348015610bb157600080fd5b50610bba611b5f565b604051610bc79190613a77565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190613ce8565b611b72565b005b348015610c0557600080fd5b50610c0e611bd5565b005b348015610c1c57600080fd5b50610c376004803603810190610c329190613c5a565b611bfa565b005b348015610c4557600080fd5b50610c4e611c5b565b604051610c5b9190613bbf565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c869190613a92565b611c61565b005b348015610c9957600080fd5b50610ca2611ce4565b005b348015610cb057600080fd5b50610cb9611d5d565b604051610cc69190613bbf565b60405180910390f35b606060038054610cde90613d97565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0a90613d97565b8015610d575780601f10610d2c57610100808354040283529160200191610d57565b820191906000526020600020905b815481529060010190602001808311610d3a57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610d92611d63565b9050610d9f818585611d6b565b600191505092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b610dd2611f34565b60005b83839050811015610e715781600f6000868685818110610df857610df7613dc8565b5b9050602002016020810190610e0d9190613a92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e6990613e26565b915050610dd5565b50505050565b6000600254905090565b600080610e8c611d63565b9050610e99858285611fb2565b610ea485858561203e565b60019150509392505050565b610eb8611f34565b80601160036101000a81548160ff02191690831515021790555050565b610edd611f34565b670de0b6b3a76400006103e86002610ef3610e77565b610efd9190613e6e565b610f079190613edf565b610f119190613edf565b811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613f82565b60405180910390fd5b670de0b6b3a764000081610f679190613e6e565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610f9e9190613bbf565b60405180910390a150565b60006012905090565b600080610fbd611d63565b9050610fde818585610fcf8589611ad2565b610fd99190613fa2565b611d6b565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900460ff1681565b61102a611f34565b600b54611036306111e0565b1015611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90614048565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555061109a613028565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516110e49190613bbf565b60405180910390a1565b6000600e544310905090565b611102611f34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611168906140b4565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b60165481565b60105481565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611230611f34565b61123a600061318a565b565b611244611f34565b80601581905550601554601481905550600a601454111561129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190614120565b60405180910390fd5b50565b6112a5611f34565b6000601160006101000a81548160ff0219169083151502179055506000601360006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611311611f34565b806113a757600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d906141b2565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61140a611f34565b601160019054906101000a900460ff161561145a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114519061421e565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555043600d8190555080600d546114a59190613fa2565b600e819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a150565b600f6020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606004805461153f90613d97565b80601f016020809104026020016040519081016040528092919081815260200182805461156b90613d97565b80156115b85780601f1061158d576101008083540402835291602001916115b8565b820191906000526020600020905b81548152906001019060200180831161159b57829003601f168201915b5050505050905090565b6115ca611f34565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906142b0565b60405180910390fd5b6116648282613250565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000806116b9611d63565b905060006116c78286611ad2565b90508381101561170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390614342565b60405180910390fd5b6117198286868403611d6b565b60019250505092915050565b600e5481565b600080611736611d63565b905061174381858561203e565b600191505092915050565b60085481565b601b6020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b61178f611f34565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161182c9190613a77565b60405180910390a25050565b611840611f34565b670de0b6b3a76400006103e86003611856610e77565b6118609190613e6e565b61186a9190613edf565b6118749190613edf565b8110156118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad906143d4565b60405180910390fd5b670de0b6b3a7640000816118ca9190613e6e565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516119019190613bbf565b60405180910390a150565b601360009054906101000a900460ff1681565b611927611f34565b620186a06001611935610e77565b61193f9190613e6e565b6119499190613edf565b81101561198b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198290614466565b60405180910390fd5b6103e86001611998610e77565b6119a29190613e6e565b6119ac9190613edf565b8111156119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e5906144f8565b60405180910390fd5b80600b8190555050565b60145481565b611a06611f34565b670de0b6b3a76400006103e86002611a1c610e77565b611a269190613e6e565b611a309190613edf565b611a3a9190613edf565b811015611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a739061458a565b60405180910390fd5b670de0b6b3a764000081611a909190613e6e565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e600754604051611ac79190613bbf565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b601160039054906101000a900460ff1681565b611b7a611f34565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bdd611f34565b6000601360006101000a81548160ff021916908315150217905550565b611c02611f34565b80601781905550601754601681905550600a6016541115611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90614120565b60405180910390fd5b50565b600d5481565b611c69611f34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf9061461c565b60405180910390fd5b611ce18161318a565b50565b611cec611f34565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611d129061466d565b60006040518083038185875af1925050503d8060008114611d4f576040519150601f19603f3d011682016040523d82523d6000602084013e611d54565b606091505b50508091505050565b60175481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd1906146f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090614786565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f279190613bbf565b60405180910390a3505050565b611f3c611d63565b73ffffffffffffffffffffffffffffffffffffffff16611f5a611500565b73ffffffffffffffffffffffffffffffffffffffff1614611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa7906147f2565b60405180910390fd5b565b6000611fbe8484611ad2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612038578181101561202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120219061485e565b60405180910390fd5b6120378484848403611d6b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a4906148f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211390614982565b60405180910390fd5b6000811161215f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612156906149ee565b60405180910390fd5b601160019054906101000a900460ff1661225457601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122145750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a90614a5a565b60405180910390fd5b5b6000600e54111561236257600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806122ea57506122bb611500565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612322575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890614b12565b60405180910390fd5b5b601160009054906101000a900460ff1615612a2e5761237f611500565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123ed57506123bd611500565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124265750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612460575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124b65750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561250c5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2d57601360009054906101000a900460ff161561274457600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156125d25750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612743576002436125e49190614b32565b601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561267b57506002436126399190614b32565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b6126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b190614bd8565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e75750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561288e57600654811115612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890614c6a565b60405180910390fd5b60085461283d836111e0565b826128489190613fa2565b1115612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614cd6565b60405180910390fd5b612a2c565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129315750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129805760075481111561297b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290614d68565b60405180910390fd5b612a2b565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a2a576008546129dd836111e0565b826129e89190613fa2565b1115612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2090614cd6565b60405180910390fd5b5b5b5b5b5b6000612a39306111e0565b90506000600b548210159050808015612a5e5750601160029054906101000a900460ff165b8015612a775750600a60149054906101000a900460ff16155b8015612acd5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b235750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b795750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bbd576001600a60146101000a81548160ff021916908315150217905550612ba1613028565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c645750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c6e57600090505b6000811561301457612c7e6110ee565b8015612cd35750601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612d295750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d3757506000601454115b15612e8a57600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e37576001600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000828254612df89190613fa2565b925050819055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a86604051612e2e9190613ccd565b60405180910390a15b6064606386612e469190613e6e565b612e509190613edf565b905060145460155482612e639190613e6e565b612e6d9190613edf565b60186000828254612e7e9190613fa2565b92505081905550612ff0565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ee557506000601654115b15612f3e57606460165486612efa9190613e6e565b612f049190613edf565b905060165460175482612f179190613e6e565b612f219190613edf565b60186000828254612f329190613fa2565b92505081905550612fef565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f9957506000601454115b15612fee57606460145486612fae9190613e6e565b612fb89190613edf565b905060145460155482612fcb9190613e6e565b612fd59190613edf565b60186000828254612fe69190613fa2565b925050819055505b5b5b6000811115613005576130048730836132fb565b5b80856130119190614b32565b94505b61301f8787876132fb565b50505050505050565b6000613033306111e0565b905060006018549050600082148061304b5750600081145b15613057575050613188565b6014600b546130669190613e6e565b82111561307f576014600b5461307c9190613e6e565b91505b6000601160039054906101000a900460ff16156131365761309f83613571565b6000601881905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ed9061466d565b60006040518083038185875af1925050503d806000811461312a576040519150601f19603f3d011682016040523d82523d6000602084013e61312f565b606091505b5050809150505b601160039054906101000a900460ff166131845761317730600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561203e565b6000601881905550600190505b5050505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506132b182826137b4565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361336a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613361906148f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d090614982565b60405180910390fd5b6133e4838383613848565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561346a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346190614dfa565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135589190613bbf565b60405180910390a361356b84848461384d565b50505050565b6000600267ffffffffffffffff81111561358e5761358d614e1a565b5b6040519080825280602002602001820160405280156135bc5781602001602082028036833780820191505090505b50905030816000815181106135d4576135d3613dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369f9190614e5e565b816001815181106136b3576136b2613dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061371a30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d6b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161377e959493929190614f84565b600060405180830381600087803b15801561379857600080fd5b505af11580156137ac573d6000803e3d6000fd5b505050505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161383c929190614fde565b60405180910390a15050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561388c578082015181840152602081019050613871565b60008484015250505050565b6000601f19601f8301169050919050565b60006138b482613852565b6138be818561385d565b93506138ce81856020860161386e565b6138d781613898565b840191505092915050565b600060208201905081810360008301526138fc81846138a9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061394961394461393f84613904565b613924565b613904565b9050919050565b600061395b8261392e565b9050919050565b600061396d82613950565b9050919050565b61397d81613962565b82525050565b60006020820190506139986000830184613974565b92915050565b600080fd5b600080fd5b60006139b382613904565b9050919050565b6139c3816139a8565b81146139ce57600080fd5b50565b6000813590506139e0816139ba565b92915050565b6000819050919050565b6139f9816139e6565b8114613a0457600080fd5b50565b600081359050613a16816139f0565b92915050565b60008060408385031215613a3357613a3261399e565b5b6000613a41858286016139d1565b9250506020613a5285828601613a07565b9150509250929050565b60008115159050919050565b613a7181613a5c565b82525050565b6000602082019050613a8c6000830184613a68565b92915050565b600060208284031215613aa857613aa761399e565b5b6000613ab6848285016139d1565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ae457613ae3613abf565b5b8235905067ffffffffffffffff811115613b0157613b00613ac4565b5b602083019150836020820283011115613b1d57613b1c613ac9565b5b9250929050565b613b2d81613a5c565b8114613b3857600080fd5b50565b600081359050613b4a81613b24565b92915050565b600080600060408486031215613b6957613b6861399e565b5b600084013567ffffffffffffffff811115613b8757613b866139a3565b5b613b9386828701613ace565b93509350506020613ba686828701613b3b565b9150509250925092565b613bb9816139e6565b82525050565b6000602082019050613bd46000830184613bb0565b92915050565b600080600060608486031215613bf357613bf261399e565b5b6000613c01868287016139d1565b9350506020613c12868287016139d1565b9250506040613c2386828701613a07565b9150509250925092565b600060208284031215613c4357613c4261399e565b5b6000613c5184828501613b3b565b91505092915050565b600060208284031215613c7057613c6f61399e565b5b6000613c7e84828501613a07565b91505092915050565b600060ff82169050919050565b613c9d81613c87565b82525050565b6000602082019050613cb86000830184613c94565b92915050565b613cc7816139a8565b82525050565b6000602082019050613ce26000830184613cbe565b92915050565b60008060408385031215613cff57613cfe61399e565b5b6000613d0d858286016139d1565b9250506020613d1e85828601613b3b565b9150509250929050565b60008060408385031215613d3f57613d3e61399e565b5b6000613d4d858286016139d1565b9250506020613d5e858286016139d1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613daf57607f821691505b602082108103613dc257613dc1613d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e31826139e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e6357613e62613df7565b5b600182019050919050565b6000613e79826139e6565b9150613e84836139e6565b9250828202613e92816139e6565b91508282048414831517613ea957613ea8613df7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eea826139e6565b9150613ef5836139e6565b925082613f0557613f04613eb0565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b6000613f6c60298361385d565b9150613f7782613f10565b604082019050919050565b60006020820190508181036000830152613f9b81613f5f565b9050919050565b6000613fad826139e6565b9150613fb8836139e6565b9250828201905080821115613fd057613fcf613df7565b5b92915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b600061403260408361385d565b915061403d82613fd6565b604082019050919050565b6000602082019050818103600083015261406181614025565b9050919050565b7f5f7461784164647265737320616464726573732063616e6e6f74206265203000600082015250565b600061409e601f8361385d565b91506140a982614068565b602082019050919050565b600060208201905081810360008301526140cd81614091565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c6573732e0000600082015250565b600061410a601e8361385d565b9150614115826140d4565b602082019050919050565b60006020820190508181036000830152614139816140fd565b9050919050565b7f43616e6e6f742072656d6f766520556e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b600061419c60278361385d565b91506141a782614140565b604082019050919050565b600060208201905081810360008301526141cb8161418f565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061420860178361385d565b9150614213826141d2565b602082019050919050565b60006020820190508181036000830152614237816141fb565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061429a60398361385d565b91506142a58261423e565b604082019050919050565b600060208201905081810360008301526142c98161428d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061432c60258361385d565b9150614337826142d0565b604082019050919050565b6000602082019050818103600083015261435b8161431f565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b60006143be602c8361385d565b91506143c982614362565b604082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061445060358361385d565b915061445b826143f4565b604082019050919050565b6000602082019050818103600083015261447f81614443565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006144e260348361385d565b91506144ed82614486565b604082019050919050565b60006020820190508181036000830152614511816144d5565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b6000614574602a8361385d565b915061457f82614518565b604082019050919050565b600060208201905081810360008301526145a381614567565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061460660268361385d565b9150614611826145aa565b604082019050919050565b60006020820190508181036000830152614635816145f9565b9050919050565b600081905092915050565b50565b600061465760008361463c565b915061466282614647565b600082019050919050565b60006146788261464a565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146de60248361385d565b91506146e982614682565b604082019050919050565b6000602082019050818103600083015261470d816146d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061477060228361385d565b915061477b82614714565b604082019050919050565b6000602082019050818103600083015261479f81614763565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147dc60208361385d565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614848601d8361385d565b915061485382614812565b602082019050919050565b600060208201905081810360008301526148778161483b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006148da60258361385d565b91506148e58261487e565b604082019050919050565b60006020820190508181036000830152614909816148cd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061496c60238361385d565b915061497782614910565b604082019050919050565b6000602082019050818103600083015261499b8161495f565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006149d8601d8361385d565b91506149e3826149a2565b602082019050919050565b60006020820190508181036000830152614a07816149cb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614a4460168361385d565b9150614a4f82614a0e565b602082019050919050565b60006020820190508181036000830152614a7381614a37565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b6000614afc60468361385d565b9150614b0782614a7a565b606082019050919050565b60006020820190508181036000830152614b2b81614aef565b9050919050565b6000614b3d826139e6565b9150614b48836139e6565b9250828203905081811115614b6057614b5f613df7565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000614bc260358361385d565b9150614bcd82614b66565b604082019050919050565b60006020820190508181036000830152614bf181614bb5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614c5460288361385d565b9150614c5f82614bf8565b604082019050919050565b60006020820190508181036000830152614c8381614c47565b9050919050565b7f43616e6e6f7420657863656564206d61782077616c6c65742e00000000000000600082015250565b6000614cc060198361385d565b9150614ccb82614c8a565b602082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000614d52602a8361385d565b9150614d5d82614cf6565b604082019050919050565b60006020820190508181036000830152614d8181614d45565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614de460268361385d565b9150614def82614d88565b604082019050919050565b60006020820190508181036000830152614e1381614dd7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614e58816139ba565b92915050565b600060208284031215614e7457614e7361399e565b5b6000614e8284828501614e49565b91505092915050565b6000819050919050565b6000614eb0614eab614ea684614e8b565b613924565b6139e6565b9050919050565b614ec081614e95565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614efb816139a8565b82525050565b6000614f0d8383614ef2565b60208301905092915050565b6000602082019050919050565b6000614f3182614ec6565b614f3b8185614ed1565b9350614f4683614ee2565b8060005b83811015614f77578151614f5e8882614f01565b9750614f6983614f19565b925050600181019050614f4a565b5085935050505092915050565b600060a082019050614f996000830188613bb0565b614fa66020830187614eb7565b8181036040830152614fb88186614f26565b9050614fc76060830185613cbe565b614fd46080830184613bb0565b9695505050505050565b6000604082019050614ff36000830185613cbe565b6150006020830184613a68565b939250505056fea264697066735822122060bea7db3cd1853c4d81e4d5f38635316726d7c050f4961e7d554755a685addb64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103545760003560e01c806385ecfd28116101c6578063c876d0b9116100f7578063e800dff711610095578063ee40166e1161006f578063ee40166e14610c39578063f2fde38b14610c64578063f5648a4f14610c8d578063f8a25a9414610ca45761035b565b8063e800dff714610bd0578063e884f26014610bf9578063eba4c33314610c105761035b565b8063dc3f0d0f116100d1578063dc3f0d0f14610b14578063dd62ed3e14610b3d578063e2f4560514610b7a578063e620a25c14610ba55761035b565b8063c876d0b914610a95578063d257b34f14610ac0578063d85ba06314610ae95761035b565b8063a62068ce11610164578063b62496f51161013e578063b62496f5146109db578063bbc0c74214610a18578063c024666814610a43578063c18bc19514610a6c5761035b565b8063a62068ce14610948578063a9059cbb14610973578063aa4bde28146109b05761035b565b8063941fa5cd116101a0578063941fa5cd1461088c57806395d89b41146108b75780639a7a23d6146108e2578063a457c2d71461090b5761035b565b806385ecfd28146107f957806388e765ff146108365780638da5cb5b146108615761035b565b806351f205e4116102a05780636ddd17131161023e57806371fc46881161021857806371fc468814610767578063751039fc146107905780637571336a146107a757806382aa7c68146107d05761035b565b80636ddd1713146106e857806370a0823114610713578063715018a6146107505761035b565b806366d602ae1161027a57806366d602ae1461063c5780636a486a8e146106675780636b0a894c146106925780636d7adcad146106bd5761035b565b806351f205e4146105d157806358a6d531146105e85780635adf655a146106135761035b565b806323b872dd1161030d578063313ce567116102e7578063313ce56714610513578063395093511461053e578063452ed4f11461057b5780634a62bb65146105a65761035b565b806323b872dd14610484578063281f2a0a146104c15780632be32b61146104ea5761035b565b806306fdde03146103605780630758d9241461038b578063095ea7b3146103b657806310d5de53146103f3578063130a2c3c1461043057806318160ddd146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ccf565b60405161038291906138e2565b60405180910390f35b34801561039757600080fd5b506103a0610d61565b6040516103ad9190613983565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190613a1c565b610d87565b6040516103ea9190613a77565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190613a92565b610daa565b6040516104279190613a77565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613b50565b610dca565b005b34801561046557600080fd5b5061046e610e77565b60405161047b9190613bbf565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613bda565b610e81565b6040516104b89190613a77565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190613c2d565b610eb0565b005b3480156104f657600080fd5b50610511600480360381019061050c9190613c5a565b610ed5565b005b34801561051f57600080fd5b50610528610fa9565b6040516105359190613ca3565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a1c565b610fb2565b6040516105729190613a77565b60405180910390f35b34801561058757600080fd5b50610590610fe9565b60405161059d9190613ccd565b60405180910390f35b3480156105b257600080fd5b506105bb61100f565b6040516105c89190613a77565b60405180910390f35b3480156105dd57600080fd5b506105e6611022565b005b3480156105f457600080fd5b506105fd6110ee565b60405161060a9190613a77565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613a92565b6110fa565b005b34801561064857600080fd5b506106516111b5565b60405161065e9190613bbf565b60405180910390f35b34801561067357600080fd5b5061067c6111bb565b6040516106899190613bbf565b60405180910390f35b34801561069e57600080fd5b506106a76111c1565b6040516106b49190613bbf565b60405180910390f35b3480156106c957600080fd5b506106d26111c7565b6040516106df9190613bbf565b60405180910390f35b3480156106f457600080fd5b506106fd6111cd565b60405161070a9190613a77565b60405180910390f35b34801561071f57600080fd5b5061073a60048036038101906107359190613a92565b6111e0565b6040516107479190613bbf565b60405180910390f35b34801561075c57600080fd5b50610765611228565b005b34801561077357600080fd5b5061078e60048036038101906107899190613c5a565b61123c565b005b34801561079c57600080fd5b506107a561129d565b005b3480156107b357600080fd5b506107ce60048036038101906107c99190613ce8565b611309565b005b3480156107dc57600080fd5b506107f760048036038101906107f29190613c5a565b611402565b005b34801561080557600080fd5b50610820600480360381019061081b9190613a92565b6114da565b60405161082d9190613a77565b60405180910390f35b34801561084257600080fd5b5061084b6114fa565b6040516108589190613bbf565b60405180910390f35b34801561086d57600080fd5b50610876611500565b6040516108839190613ccd565b60405180910390f35b34801561089857600080fd5b506108a161152a565b6040516108ae9190613bbf565b60405180910390f35b3480156108c357600080fd5b506108cc611530565b6040516108d991906138e2565b60405180910390f35b3480156108ee57600080fd5b5061090960048036038101906109049190613ce8565b6115c2565b005b34801561091757600080fd5b50610932600480360381019061092d9190613a1c565b6116ae565b60405161093f9190613a77565b60405180910390f35b34801561095457600080fd5b5061095d611725565b60405161096a9190613bbf565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190613a1c565b61172b565b6040516109a79190613a77565b60405180910390f35b3480156109bc57600080fd5b506109c561174e565b6040516109d29190613bbf565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190613a92565b611754565b604051610a0f9190613a77565b60405180910390f35b348015610a2457600080fd5b50610a2d611774565b604051610a3a9190613a77565b60405180910390f35b348015610a4f57600080fd5b50610a6a6004803603810190610a659190613ce8565b611787565b005b348015610a7857600080fd5b50610a936004803603810190610a8e9190613c5a565b611838565b005b348015610aa157600080fd5b50610aaa61190c565b604051610ab79190613a77565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190613c5a565b61191f565b005b348015610af557600080fd5b50610afe6119f8565b604051610b0b9190613bbf565b60405180910390f35b348015610b2057600080fd5b50610b3b6004803603810190610b369190613c5a565b6119fe565b005b348015610b4957600080fd5b50610b646004803603810190610b5f9190613d28565b611ad2565b604051610b719190613bbf565b60405180910390f35b348015610b8657600080fd5b50610b8f611b59565b604051610b9c9190613bbf565b60405180910390f35b348015610bb157600080fd5b50610bba611b5f565b604051610bc79190613a77565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190613ce8565b611b72565b005b348015610c0557600080fd5b50610c0e611bd5565b005b348015610c1c57600080fd5b50610c376004803603810190610c329190613c5a565b611bfa565b005b348015610c4557600080fd5b50610c4e611c5b565b604051610c5b9190613bbf565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c869190613a92565b611c61565b005b348015610c9957600080fd5b50610ca2611ce4565b005b348015610cb057600080fd5b50610cb9611d5d565b604051610cc69190613bbf565b60405180910390f35b606060038054610cde90613d97565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0a90613d97565b8015610d575780601f10610d2c57610100808354040283529160200191610d57565b820191906000526020600020905b815481529060010190602001808311610d3a57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610d92611d63565b9050610d9f818585611d6b565b600191505092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b610dd2611f34565b60005b83839050811015610e715781600f6000868685818110610df857610df7613dc8565b5b9050602002016020810190610e0d9190613a92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e6990613e26565b915050610dd5565b50505050565b6000600254905090565b600080610e8c611d63565b9050610e99858285611fb2565b610ea485858561203e565b60019150509392505050565b610eb8611f34565b80601160036101000a81548160ff02191690831515021790555050565b610edd611f34565b670de0b6b3a76400006103e86002610ef3610e77565b610efd9190613e6e565b610f079190613edf565b610f119190613edf565b811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613f82565b60405180910390fd5b670de0b6b3a764000081610f679190613e6e565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610f9e9190613bbf565b60405180910390a150565b60006012905090565b600080610fbd611d63565b9050610fde818585610fcf8589611ad2565b610fd99190613fa2565b611d6b565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900460ff1681565b61102a611f34565b600b54611036306111e0565b1015611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90614048565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555061109a613028565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516110e49190613bbf565b60405180910390a1565b6000600e544310905090565b611102611f34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611168906140b4565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b60165481565b60105481565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611230611f34565b61123a600061318a565b565b611244611f34565b80601581905550601554601481905550600a601454111561129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190614120565b60405180910390fd5b50565b6112a5611f34565b6000601160006101000a81548160ff0219169083151502179055506000601360006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611311611f34565b806113a757600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d906141b2565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61140a611f34565b601160019054906101000a900460ff161561145a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114519061421e565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555043600d8190555080600d546114a59190613fa2565b600e819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a150565b600f6020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606004805461153f90613d97565b80601f016020809104026020016040519081016040528092919081815260200182805461156b90613d97565b80156115b85780601f1061158d576101008083540402835291602001916115b8565b820191906000526020600020905b81548152906001019060200180831161159b57829003601f168201915b5050505050905090565b6115ca611f34565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906142b0565b60405180910390fd5b6116648282613250565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000806116b9611d63565b905060006116c78286611ad2565b90508381101561170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390614342565b60405180910390fd5b6117198286868403611d6b565b60019250505092915050565b600e5481565b600080611736611d63565b905061174381858561203e565b600191505092915050565b60085481565b601b6020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b61178f611f34565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161182c9190613a77565b60405180910390a25050565b611840611f34565b670de0b6b3a76400006103e86003611856610e77565b6118609190613e6e565b61186a9190613edf565b6118749190613edf565b8110156118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad906143d4565b60405180910390fd5b670de0b6b3a7640000816118ca9190613e6e565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516119019190613bbf565b60405180910390a150565b601360009054906101000a900460ff1681565b611927611f34565b620186a06001611935610e77565b61193f9190613e6e565b6119499190613edf565b81101561198b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198290614466565b60405180910390fd5b6103e86001611998610e77565b6119a29190613e6e565b6119ac9190613edf565b8111156119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e5906144f8565b60405180910390fd5b80600b8190555050565b60145481565b611a06611f34565b670de0b6b3a76400006103e86002611a1c610e77565b611a269190613e6e565b611a309190613edf565b611a3a9190613edf565b811015611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a739061458a565b60405180910390fd5b670de0b6b3a764000081611a909190613e6e565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e600754604051611ac79190613bbf565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b601160039054906101000a900460ff1681565b611b7a611f34565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bdd611f34565b6000601360006101000a81548160ff021916908315150217905550565b611c02611f34565b80601781905550601754601681905550600a6016541115611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90614120565b60405180910390fd5b50565b600d5481565b611c69611f34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf9061461c565b60405180910390fd5b611ce18161318a565b50565b611cec611f34565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611d129061466d565b60006040518083038185875af1925050503d8060008114611d4f576040519150601f19603f3d011682016040523d82523d6000602084013e611d54565b606091505b50508091505050565b60175481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd1906146f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090614786565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f279190613bbf565b60405180910390a3505050565b611f3c611d63565b73ffffffffffffffffffffffffffffffffffffffff16611f5a611500565b73ffffffffffffffffffffffffffffffffffffffff1614611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa7906147f2565b60405180910390fd5b565b6000611fbe8484611ad2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612038578181101561202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120219061485e565b60405180910390fd5b6120378484848403611d6b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a4906148f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211390614982565b60405180910390fd5b6000811161215f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612156906149ee565b60405180910390fd5b601160019054906101000a900460ff1661225457601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122145750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a90614a5a565b60405180910390fd5b5b6000600e54111561236257600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806122ea57506122bb611500565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612322575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890614b12565b60405180910390fd5b5b601160009054906101000a900460ff1615612a2e5761237f611500565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123ed57506123bd611500565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124265750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612460575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124b65750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561250c5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2d57601360009054906101000a900460ff161561274457600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156125d25750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612743576002436125e49190614b32565b601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561267b57506002436126399190614b32565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b6126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b190614bd8565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e75750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561288e57600654811115612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890614c6a565b60405180910390fd5b60085461283d836111e0565b826128489190613fa2565b1115612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090614cd6565b60405180910390fd5b612a2c565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129315750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129805760075481111561297b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290614d68565b60405180910390fd5b612a2b565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a2a576008546129dd836111e0565b826129e89190613fa2565b1115612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2090614cd6565b60405180910390fd5b5b5b5b5b5b6000612a39306111e0565b90506000600b548210159050808015612a5e5750601160029054906101000a900460ff165b8015612a775750600a60149054906101000a900460ff16155b8015612acd5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b235750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b795750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bbd576001600a60146101000a81548160ff021916908315150217905550612ba1613028565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c645750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c6e57600090505b6000811561301457612c7e6110ee565b8015612cd35750601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612d295750601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d3757506000601454115b15612e8a57600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e37576001600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000828254612df89190613fa2565b925050819055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a86604051612e2e9190613ccd565b60405180910390a15b6064606386612e469190613e6e565b612e509190613edf565b905060145460155482612e639190613e6e565b612e6d9190613edf565b60186000828254612e7e9190613fa2565b92505081905550612ff0565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ee557506000601654115b15612f3e57606460165486612efa9190613e6e565b612f049190613edf565b905060165460175482612f179190613e6e565b612f219190613edf565b60186000828254612f329190613fa2565b92505081905550612fef565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f9957506000601454115b15612fee57606460145486612fae9190613e6e565b612fb89190613edf565b905060145460155482612fcb9190613e6e565b612fd59190613edf565b60186000828254612fe69190613fa2565b925050819055505b5b5b6000811115613005576130048730836132fb565b5b80856130119190614b32565b94505b61301f8787876132fb565b50505050505050565b6000613033306111e0565b905060006018549050600082148061304b5750600081145b15613057575050613188565b6014600b546130669190613e6e565b82111561307f576014600b5461307c9190613e6e565b91505b6000601160039054906101000a900460ff16156131365761309f83613571565b6000601881905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ed9061466d565b60006040518083038185875af1925050503d806000811461312a576040519150601f19603f3d011682016040523d82523d6000602084013e61312f565b606091505b5050809150505b601160039054906101000a900460ff166131845761317730600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561203e565b6000601881905550600190505b5050505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506132b182826137b4565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361336a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613361906148f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d090614982565b60405180910390fd5b6133e4838383613848565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561346a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346190614dfa565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135589190613bbf565b60405180910390a361356b84848461384d565b50505050565b6000600267ffffffffffffffff81111561358e5761358d614e1a565b5b6040519080825280602002602001820160405280156135bc5781602001602082028036833780820191505090505b50905030816000815181106135d4576135d3613dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369f9190614e5e565b816001815181106136b3576136b2613dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061371a30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d6b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161377e959493929190614f84565b600060405180830381600087803b15801561379857600080fd5b505af11580156137ac573d6000803e3d6000fd5b505050505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161383c929190614fde565b60405180910390a15050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561388c578082015181840152602081019050613871565b60008484015250505050565b6000601f19601f8301169050919050565b60006138b482613852565b6138be818561385d565b93506138ce81856020860161386e565b6138d781613898565b840191505092915050565b600060208201905081810360008301526138fc81846138a9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061394961394461393f84613904565b613924565b613904565b9050919050565b600061395b8261392e565b9050919050565b600061396d82613950565b9050919050565b61397d81613962565b82525050565b60006020820190506139986000830184613974565b92915050565b600080fd5b600080fd5b60006139b382613904565b9050919050565b6139c3816139a8565b81146139ce57600080fd5b50565b6000813590506139e0816139ba565b92915050565b6000819050919050565b6139f9816139e6565b8114613a0457600080fd5b50565b600081359050613a16816139f0565b92915050565b60008060408385031215613a3357613a3261399e565b5b6000613a41858286016139d1565b9250506020613a5285828601613a07565b9150509250929050565b60008115159050919050565b613a7181613a5c565b82525050565b6000602082019050613a8c6000830184613a68565b92915050565b600060208284031215613aa857613aa761399e565b5b6000613ab6848285016139d1565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ae457613ae3613abf565b5b8235905067ffffffffffffffff811115613b0157613b00613ac4565b5b602083019150836020820283011115613b1d57613b1c613ac9565b5b9250929050565b613b2d81613a5c565b8114613b3857600080fd5b50565b600081359050613b4a81613b24565b92915050565b600080600060408486031215613b6957613b6861399e565b5b600084013567ffffffffffffffff811115613b8757613b866139a3565b5b613b9386828701613ace565b93509350506020613ba686828701613b3b565b9150509250925092565b613bb9816139e6565b82525050565b6000602082019050613bd46000830184613bb0565b92915050565b600080600060608486031215613bf357613bf261399e565b5b6000613c01868287016139d1565b9350506020613c12868287016139d1565b9250506040613c2386828701613a07565b9150509250925092565b600060208284031215613c4357613c4261399e565b5b6000613c5184828501613b3b565b91505092915050565b600060208284031215613c7057613c6f61399e565b5b6000613c7e84828501613a07565b91505092915050565b600060ff82169050919050565b613c9d81613c87565b82525050565b6000602082019050613cb86000830184613c94565b92915050565b613cc7816139a8565b82525050565b6000602082019050613ce26000830184613cbe565b92915050565b60008060408385031215613cff57613cfe61399e565b5b6000613d0d858286016139d1565b9250506020613d1e85828601613b3b565b9150509250929050565b60008060408385031215613d3f57613d3e61399e565b5b6000613d4d858286016139d1565b9250506020613d5e858286016139d1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613daf57607f821691505b602082108103613dc257613dc1613d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e31826139e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e6357613e62613df7565b5b600182019050919050565b6000613e79826139e6565b9150613e84836139e6565b9250828202613e92816139e6565b91508282048414831517613ea957613ea8613df7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eea826139e6565b9150613ef5836139e6565b925082613f0557613f04613eb0565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b6000613f6c60298361385d565b9150613f7782613f10565b604082019050919050565b60006020820190508181036000830152613f9b81613f5f565b9050919050565b6000613fad826139e6565b9150613fb8836139e6565b9250828201905080821115613fd057613fcf613df7565b5b92915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b600061403260408361385d565b915061403d82613fd6565b604082019050919050565b6000602082019050818103600083015261406181614025565b9050919050565b7f5f7461784164647265737320616464726573732063616e6e6f74206265203000600082015250565b600061409e601f8361385d565b91506140a982614068565b602082019050919050565b600060208201905081810360008301526140cd81614091565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c6573732e0000600082015250565b600061410a601e8361385d565b9150614115826140d4565b602082019050919050565b60006020820190508181036000830152614139816140fd565b9050919050565b7f43616e6e6f742072656d6f766520556e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b600061419c60278361385d565b91506141a782614140565b604082019050919050565b600060208201905081810360008301526141cb8161418f565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061420860178361385d565b9150614213826141d2565b602082019050919050565b60006020820190508181036000830152614237816141fb565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061429a60398361385d565b91506142a58261423e565b604082019050919050565b600060208201905081810360008301526142c98161428d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061432c60258361385d565b9150614337826142d0565b604082019050919050565b6000602082019050818103600083015261435b8161431f565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b60006143be602c8361385d565b91506143c982614362565b604082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061445060358361385d565b915061445b826143f4565b604082019050919050565b6000602082019050818103600083015261447f81614443565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006144e260348361385d565b91506144ed82614486565b604082019050919050565b60006020820190508181036000830152614511816144d5565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b6000614574602a8361385d565b915061457f82614518565b604082019050919050565b600060208201905081810360008301526145a381614567565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061460660268361385d565b9150614611826145aa565b604082019050919050565b60006020820190508181036000830152614635816145f9565b9050919050565b600081905092915050565b50565b600061465760008361463c565b915061466282614647565b600082019050919050565b60006146788261464a565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146de60248361385d565b91506146e982614682565b604082019050919050565b6000602082019050818103600083015261470d816146d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061477060228361385d565b915061477b82614714565b604082019050919050565b6000602082019050818103600083015261479f81614763565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147dc60208361385d565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614848601d8361385d565b915061485382614812565b602082019050919050565b600060208201905081810360008301526148778161483b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006148da60258361385d565b91506148e58261487e565b604082019050919050565b60006020820190508181036000830152614909816148cd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061496c60238361385d565b915061497782614910565b604082019050919050565b6000602082019050818103600083015261499b8161495f565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006149d8601d8361385d565b91506149e3826149a2565b602082019050919050565b60006020820190508181036000830152614a07816149cb565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614a4460168361385d565b9150614a4f82614a0e565b602082019050919050565b60006020820190508181036000830152614a7381614a37565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b6000614afc60468361385d565b9150614b0782614a7a565b606082019050919050565b60006020820190508181036000830152614b2b81614aef565b9050919050565b6000614b3d826139e6565b9150614b48836139e6565b9250828203905081811115614b6057614b5f613df7565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000614bc260358361385d565b9150614bcd82614b66565b604082019050919050565b60006020820190508181036000830152614bf181614bb5565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614c5460288361385d565b9150614c5f82614bf8565b604082019050919050565b60006020820190508181036000830152614c8381614c47565b9050919050565b7f43616e6e6f7420657863656564206d61782077616c6c65742e00000000000000600082015250565b6000614cc060198361385d565b9150614ccb82614c8a565b602082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000614d52602a8361385d565b9150614d5d82614cf6565b604082019050919050565b60006020820190508181036000830152614d8181614d45565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614de460268361385d565b9150614def82614d88565b604082019050919050565b60006020820190508181036000830152614e1381614dd7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614e58816139ba565b92915050565b600060208284031215614e7457614e7361399e565b5b6000614e8284828501614e49565b91505092915050565b6000819050919050565b6000614eb0614eab614ea684614e8b565b613924565b6139e6565b9050919050565b614ec081614e95565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614efb816139a8565b82525050565b6000614f0d8383614ef2565b60208301905092915050565b6000602082019050919050565b6000614f3182614ec6565b614f3b8185614ed1565b9350614f4683614ee2565b8060005b83811015614f77578151614f5e8882614f01565b9750614f6983614f19565b925050600181019050614f4a565b5085935050505092915050565b600060a082019050614f996000830188613bb0565b614fa66020830187614eb7565b8181036040830152614fb88186614f26565b9050614fc76060830185613cbe565b614fd46080830184613bb0565b9695505050505050565b6000604082019050614ff36000830185613cbe565b6150006020830184613a68565b939250505056fea264697066735822122060bea7db3cd1853c4d81e4d5f38635316726d7c050f4961e7d554755a685addb64736f6c63430008110033

Deployed Bytecode Sourcemap

8946:13078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1961:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9101:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2893:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9938:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12885:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2282:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3102:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15443:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13206:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2181:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3371:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9135:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9431:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21709:312;;;;;;;;;;;;;:::i;:::-;;19948:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21503:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9027:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9773;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9397:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9842:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9511:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2398:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7361:103;;;;;;;;;;;;;:::i;:::-;;15548:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12597:154;;;;;;;;;;;;;:::i;:::-;;14626:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12259:330;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9346:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8993:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7126:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9740:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2069:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14894:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3617:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9306:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2533:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9062:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10009:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9471:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15977:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13765:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9658:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14057:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9706:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13483:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2734:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9193:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9549:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12759:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13100:98;;;;;;;;;;;;;:::i;:::-;;15760:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9262:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7472:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21335:160;;;;;;;;;;;;;:::i;:::-;;9808:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1961:100;2015:13;2048:5;2041:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1961:100;:::o;9101:27::-;;;;;;;;;;;;;:::o;2893:201::-;2976:4;2993:13;3009:12;:10;:12::i;:::-;2993:28;;3032:32;3041:5;3048:7;3057:6;3032:8;:32::i;:::-;3082:4;3075:11;;;2893:201;;;;:::o;9938:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;12885:207::-;7085:13;:11;:13::i;:::-;12989:9:::1;12985:100;13008:7;;:14;;13004:1;:18;12985:100;;;13069:4;13043:11;:23;13055:7;;13063:1;13055:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13043:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;13024:3;;;;;:::i;:::-;;;;12985:100;;;;12885:207:::0;;;:::o;2282:108::-;2343:7;2370:12;;2363:19;;2282:108;:::o;3102:261::-;3199:4;3216:15;3234:12;:10;:12::i;:::-;3216:30;;3257:38;3273:4;3279:7;3288:6;3257:15;:38::i;:::-;3306:27;3316:4;3322:2;3326:6;3306:9;:27::i;:::-;3351:4;3344:11;;;3102:261;;;;;:::o;15443:97::-;7085:13;:11;:13::i;:::-;15522:10:::1;15510:9;;:22;;;;;;;;;;;;;;;;;;15443:97:::0;:::o;13206:269::-;7085:13;:11;:13::i;:::-;13325:4:::1;13319;13315:1;13299:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13298:31;;;;:::i;:::-;13288:6;:41;;13280:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;13411:6;13401;:17;;;;:::i;:::-;13386:12;:32;;;;13434:33;13454:12;;13434:33;;;;;;:::i;:::-;;;;;;;;13206:269:::0;:::o;2181:93::-;2239:5;2264:2;2257:9;;2181:93;:::o;3371:238::-;3459:4;3476:13;3492:12;:10;:12::i;:::-;3476:28;;3515:64;3524:5;3531:7;3568:10;3540:25;3550:5;3557:7;3540:9;:25::i;:::-;:38;;;;:::i;:::-;3515:8;:64::i;:::-;3597:4;3590:11;;;3371:238;;;;:::o;9135:21::-;;;;;;;;;;;;;:::o;9431:33::-;;;;;;;;;;;;;:::o;21709:312::-;7085:13;:11;:13::i;:::-;21800:18:::1;;21772:24;21790:4;21772:9;:24::i;:::-;:46;;21764:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;21909:4;21898:8;;:15;;;;;;;;;;;;;;;;;;21924:10;:8;:10::i;:::-;21956:5;21945:8;;:16;;;;;;;;;;;;;;;;;;21977:36;21997:15;21977:36;;;;;;:::i;:::-;;;;;;;;21709:312::o:0;19948:120::-;20004:4;20042:18;;20027:12;:33;20020:40;;19948:120;:::o;21503:198::-;7085:13;:11;:13::i;:::-;21611:1:::1;21588:25;;:11;:25;;::::0;21580:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21681:11;21660:10;;:33;;;;;;;;;;;;;;;;;;21503:198:::0;:::o;9027:28::-;;;;:::o;9773:::-;;;;:::o;9397:25::-;;;;:::o;9842:27::-;;;;:::o;9511:31::-;;;;;;;;;;;;;:::o;2398:127::-;2472:7;2499:9;:18;2509:7;2499:18;;;;;;;;;;;;;;;;2492:25;;2398:127;;;:::o;7361:103::-;7085:13;:11;:13::i;:::-;7426:30:::1;7453:1;7426:18;:30::i;:::-;7361:103::o:0;15548:204::-;7085:13;:11;:13::i;:::-;15630:7:::1;15618:9;:19;;;;15663:9;;15648:12;:24;;;;15707:2;15691:12;;:18;;15683:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15548:204:::0;:::o;12597:154::-;7085:13;:11;:13::i;:::-;12668:5:::1;12651:14;;:22;;;;;;;;;;;;;;;;;;12707:5;12684:20;;:28;;;;;;;;;;;;;;;;;;12728:15;;;;;;;;;;12597:154::o:0;14626:260::-;7085:13;:11;:13::i;:::-;14722:4:::1;14718:104;;14760:6;;;;;;;;;;;14750:16;;:6;:16;;::::0;14742:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14718:104;14874:4;14832:31;:39;14864:6;14832:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14626:260:::0;;:::o;12259:330::-;7085:13;:11;:13::i;:::-;12341::::1;;;;;;;;;;;12340:14;12332:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12409:4;12393:13;;:20;;;;;;;;;;;;;;;;;;12438:4;12424:11;;:18;;;;;;;;;;;;;;;;;;12474:12;12453:18;:33;;;;12539:10;12518:18;;:31;;;;:::i;:::-;12497:18;:52;;;;12565:16;;;;;;;;;;12259:330:::0;:::o;9346:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8993:27::-;;;;:::o;7126:87::-;7172:7;7199:6;;;;;;;;;;;7192:13;;7126:87;:::o;9740:24::-;;;;:::o;2069:104::-;2125:13;2158:7;2151:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2069:104;:::o;14894:295::-;7085:13;:11;:13::i;:::-;15003:6:::1;;;;;;;;;;;14995:14;;:4;:14;;::::0;14987:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15084:41;15113:4;15119:5;15084:28;:41::i;:::-;15175:5;15141:40;;15169:4;15141:40;;;;;;;;;;;;14894:295:::0;;:::o;3617:436::-;3710:4;3727:13;3743:12;:10;:12::i;:::-;3727:28;;3766:24;3793:25;3803:5;3810:7;3793:9;:25::i;:::-;3766:52;;3857:15;3837:16;:35;;3829:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3950:60;3959:5;3966:7;3994:15;3975:16;:34;3950:8;:60::i;:::-;4041:4;4034:11;;;;3617:436;;;;:::o;9306:33::-;;;;:::o;2533:193::-;2612:4;2629:13;2645:12;:10;:12::i;:::-;2629:28;;2668;2678:5;2685:2;2689:6;2668:9;:28::i;:::-;2714:4;2707:11;;;2533:193;;;;:::o;9062:30::-;;;;:::o;10009:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;9471:33::-;;;;;;;;;;;;;:::o;15977:182::-;7085:13;:11;:13::i;:::-;16093:8:::1;16062:19;:28;16082:7;16062:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16133:7;16117:34;;;16142:8;16117:34;;;;;;:::i;:::-;;;;;;;;15977:182:::0;;:::o;13765:284::-;7085:13;:11;:13::i;:::-;13887:4:::1;13881;13877:1;13861:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13860:31;;;;:::i;:::-;13850:6;:41;;13842:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;13979:6;13969;:17;;;;:::i;:::-;13951:15;:35;;;;14002:39;14025:15;;14002:39;;;;;;:::i;:::-;;;;;;;;13765:284:::0;:::o;9658:39::-;;;;;;;;;;;;;:::o;14057:346::-;7085:13;:11;:13::i;:::-;14180:6:::1;14176:1;14160:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;14147:9;:39;;14139:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;14295:4;14291:1;14275:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14262:9;:37;;14254:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;14387:9;14366:18;:30;;;;14057:346:::0;:::o;9706:27::-;;;;:::o;13483:274::-;7085:13;:11;:13::i;:::-;13603:4:::1;13597;13593:1;13577:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13576:31;;;;:::i;:::-;13566:6;:41;;13558:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;13691:6;13681;:17;;;;:::i;:::-;13665:13;:33;;;;13714:35;13735:13;;13714:35;;;;;;:::i;:::-;;;;;;;;13483:274:::0;:::o;2734:151::-;2823:7;2850:11;:18;2862:5;2850:18;;;;;;;;;;;;;;;:27;2869:7;2850:27;;;;;;;;;;;;;;;;2843:34;;2734:151;;;;:::o;9193:33::-;;;;:::o;9549:29::-;;;;;;;;;;;;;:::o;12759:118::-;7085:13;:11;:13::i;:::-;12865:4:::1;12843:11;:19;12855:6;12843:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;12759:118:::0;;:::o;13100:98::-;7085:13;:11;:13::i;:::-;13185:5:::1;13162:20;;:28;;;;;;;;;;;;;;;;;;13100:98::o:0;15760:209::-;7085:13;:11;:13::i;:::-;15844:7:::1;15831:10;:20;;;;15878:10;;15862:13;:26;;;;15924:2;15907:13;;:19;;15899:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15760:209:::0;:::o;9262:37::-;;;;:::o;7472:201::-;7085:13;:11;:13::i;:::-;7581:1:::1;7561:22;;:8;:22;;::::0;7553:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7637:28;7656:8;7637:18;:28::i;:::-;7472:201:::0;:::o;21335:160::-;7085:13;:11;:13::i;:::-;21393:12:::1;21437:10;21429:24;;21461:21;21429:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21416:71;;;;;21382:113;21335:160::o:0;9808:25::-;;;;:::o;158:98::-;211:7;238:10;231:17;;158:98;:::o;5756:346::-;5875:1;5858:19;;:5;:19;;;5850:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5956:1;5937:21;;:7;:21;;;5929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6040:6;6010:11;:18;6022:5;6010:18;;;;;;;;;;;;;;;:27;6029:7;6010:27;;;;;;;;;;;;;;;:36;;;;6078:7;6062:32;;6071:5;6062:32;;;6087:6;6062:32;;;;;;:::i;:::-;;;;;;;;5756:346;;;:::o;7221:132::-;7296:12;:10;:12::i;:::-;7285:23;;:7;:5;:7::i;:::-;:23;;;7277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7221:132::o;6110:419::-;6211:24;6238:25;6248:5;6255:7;6238:9;:25::i;:::-;6211:52;;6298:17;6278:16;:37;6274:248;;6360:6;6340:16;:26;;6332:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6444:51;6453:5;6460:7;6488:6;6469:16;:25;6444:8;:51::i;:::-;6274:248;6200:329;6110:419;;;:::o;16167:3773::-;16283:1;16267:18;;:4;:18;;;16259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16360:1;16346:16;;:2;:16;;;16338:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16430:1;16421:6;:10;16413:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16482:13;;;;;;;;;;;16478:132;;16519:19;:25;16539:4;16519:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16548:19;:23;16568:2;16548:23;;;;;;;;;;;;;;;;;;;;;;;;;16519:52;16511:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16478:132;16646:1;16625:18;;:22;16622:196;;;16672:11;:17;16684:4;16672:17;;;;;;;;;;;;;;;;;;;;;;;;;16671:18;:35;;;;16699:7;:5;:7::i;:::-;16693:13;;:2;:13;;;16671:35;:60;;;;16724:6;16710:21;;:2;:21;;;16671:60;16663:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;16622:196;16833:14;;;;;;;;;;;16830:1462;;;16875:7;:5;:7::i;:::-;16867:15;;:4;:15;;;;:32;;;;;16892:7;:5;:7::i;:::-;16886:13;;:2;:13;;;;16867:32;:52;;;;;16917:1;16903:16;;:2;:16;;;;16867:52;:77;;;;;16937:6;16923:21;;:2;:21;;;;16867:77;:107;;;;;16949:19;:25;16969:4;16949:25;;;;;;;;;;;;;;;;;;;;;;;;;16948:26;16867:107;:135;;;;;16979:19;:23;16999:2;16979:23;;;;;;;;;;;;;;;;;;;;;;;;;16978:24;16867:135;16863:1418;;;17028:20;;;;;;;;;;;17024:506;;;17090:9;;;;;;;;;;;17076:24;;:2;:24;;;;:49;;;;;17118:6;;;;;;;;;;;17104:21;;:2;:21;;;;17076:49;17072:439;;;17218:1;17203:12;:16;;;;:::i;:::-;17161:28;:39;17190:9;17161:39;;;;;;;;;;;;;;;;:58;:113;;;;;17273:1;17258:12;:16;;;;:::i;:::-;17223:28;:32;17252:2;17223:32;;;;;;;;;;;;;;;;:51;17161:113;17153:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;17401:12;17359:28;:39;17388:9;17359:39;;;;;;;;;;;;;;;:54;;;;17475:12;17440:28;:32;17469:2;17440:32;;;;;;;;;;;;;;;:47;;;;17072:439;17024:506;17554:25;:31;17580:4;17554:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17590:31;:35;17622:2;17590:35;;;;;;;;;;;;;;;;;;;;;;;;;17589:36;17554:71;17550:716;;;17672:12;;17662:6;:22;;17654:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17790:15;;17773:13;17783:2;17773:9;:13::i;:::-;17764:6;:22;;;;:::i;:::-;:41;;17756:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17550:716;;;17882:25;:29;17908:2;17882:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17916:31;:37;17948:4;17916:37;;;;;;;;;;;;;;;;;;;;;;;;;17915:38;17882:71;17878:388;;;18000:13;;17990:6;:23;;17982:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17878:388;;;18108:31;:35;18140:2;18108:35;;;;;;;;;;;;;;;;;;;;;;;;;18103:163;;18201:15;;18184:13;18194:2;18184:9;:13::i;:::-;18175:6;:22;;;;:::i;:::-;:41;;18167:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18103:163;17878:388;17550:716;16863:1418;16830:1462;18304:28;18335:24;18353:4;18335:9;:24::i;:::-;18304:55;;18372:12;18411:18;;18387:20;:42;;18372:57;;18445:7;:22;;;;;18456:11;;;;;;;;;;;18445:22;:35;;;;;18472:8;;;;;;;;;;;18471:9;18445:35;:71;;;;;18485:25;:31;18511:4;18485:31;;;;;;;;;;;;;;;;;;;;;;;;;18484:32;18445:71;:101;;;;;18521:19;:25;18541:4;18521:25;;;;;;;;;;;;;;;;;;;;;;;;;18520:26;18445:101;:129;;;;;18551:19;:23;18571:2;18551:23;;;;;;;;;;;;;;;;;;;;;;;;;18550:24;18445:129;18442:236;;;18602:4;18591:8;;:15;;;;;;;;;;;;;;;;;;18623:10;:8;:10::i;:::-;18661:5;18650:8;;:16;;;;;;;;;;;;;;;;;;18442:236;18690:12;18705:4;18690:19;;18723;:25;18743:4;18723:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18752:19;:23;18772:2;18752:23;;;;;;;;;;;;;;;;;;;;;;;;;18723:52;18720:99;;;18802:5;18792:15;;18720:99;18831:12;18861:7;18858:1029;;;18887:25;:23;:25::i;:::-;:60;;;;;18916:25;:31;18942:4;18916:31;;;;;;;;;;;;;;;;;;;;;;;;;18887:60;:94;;;;;18952:25;:29;18978:2;18952:29;;;;;;;;;;;;;;;;;;;;;;;;;18951:30;18887:94;:114;;;;;19000:1;18985:12;;:16;18887:114;18884:859;;;19027:11;:15;19039:2;19027:15;;;;;;;;;;;;;;;;;;;;;;;;;19023:171;;19084:4;19066:11;:15;19078:2;19066:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;19125:1;19111:10;;:15;;;;;;;:::i;:::-;;;;;;;;19154:20;19171:2;19154:20;;;;;;:::i;:::-;;;;;;;;19023:171;19235:3;19230:2;19221:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;19214:24;;19292:12;;19280:9;;19273:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;19257:12;;:47;;;;;;;:::i;:::-;;;;;;;;18884:859;;;19345:25;:29;19371:2;19345:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;19394:1;19378:13;;:17;19345:50;19341:402;;;19447:3;19431:13;;19422:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;19415:35;;19505:13;;19492:10;;19485:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;19469:12;;:49;;;;;;;:::i;:::-;;;;;;;;19341:402;;;19558:25;:31;19584:4;19558:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;19608:1;19593:12;;:16;19558:51;19555:188;;;19658:3;19643:12;;19634:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19627:34;;19715:12;;19703:9;;19696:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;19680:12;;:47;;;;;;;:::i;:::-;;;;;;;;19555:188;19341:402;18884:859;19769:1;19762:4;:8;19759:89;;;19790:42;19806:4;19820;19827;19790:15;:42::i;:::-;19759:89;19871:4;19861:14;;;;;:::i;:::-;;;18858:1029;19899:33;19915:4;19921:2;19925:6;19899:15;:33::i;:::-;16246:3694;;;;16167:3773;;;:::o;20541:743::-;20580:23;20606:24;20624:4;20606:9;:24::i;:::-;20580:50;;20641:25;20670:12;;20641:41;;20717:1;20698:15;:20;:46;;;;20743:1;20722:17;:22;20698:46;20695:60;;;20747:7;;;;20695:60;20809:2;20788:18;;:23;;;;:::i;:::-;20770:15;:41;20767:113;;;20866:2;20845:18;;:23;;;;:::i;:::-;20827:41;;20767:113;20892:12;20921:9;;;;;;;;;;;20917:192;;;20947:33;20964:15;20947:16;:33::i;:::-;21010:1;20995:12;:16;;;;21047:10;;;;;;;;;;;21039:24;;21071:21;21039:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21026:71;;;;;20917:192;21126:9;;;;;;;;;;;21121:156;;21152:53;21170:4;21177:10;;;;;;;;;;;21189:15;21152:9;:53::i;:::-;21235:1;21220:12;:16;;;;21261:4;21251:14;;21121:156;20569:715;;;20541:743;:::o;7681:191::-;7755:16;7774:6;;;;;;;;;;;7755:25;;7800:8;7791:6;;:17;;;;;;;;;;;;;;;;;;7855:8;7824:40;;7845:8;7824:40;;;;;;;;;;;;7744:128;7681:191;:::o;15197:238::-;15314:5;15280:25;:31;15306:4;15280:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15332;15359:4;15365:5;15332:26;:39::i;:::-;15421:5;15387:40;;15415:4;15387:40;;;;;;;;;;;;15197:238;;:::o;4061:641::-;4174:1;4158:18;;:4;:18;;;4150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4251:1;4237:16;;:2;:16;;;4229:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4306:38;4327:4;4333:2;4337:6;4306:20;:38::i;:::-;4357:19;4379:9;:15;4389:4;4379:15;;;;;;;;;;;;;;;;4357:37;;4428:6;4413:11;:21;;4405:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4545:6;4531:11;:20;4513:9;:15;4523:4;4513:15;;;;;;;;;;;;;;;:38;;;;4583:6;4566:9;:13;4576:2;4566:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4633:2;4618:26;;4627:4;4618:26;;;4637:6;4618:26;;;;;;:::i;:::-;;;;;;;;4657:37;4677:4;4683:2;4687:6;4657:19;:37::i;:::-;4139:563;4061:641;;;:::o;20076:457::-;20142:21;20180:1;20166:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20142:40;;20211:4;20193;20198:1;20193:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20237:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20227:4;20232:1;20227:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20266:56;20283:4;20298:9;;;;;;;;;;;20310:11;20266:8;:56::i;:::-;20335:9;;;;;;;;;;;:60;;;20410:11;20436:1;20452:4;20479;20499:15;20335:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20131:402;20076:457;:::o;14411:207::-;14541:10;14499:31;:39;14531:6;14499:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14567:43;14591:6;14599:10;14567:43;;;;;;;:::i;:::-;;;;;;;;14411:207;;:::o;6537:91::-;;;;:::o;6636:90::-;;;;:::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:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2618:117;2727:1;2724;2717:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:329::-;4438:6;4487:2;4475:9;4466:7;4462:23;4458:32;4455:119;;;4493:79;;:::i;:::-;4455:119;4613:1;4638:53;4683:7;4674:6;4663:9;4659:22;4638:53;:::i;:::-;4628:63;;4584:117;4379:329;;;;:::o;4714:117::-;4823:1;4820;4813:12;4837:117;4946:1;4943;4936:12;4960:117;5069:1;5066;5059:12;5100:568;5173:8;5183:6;5233:3;5226:4;5218:6;5214:17;5210:27;5200:122;;5241:79;;:::i;:::-;5200:122;5354:6;5341:20;5331:30;;5384:18;5376:6;5373:30;5370:117;;;5406:79;;:::i;:::-;5370:117;5520:4;5512:6;5508:17;5496:29;;5574:3;5566:4;5558:6;5554:17;5544:8;5540:32;5537:41;5534:128;;;5581:79;;:::i;:::-;5534:128;5100:568;;;;;:::o;5674:116::-;5744:21;5759:5;5744:21;:::i;:::-;5737:5;5734:32;5724:60;;5780:1;5777;5770:12;5724:60;5674:116;:::o;5796:133::-;5839:5;5877:6;5864:20;5855:29;;5893:30;5917:5;5893:30;:::i;:::-;5796:133;;;;:::o;5935:698::-;6027:6;6035;6043;6092:2;6080:9;6071:7;6067:23;6063:32;6060:119;;;6098:79;;:::i;:::-;6060:119;6246:1;6235:9;6231:17;6218:31;6276:18;6268:6;6265:30;6262:117;;;6298:79;;:::i;:::-;6262:117;6411:80;6483:7;6474:6;6463:9;6459:22;6411:80;:::i;:::-;6393:98;;;;6189:312;6540:2;6566:50;6608:7;6599:6;6588:9;6584:22;6566:50;:::i;:::-;6556:60;;6511:115;5935:698;;;;;:::o;6639:118::-;6726:24;6744:5;6726:24;:::i;:::-;6721:3;6714:37;6639:118;;:::o;6763:222::-;6856:4;6894:2;6883:9;6879:18;6871:26;;6907:71;6975:1;6964:9;6960:17;6951:6;6907:71;:::i;:::-;6763:222;;;;:::o;6991:619::-;7068:6;7076;7084;7133:2;7121:9;7112:7;7108:23;7104:32;7101:119;;;7139:79;;:::i;:::-;7101:119;7259:1;7284:53;7329:7;7320:6;7309:9;7305:22;7284:53;:::i;:::-;7274:63;;7230:117;7386:2;7412:53;7457:7;7448:6;7437:9;7433:22;7412:53;:::i;:::-;7402:63;;7357:118;7514:2;7540:53;7585:7;7576:6;7565:9;7561:22;7540:53;:::i;:::-;7530:63;;7485:118;6991:619;;;;;:::o;7616:323::-;7672:6;7721:2;7709:9;7700:7;7696:23;7692:32;7689:119;;;7727:79;;:::i;:::-;7689:119;7847:1;7872:50;7914:7;7905:6;7894:9;7890:22;7872:50;:::i;:::-;7862:60;;7818:114;7616:323;;;;:::o;7945:329::-;8004:6;8053:2;8041:9;8032:7;8028:23;8024:32;8021:119;;;8059:79;;:::i;:::-;8021:119;8179:1;8204:53;8249:7;8240:6;8229:9;8225:22;8204:53;:::i;:::-;8194:63;;8150:117;7945:329;;;;:::o;8280:86::-;8315:7;8355:4;8348:5;8344:16;8333:27;;8280:86;;;:::o;8372:112::-;8455:22;8471:5;8455:22;:::i;:::-;8450:3;8443:35;8372:112;;:::o;8490:214::-;8579:4;8617:2;8606:9;8602:18;8594:26;;8630:67;8694:1;8683:9;8679:17;8670:6;8630:67;:::i;:::-;8490:214;;;;:::o;8710:118::-;8797:24;8815:5;8797:24;:::i;:::-;8792:3;8785:37;8710:118;;:::o;8834:222::-;8927:4;8965:2;8954:9;8950:18;8942:26;;8978:71;9046:1;9035:9;9031:17;9022:6;8978:71;:::i;:::-;8834:222;;;;:::o;9062:468::-;9127:6;9135;9184:2;9172:9;9163:7;9159:23;9155:32;9152:119;;;9190:79;;:::i;:::-;9152:119;9310:1;9335:53;9380:7;9371:6;9360:9;9356:22;9335:53;:::i;:::-;9325:63;;9281:117;9437:2;9463:50;9505:7;9496:6;9485:9;9481:22;9463:50;:::i;:::-;9453:60;;9408:115;9062:468;;;;;:::o;9536:474::-;9604:6;9612;9661:2;9649:9;9640:7;9636:23;9632:32;9629:119;;;9667:79;;:::i;:::-;9629:119;9787:1;9812:53;9857:7;9848:6;9837:9;9833:22;9812:53;:::i;:::-;9802:63;;9758:117;9914:2;9940:53;9985:7;9976:6;9965:9;9961:22;9940:53;:::i;:::-;9930:63;;9885:118;9536:474;;;;;:::o;10016:180::-;10064:77;10061:1;10054:88;10161:4;10158:1;10151:15;10185:4;10182:1;10175:15;10202:320;10246:6;10283:1;10277:4;10273:12;10263:22;;10330:1;10324:4;10320:12;10351:18;10341:81;;10407:4;10399:6;10395:17;10385:27;;10341:81;10469:2;10461:6;10458:14;10438:18;10435:38;10432:84;;10488:18;;:::i;:::-;10432:84;10253:269;10202:320;;;:::o;10528:180::-;10576:77;10573:1;10566:88;10673:4;10670:1;10663:15;10697:4;10694:1;10687:15;10714:180;10762:77;10759:1;10752:88;10859:4;10856:1;10849:15;10883:4;10880:1;10873:15;10900:233;10939:3;10962:24;10980:5;10962:24;:::i;:::-;10953:33;;11008:66;11001:5;10998:77;10995:103;;11078:18;;:::i;:::-;10995:103;11125:1;11118:5;11114:13;11107:20;;10900:233;;;:::o;11139:410::-;11179:7;11202:20;11220:1;11202:20;:::i;:::-;11197:25;;11236:20;11254:1;11236:20;:::i;:::-;11231:25;;11291:1;11288;11284:9;11313:30;11331:11;11313:30;:::i;:::-;11302:41;;11492:1;11483:7;11479:15;11476:1;11473:22;11453:1;11446:9;11426:83;11403:139;;11522:18;;:::i;:::-;11403:139;11187:362;11139:410;;;;:::o;11555:180::-;11603:77;11600:1;11593:88;11700:4;11697:1;11690:15;11724:4;11721:1;11714:15;11741:185;11781:1;11798:20;11816:1;11798:20;:::i;:::-;11793:25;;11832:20;11850:1;11832:20;:::i;:::-;11827:25;;11871:1;11861:35;;11876:18;;:::i;:::-;11861:35;11918:1;11915;11911:9;11906:14;;11741:185;;;;:::o;11932:228::-;12072:34;12068:1;12060:6;12056:14;12049:58;12141:11;12136:2;12128:6;12124:15;12117:36;11932:228;:::o;12166:366::-;12308:3;12329:67;12393:2;12388:3;12329:67;:::i;:::-;12322:74;;12405:93;12494:3;12405:93;:::i;:::-;12523:2;12518:3;12514:12;12507:19;;12166:366;;;:::o;12538:419::-;12704:4;12742:2;12731:9;12727:18;12719:26;;12791:9;12785:4;12781:20;12777:1;12766:9;12762:17;12755:47;12819:131;12945:4;12819:131;:::i;:::-;12811:139;;12538:419;;;:::o;12963:191::-;13003:3;13022:20;13040:1;13022:20;:::i;:::-;13017:25;;13056:20;13074:1;13056:20;:::i;:::-;13051:25;;13099:1;13096;13092:9;13085:16;;13120:3;13117:1;13114:10;13111:36;;;13127:18;;:::i;:::-;13111:36;12963:191;;;;:::o;13160:251::-;13300:34;13296:1;13288:6;13284:14;13277:58;13369:34;13364:2;13356:6;13352:15;13345:59;13160:251;:::o;13417:366::-;13559:3;13580:67;13644:2;13639:3;13580:67;:::i;:::-;13573:74;;13656:93;13745:3;13656:93;:::i;:::-;13774:2;13769:3;13765:12;13758:19;;13417:366;;;:::o;13789:419::-;13955:4;13993:2;13982:9;13978:18;13970:26;;14042:9;14036:4;14032:20;14028:1;14017:9;14013:17;14006:47;14070:131;14196:4;14070:131;:::i;:::-;14062:139;;13789:419;;;:::o;14214:181::-;14354:33;14350:1;14342:6;14338:14;14331:57;14214:181;:::o;14401:366::-;14543:3;14564:67;14628:2;14623:3;14564:67;:::i;:::-;14557:74;;14640:93;14729:3;14640:93;:::i;:::-;14758:2;14753:3;14749:12;14742:19;;14401:366;;;:::o;14773:419::-;14939:4;14977:2;14966:9;14962:18;14954:26;;15026:9;15020:4;15016:20;15012:1;15001:9;14997:17;14990:47;15054:131;15180:4;15054:131;:::i;:::-;15046:139;;14773:419;;;:::o;15198:180::-;15338:32;15334:1;15326:6;15322:14;15315:56;15198:180;:::o;15384:366::-;15526:3;15547:67;15611:2;15606:3;15547:67;:::i;:::-;15540:74;;15623:93;15712:3;15623:93;:::i;:::-;15741:2;15736:3;15732:12;15725:19;;15384:366;;;:::o;15756:419::-;15922:4;15960:2;15949:9;15945:18;15937:26;;16009:9;16003:4;15999:20;15995:1;15984:9;15980:17;15973:47;16037:131;16163:4;16037:131;:::i;:::-;16029:139;;15756:419;;;:::o;16181:226::-;16321:34;16317:1;16309:6;16305:14;16298:58;16390:9;16385:2;16377:6;16373:15;16366:34;16181:226;:::o;16413:366::-;16555:3;16576:67;16640:2;16635:3;16576:67;:::i;:::-;16569:74;;16652:93;16741:3;16652:93;:::i;:::-;16770:2;16765:3;16761:12;16754:19;;16413:366;;;:::o;16785:419::-;16951:4;16989:2;16978:9;16974:18;16966:26;;17038:9;17032:4;17028:20;17024:1;17013:9;17009:17;17002:47;17066:131;17192:4;17066:131;:::i;:::-;17058:139;;16785:419;;;:::o;17210:173::-;17350:25;17346:1;17338:6;17334:14;17327:49;17210:173;:::o;17389:366::-;17531:3;17552:67;17616:2;17611:3;17552:67;:::i;:::-;17545:74;;17628:93;17717:3;17628:93;:::i;:::-;17746:2;17741:3;17737:12;17730:19;;17389:366;;;:::o;17761:419::-;17927:4;17965:2;17954:9;17950:18;17942:26;;18014:9;18008:4;18004:20;18000:1;17989:9;17985:17;17978:47;18042:131;18168:4;18042:131;:::i;:::-;18034:139;;17761:419;;;:::o;18186:244::-;18326:34;18322:1;18314:6;18310:14;18303:58;18395:27;18390:2;18382:6;18378:15;18371:52;18186:244;:::o;18436:366::-;18578:3;18599:67;18663:2;18658:3;18599:67;:::i;:::-;18592:74;;18675:93;18764:3;18675:93;:::i;:::-;18793:2;18788:3;18784:12;18777:19;;18436:366;;;:::o;18808:419::-;18974:4;19012:2;19001:9;18997:18;18989:26;;19061:9;19055:4;19051:20;19047:1;19036:9;19032:17;19025:47;19089:131;19215:4;19089:131;:::i;:::-;19081:139;;18808:419;;;:::o;19233:224::-;19373:34;19369:1;19361:6;19357:14;19350:58;19442:7;19437:2;19429:6;19425:15;19418:32;19233:224;:::o;19463:366::-;19605:3;19626:67;19690:2;19685:3;19626:67;:::i;:::-;19619:74;;19702:93;19791:3;19702:93;:::i;:::-;19820:2;19815:3;19811:12;19804:19;;19463:366;;;:::o;19835:419::-;20001:4;20039:2;20028:9;20024:18;20016:26;;20088:9;20082:4;20078:20;20074:1;20063:9;20059:17;20052:47;20116:131;20242:4;20116:131;:::i;:::-;20108:139;;19835:419;;;:::o;20260:231::-;20400:34;20396:1;20388:6;20384:14;20377:58;20469:14;20464:2;20456:6;20452:15;20445:39;20260:231;:::o;20497:366::-;20639:3;20660:67;20724:2;20719:3;20660:67;:::i;:::-;20653:74;;20736:93;20825:3;20736:93;:::i;:::-;20854:2;20849:3;20845:12;20838:19;;20497:366;;;:::o;20869:419::-;21035:4;21073:2;21062:9;21058:18;21050:26;;21122:9;21116:4;21112:20;21108:1;21097:9;21093:17;21086:47;21150:131;21276:4;21150:131;:::i;:::-;21142:139;;20869:419;;;:::o;21294:240::-;21434:34;21430:1;21422:6;21418:14;21411:58;21503:23;21498:2;21490:6;21486:15;21479:48;21294:240;:::o;21540:366::-;21682:3;21703:67;21767:2;21762:3;21703:67;:::i;:::-;21696:74;;21779:93;21868:3;21779:93;:::i;:::-;21897:2;21892:3;21888:12;21881:19;;21540:366;;;:::o;21912:419::-;22078:4;22116:2;22105:9;22101:18;22093:26;;22165:9;22159:4;22155:20;22151:1;22140:9;22136:17;22129:47;22193:131;22319:4;22193:131;:::i;:::-;22185:139;;21912:419;;;:::o;22337:239::-;22477:34;22473:1;22465:6;22461:14;22454:58;22546:22;22541:2;22533:6;22529:15;22522:47;22337:239;:::o;22582:366::-;22724:3;22745:67;22809:2;22804:3;22745:67;:::i;:::-;22738:74;;22821:93;22910:3;22821:93;:::i;:::-;22939:2;22934:3;22930:12;22923:19;;22582:366;;;:::o;22954:419::-;23120:4;23158:2;23147:9;23143:18;23135:26;;23207:9;23201:4;23197:20;23193:1;23182:9;23178:17;23171:47;23235:131;23361:4;23235:131;:::i;:::-;23227:139;;22954:419;;;:::o;23379:229::-;23519:34;23515:1;23507:6;23503:14;23496:58;23588:12;23583:2;23575:6;23571:15;23564:37;23379:229;:::o;23614:366::-;23756:3;23777:67;23841:2;23836:3;23777:67;:::i;:::-;23770:74;;23853:93;23942:3;23853:93;:::i;:::-;23971:2;23966:3;23962:12;23955:19;;23614:366;;;:::o;23986:419::-;24152:4;24190:2;24179:9;24175:18;24167:26;;24239:9;24233:4;24229:20;24225:1;24214:9;24210:17;24203:47;24267:131;24393:4;24267:131;:::i;:::-;24259:139;;23986:419;;;:::o;24411:225::-;24551:34;24547:1;24539:6;24535:14;24528:58;24620:8;24615:2;24607:6;24603:15;24596:33;24411:225;:::o;24642:366::-;24784:3;24805:67;24869:2;24864:3;24805:67;:::i;:::-;24798:74;;24881:93;24970:3;24881:93;:::i;:::-;24999:2;24994:3;24990:12;24983:19;;24642:366;;;:::o;25014:419::-;25180:4;25218:2;25207:9;25203:18;25195:26;;25267:9;25261:4;25257:20;25253:1;25242:9;25238:17;25231:47;25295:131;25421:4;25295:131;:::i;:::-;25287:139;;25014:419;;;:::o;25439:147::-;25540:11;25577:3;25562:18;;25439:147;;;;:::o;25592:114::-;;:::o;25712:398::-;25871:3;25892:83;25973:1;25968:3;25892:83;:::i;:::-;25885:90;;25984:93;26073:3;25984:93;:::i;:::-;26102:1;26097:3;26093:11;26086:18;;25712:398;;;:::o;26116:379::-;26300:3;26322:147;26465:3;26322:147;:::i;:::-;26315:154;;26486:3;26479:10;;26116:379;;;:::o;26501:223::-;26641:34;26637:1;26629:6;26625:14;26618:58;26710:6;26705:2;26697:6;26693:15;26686:31;26501:223;:::o;26730:366::-;26872:3;26893:67;26957:2;26952:3;26893:67;:::i;:::-;26886:74;;26969:93;27058:3;26969:93;:::i;:::-;27087:2;27082:3;27078:12;27071:19;;26730:366;;;:::o;27102:419::-;27268:4;27306:2;27295:9;27291:18;27283:26;;27355:9;27349:4;27345:20;27341:1;27330:9;27326:17;27319:47;27383:131;27509:4;27383:131;:::i;:::-;27375:139;;27102:419;;;:::o;27527:221::-;27667:34;27663:1;27655:6;27651:14;27644:58;27736:4;27731:2;27723:6;27719:15;27712:29;27527:221;:::o;27754:366::-;27896:3;27917:67;27981:2;27976:3;27917:67;:::i;:::-;27910:74;;27993:93;28082:3;27993:93;:::i;:::-;28111:2;28106:3;28102:12;28095:19;;27754:366;;;:::o;28126:419::-;28292:4;28330:2;28319:9;28315:18;28307:26;;28379:9;28373:4;28369:20;28365:1;28354:9;28350:17;28343:47;28407:131;28533:4;28407:131;:::i;:::-;28399:139;;28126:419;;;:::o;28551:182::-;28691:34;28687:1;28679:6;28675:14;28668:58;28551:182;:::o;28739:366::-;28881:3;28902:67;28966:2;28961:3;28902:67;:::i;:::-;28895:74;;28978:93;29067:3;28978:93;:::i;:::-;29096:2;29091:3;29087:12;29080:19;;28739:366;;;:::o;29111:419::-;29277:4;29315:2;29304:9;29300:18;29292:26;;29364:9;29358:4;29354:20;29350:1;29339:9;29335:17;29328:47;29392:131;29518:4;29392:131;:::i;:::-;29384:139;;29111:419;;;:::o;29536:179::-;29676:31;29672:1;29664:6;29660:14;29653:55;29536:179;:::o;29721:366::-;29863:3;29884:67;29948:2;29943:3;29884:67;:::i;:::-;29877:74;;29960:93;30049:3;29960:93;:::i;:::-;30078:2;30073:3;30069:12;30062:19;;29721:366;;;:::o;30093:419::-;30259:4;30297:2;30286:9;30282:18;30274:26;;30346:9;30340:4;30336:20;30332:1;30321:9;30317:17;30310:47;30374:131;30500:4;30374:131;:::i;:::-;30366:139;;30093:419;;;:::o;30518:224::-;30658:34;30654:1;30646:6;30642:14;30635:58;30727:7;30722:2;30714:6;30710:15;30703:32;30518:224;:::o;30748:366::-;30890:3;30911:67;30975:2;30970:3;30911:67;:::i;:::-;30904:74;;30987:93;31076:3;30987:93;:::i;:::-;31105:2;31100:3;31096:12;31089:19;;30748:366;;;:::o;31120:419::-;31286:4;31324:2;31313:9;31309:18;31301:26;;31373:9;31367:4;31363:20;31359:1;31348:9;31344:17;31337:47;31401:131;31527:4;31401:131;:::i;:::-;31393:139;;31120:419;;;:::o;31545:222::-;31685:34;31681:1;31673:6;31669:14;31662:58;31754:5;31749:2;31741:6;31737:15;31730:30;31545:222;:::o;31773:366::-;31915:3;31936:67;32000:2;31995:3;31936:67;:::i;:::-;31929:74;;32012:93;32101:3;32012:93;:::i;:::-;32130:2;32125:3;32121:12;32114:19;;31773:366;;;:::o;32145:419::-;32311:4;32349:2;32338:9;32334:18;32326:26;;32398:9;32392:4;32388:20;32384:1;32373:9;32369:17;32362:47;32426:131;32552:4;32426:131;:::i;:::-;32418:139;;32145:419;;;:::o;32570:179::-;32710:31;32706:1;32698:6;32694:14;32687:55;32570:179;:::o;32755:366::-;32897:3;32918:67;32982:2;32977:3;32918:67;:::i;:::-;32911:74;;32994:93;33083:3;32994:93;:::i;:::-;33112:2;33107:3;33103:12;33096:19;;32755:366;;;:::o;33127:419::-;33293:4;33331:2;33320:9;33316:18;33308:26;;33380:9;33374:4;33370:20;33366:1;33355:9;33351:17;33344:47;33408:131;33534:4;33408:131;:::i;:::-;33400:139;;33127:419;;;:::o;33552:172::-;33692:24;33688:1;33680:6;33676:14;33669:48;33552:172;:::o;33730:366::-;33872:3;33893:67;33957:2;33952:3;33893:67;:::i;:::-;33886:74;;33969:93;34058:3;33969:93;:::i;:::-;34087:2;34082:3;34078:12;34071:19;;33730:366;;;:::o;34102:419::-;34268:4;34306:2;34295:9;34291:18;34283:26;;34355:9;34349:4;34345:20;34341:1;34330:9;34326:17;34319:47;34383:131;34509:4;34383:131;:::i;:::-;34375:139;;34102:419;;;:::o;34527:294::-;34667:34;34663:1;34655:6;34651:14;34644:58;34736:34;34731:2;34723:6;34719:15;34712:59;34805:8;34800:2;34792:6;34788:15;34781:33;34527:294;:::o;34827:366::-;34969:3;34990:67;35054:2;35049:3;34990:67;:::i;:::-;34983:74;;35066:93;35155:3;35066:93;:::i;:::-;35184:2;35179:3;35175:12;35168:19;;34827:366;;;:::o;35199:419::-;35365:4;35403:2;35392:9;35388:18;35380:26;;35452:9;35446:4;35442:20;35438:1;35427:9;35423:17;35416:47;35480:131;35606:4;35480:131;:::i;:::-;35472:139;;35199:419;;;:::o;35624:194::-;35664:4;35684:20;35702:1;35684:20;:::i;:::-;35679:25;;35718:20;35736:1;35718:20;:::i;:::-;35713:25;;35762:1;35759;35755:9;35747:17;;35786:1;35780:4;35777:11;35774:37;;;35791:18;;:::i;:::-;35774:37;35624:194;;;;:::o;35824:240::-;35964:34;35960:1;35952:6;35948:14;35941:58;36033:23;36028:2;36020:6;36016:15;36009:48;35824:240;:::o;36070:366::-;36212:3;36233:67;36297:2;36292:3;36233:67;:::i;:::-;36226:74;;36309:93;36398:3;36309:93;:::i;:::-;36427:2;36422:3;36418:12;36411:19;;36070:366;;;:::o;36442:419::-;36608:4;36646:2;36635:9;36631:18;36623:26;;36695:9;36689:4;36685:20;36681:1;36670:9;36666:17;36659:47;36723:131;36849:4;36723:131;:::i;:::-;36715:139;;36442:419;;;:::o;36867:227::-;37007:34;37003:1;36995:6;36991:14;36984:58;37076:10;37071:2;37063:6;37059:15;37052:35;36867:227;:::o;37100:366::-;37242:3;37263:67;37327:2;37322:3;37263:67;:::i;:::-;37256:74;;37339:93;37428:3;37339:93;:::i;:::-;37457:2;37452:3;37448:12;37441:19;;37100:366;;;:::o;37472:419::-;37638:4;37676:2;37665:9;37661:18;37653:26;;37725:9;37719:4;37715:20;37711:1;37700:9;37696:17;37689:47;37753:131;37879:4;37753:131;:::i;:::-;37745:139;;37472:419;;;:::o;37897:175::-;38037:27;38033:1;38025:6;38021:14;38014:51;37897:175;:::o;38078:366::-;38220:3;38241:67;38305:2;38300:3;38241:67;:::i;:::-;38234:74;;38317:93;38406:3;38317:93;:::i;:::-;38435:2;38430:3;38426:12;38419:19;;38078:366;;;:::o;38450:419::-;38616:4;38654:2;38643:9;38639:18;38631:26;;38703:9;38697:4;38693:20;38689:1;38678:9;38674:17;38667:47;38731:131;38857:4;38731:131;:::i;:::-;38723:139;;38450:419;;;:::o;38875:229::-;39015:34;39011:1;39003:6;38999:14;38992:58;39084:12;39079:2;39071:6;39067:15;39060:37;38875:229;:::o;39110:366::-;39252:3;39273:67;39337:2;39332:3;39273:67;:::i;:::-;39266:74;;39349:93;39438:3;39349:93;:::i;:::-;39467:2;39462:3;39458:12;39451:19;;39110:366;;;:::o;39482:419::-;39648:4;39686:2;39675:9;39671:18;39663:26;;39735:9;39729:4;39725:20;39721:1;39710:9;39706:17;39699:47;39763:131;39889:4;39763:131;:::i;:::-;39755:139;;39482:419;;;:::o;39907:225::-;40047:34;40043:1;40035:6;40031:14;40024:58;40116:8;40111:2;40103:6;40099:15;40092:33;39907:225;:::o;40138:366::-;40280:3;40301:67;40365:2;40360:3;40301:67;:::i;:::-;40294:74;;40377:93;40466:3;40377:93;:::i;:::-;40495:2;40490:3;40486:12;40479:19;;40138:366;;;:::o;40510:419::-;40676:4;40714:2;40703:9;40699:18;40691:26;;40763:9;40757:4;40753:20;40749:1;40738:9;40734:17;40727:47;40791:131;40917:4;40791:131;:::i;:::-;40783:139;;40510:419;;;:::o;40935:180::-;40983:77;40980:1;40973:88;41080:4;41077:1;41070:15;41104:4;41101:1;41094:15;41121:143;41178:5;41209:6;41203:13;41194:22;;41225:33;41252:5;41225:33;:::i;:::-;41121:143;;;;:::o;41270:351::-;41340:6;41389:2;41377:9;41368:7;41364:23;41360:32;41357:119;;;41395:79;;:::i;:::-;41357:119;41515:1;41540:64;41596:7;41587:6;41576:9;41572:22;41540:64;:::i;:::-;41530:74;;41486:128;41270:351;;;;:::o;41627:85::-;41672:7;41701:5;41690:16;;41627:85;;;:::o;41718:158::-;41776:9;41809:61;41827:42;41836:32;41862:5;41836:32;:::i;:::-;41827:42;:::i;:::-;41809:61;:::i;:::-;41796:74;;41718:158;;;:::o;41882:147::-;41977:45;42016:5;41977:45;:::i;:::-;41972:3;41965:58;41882:147;;:::o;42035:114::-;42102:6;42136:5;42130:12;42120:22;;42035:114;;;:::o;42155:184::-;42254:11;42288:6;42283:3;42276:19;42328:4;42323:3;42319:14;42304:29;;42155:184;;;;:::o;42345:132::-;42412:4;42435:3;42427:11;;42465:4;42460:3;42456:14;42448:22;;42345:132;;;:::o;42483:108::-;42560:24;42578:5;42560:24;:::i;:::-;42555:3;42548:37;42483:108;;:::o;42597:179::-;42666:10;42687:46;42729:3;42721:6;42687:46;:::i;:::-;42765:4;42760:3;42756:14;42742:28;;42597:179;;;;:::o;42782:113::-;42852:4;42884;42879:3;42875:14;42867:22;;42782:113;;;:::o;42931:732::-;43050:3;43079:54;43127:5;43079:54;:::i;:::-;43149:86;43228:6;43223:3;43149:86;:::i;:::-;43142:93;;43259:56;43309:5;43259:56;:::i;:::-;43338:7;43369:1;43354:284;43379:6;43376:1;43373:13;43354:284;;;43455:6;43449:13;43482:63;43541:3;43526:13;43482:63;:::i;:::-;43475:70;;43568:60;43621:6;43568:60;:::i;:::-;43558:70;;43414:224;43401:1;43398;43394:9;43389:14;;43354:284;;;43358:14;43654:3;43647:10;;43055:608;;;42931:732;;;;:::o;43669:831::-;43932:4;43970:3;43959:9;43955:19;43947:27;;43984:71;44052:1;44041:9;44037:17;44028:6;43984:71;:::i;:::-;44065:80;44141:2;44130:9;44126:18;44117:6;44065:80;:::i;:::-;44192:9;44186:4;44182:20;44177:2;44166:9;44162:18;44155:48;44220:108;44323:4;44314:6;44220:108;:::i;:::-;44212:116;;44338:72;44406:2;44395:9;44391:18;44382:6;44338:72;:::i;:::-;44420:73;44488:3;44477:9;44473:19;44464:6;44420:73;:::i;:::-;43669:831;;;;;;;;:::o;44506:320::-;44621:4;44659:2;44648:9;44644:18;44636:26;;44672:71;44740:1;44729:9;44725:17;44716:6;44672:71;:::i;:::-;44753:66;44815:2;44804:9;44800:18;44791:6;44753:66;:::i;:::-;44506:320;;;;;:::o

Swarm Source

ipfs://60bea7db3cd1853c4d81e4d5f38635316726d7c050f4961e7d554755a685addb

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

Smart liquidity protocol powered by Quant-Tech, driven by AI. Making life easier by building a sustainable, powerful and smart RealYield ecosystem.

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.