ETH Price: $2,449.30 (+6.28%)

Contract

0xC3D6938ED574171895A45E293a6a6C2C6B1343F1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve199092772024-05-20 6:13:47122 days ago1716185627IN
0xC3D6938E...C6B1343F1
0 ETH0.000140962.98785391
Approve160147132022-11-21 0:09:35668 days ago1668989375IN
0xC3D6938E...C6B1343F1
0 ETH0.0006056912.82185503
Approve148934942022-06-02 22:14:51839 days ago1654208091IN
0xC3D6938E...C6B1343F1
0 ETH0.0020727243.87744315
Approve148844952022-06-01 11:21:56841 days ago1654082516IN
0xC3D6938E...C6B1343F1
0 ETH0.0020908744.26172685
Approve148836392022-06-01 7:43:16841 days ago1654069396IN
0xC3D6938E...C6B1343F1
0 ETH0.0014266130.19998015
Approve148835522022-06-01 7:23:51841 days ago1654068231IN
0xC3D6938E...C6B1343F1
0 ETH0.0016534935.00272187
Approve148835492022-06-01 7:23:17841 days ago1654068197IN
0xC3D6938E...C6B1343F1
0 ETH0.001938541.03602781
Approve148835472022-06-01 7:22:43841 days ago1654068163IN
0xC3D6938E...C6B1343F1
0 ETH0.0019839641.9985277
Approve148835452022-06-01 7:22:03841 days ago1654068123IN
0xC3D6938E...C6B1343F1
0 ETH0.0019332240.92431299
Approve148835232022-06-01 7:15:44841 days ago1654067744IN
0xC3D6938E...C6B1343F1
0 ETH0.0013884529.39219194
Approve148834932022-06-01 7:09:48841 days ago1654067388IN
0xC3D6938E...C6B1343F1
0 ETH0.0019972142.27888845
Approve148834872022-06-01 7:08:30841 days ago1654067310IN
0xC3D6938E...C6B1343F1
0 ETH0.0021549445.61787741
Approve148834842022-06-01 7:07:17841 days ago1654067237IN
0xC3D6938E...C6B1343F1
0 ETH0.0019557641.40151143
Approve148834842022-06-01 7:07:17841 days ago1654067237IN
0xC3D6938E...C6B1343F1
0 ETH0.0019557641.40151143
Approve148834812022-06-01 7:06:30841 days ago1654067190IN
0xC3D6938E...C6B1343F1
0 ETH0.0019971742.27801479
Approve148834772022-06-01 7:06:03841 days ago1654067163IN
0xC3D6938E...C6B1343F1
0 ETH0.0023820150.42485733
Approve148834682022-06-01 7:02:56841 days ago1654066976IN
0xC3D6938E...C6B1343F1
0 ETH0.0020415743.21806484
Approve148834392022-06-01 6:55:18841 days ago1654066518IN
0xC3D6938E...C6B1343F1
0 ETH0.0014267430.2027262
Approve148834382022-06-01 6:54:53841 days ago1654066493IN
0xC3D6938E...C6B1343F1
0 ETH0.0012997327.51399234
Approve148834112022-06-01 6:47:41841 days ago1654066061IN
0xC3D6938E...C6B1343F1
0 ETH0.0011704724.77774766
Approve148834082022-06-01 6:47:00841 days ago1654066020IN
0xC3D6938E...C6B1343F1
0 ETH0.0014817631.36731396
Approve148834042022-06-01 6:46:13841 days ago1654065973IN
0xC3D6938E...C6B1343F1
0 ETH0.0011923425.24068965
Approve148833892022-06-01 6:43:03841 days ago1654065783IN
0xC3D6938E...C6B1343F1
0 ETH0.0012585426.6420354
Approve148833592022-06-01 6:35:25841 days ago1654065325IN
0xC3D6938E...C6B1343F1
0 ETH0.0012587126.64573975
Approve148833502022-06-01 6:33:25841 days ago1654065205IN
0xC3D6938E...C6B1343F1
0 ETH0.001166124.6852395
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
199092852024-05-20 6:15:23122 days ago1716185723
0xC3D6938E...C6B1343F1
0.00483194 ETH
199092852024-05-20 6:15:23122 days ago1716185723
0xC3D6938E...C6B1343F1
0.00092598 ETH
199092852024-05-20 6:15:23122 days ago1716185723
0xC3D6938E...C6B1343F1
0.00195298 ETH
199092852024-05-20 6:15:23122 days ago1716185723
0xC3D6938E...C6B1343F1
0.00195298 ETH
199092852024-05-20 6:15:23122 days ago1716185723
0xC3D6938E...C6B1343F1
0.00781193 ETH
155385452022-09-15 10:36:23735 days ago1663238183
0xC3D6938E...C6B1343F1
0.00732949 ETH
155385452022-09-15 10:36:23735 days ago1663238183
0xC3D6938E...C6B1343F1
0.00143097 ETH
155385452022-09-15 10:36:23735 days ago1663238183
0xC3D6938E...C6B1343F1
0.00294925 ETH
155385452022-09-15 10:36:23735 days ago1663238183
0xC3D6938E...C6B1343F1
0.00294925 ETH
155385452022-09-15 10:36:23735 days ago1663238183
0xC3D6938E...C6B1343F1
0.01179703 ETH
149000162022-06-03 23:40:44838 days ago1654299644
0xC3D6938E...C6B1343F1
0.00086999 ETH
149000162022-06-03 23:40:44838 days ago1654299644
0xC3D6938E...C6B1343F1
0.00015311 ETH
149000162022-06-03 23:40:44838 days ago1654299644
0xC3D6938E...C6B1343F1
0.00035843 ETH
149000162022-06-03 23:40:44838 days ago1654299644
0xC3D6938E...C6B1343F1
0.00035843 ETH
149000162022-06-03 23:40:44838 days ago1654299644
0xC3D6938E...C6B1343F1
0.00143375 ETH
148935092022-06-02 22:18:44839 days ago1654208324
0xC3D6938E...C6B1343F1
0.00463792 ETH
148935092022-06-02 22:18:44839 days ago1654208324
0xC3D6938E...C6B1343F1
0.00081834 ETH
148935092022-06-02 22:18:44839 days ago1654208324
0xC3D6938E...C6B1343F1
0.00190978 ETH
148935092022-06-02 22:18:44839 days ago1654208324
0xC3D6938E...C6B1343F1
0.00190978 ETH
148935092022-06-02 22:18:44839 days ago1654208324
0xC3D6938E...C6B1343F1
0.00763915 ETH
148854102022-06-01 14:46:20841 days ago1654094780
0xC3D6938E...C6B1343F1
0.00297051 ETH
148854102022-06-01 14:46:20841 days ago1654094780
0xC3D6938E...C6B1343F1
0.00052345 ETH
148854102022-06-01 14:46:20841 days ago1654094780
0xC3D6938E...C6B1343F1
0.00122353 ETH
148854102022-06-01 14:46:20841 days ago1654094780
0xC3D6938E...C6B1343F1
0.00122353 ETH
148854102022-06-01 14:46:20841 days ago1654094780
0xC3D6938E...C6B1343F1
0.00489412 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TehDiamondOne

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-01
*/

/**
*/

/*
"You are a diamond, unbreakable if it is so, and broken, in any shape, remains still a diamond."
*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

}  

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

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

contract TehDiamondOne is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant _tTotal = 1e10 * 10**9;
    
    uint256 private _buyFourFee = 2;
    uint256 private _previousBuyFourFee = _buyFourFee;
    uint256 private _buyLiquidityFee = 1;
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    uint256 private _buyRewardFee = 1;
    uint256 private _previousBuyRewardFee = _buyRewardFee;
    
    uint256 private _sellFourFee = 2;
    uint256 private _previousSellFourFee = _sellFourFee;
    uint256 private _sellLiquidityFee = 1;
    uint256 private _previousSellLiquidityFee = _sellLiquidityFee;
    uint256 private _sellRewardFee = 1;
    uint256 private _previousSellRewardFee = _sellRewardFee;

    uint256 private tokensForReward;
    uint256 private tokensForFour;
    uint256 private tokensForLiquidity;

    address payable private _rewardWallet;
    address payable private _FourWallet;
    address payable private _liquidityWallet;
    
    string private constant _name = "Teh Diamond One";
    string private constant _symbol = "Diamond 1";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private tradingActiveBlock = 0; // 0 means trading is not active
    uint256 private blocksToBlacklist = 0;
    uint256 private _maxBuyAmount = _tTotal;
    uint256 private _maxSellAmount = _tTotal;
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private swapTokensAtAmount = 0;
    
    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event MaxSellAmountUpdated(uint _maxSellAmount);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _FourWallet = payable(0x1c9De1E2af3809F38BF2a995C38B10194Ed6dC5a);
        _liquidityWallet = payable(address(0xdead));
        _rewardWallet = payable(0x1c9De1E2af3809F38BF2a995C38B10194Ed6dC5a);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_FourWallet] = true;
        _isExcludedFromFee[_liquidityWallet] = true;
        _isExcludedFromFee[_rewardWallet] = true;
        emit Transfer(address(0xd7544f278Fd3ccd70D45A8f8c1f5985E5B9A1D6d), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function setSwapEnabled(bool onoff) external onlyOwner(){
        swapEnabled = onoff;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFee = false;
        bool shouldSwap = false;
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            require(!bots[from] && !bots[to]);

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from] && cooldownEnabled) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        _tokenTransfer(from,to,amount,takeFee, shouldSwap);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForReward + tokensForFour;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForReward = ethBalance.mul(tokensForReward).div(totalTokensToSwap);
        uint256 ethForFour = ethBalance.mul(tokensForFour).div(totalTokensToSwap);
        
        
        uint256 ethForLiquidity = ethBalance - ethForReward - ethForFour;
        
        
        tokensForLiquidity = 0;
        tokensForReward = 0;
        tokensForFour = 0;
        
        (success,) = address(_rewardWallet).call{value: ethForReward}("");
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
        
        (success,) = address(_FourWallet).call{value: address(this).balance}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityWallet,
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _FourWallet.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxBuyAmount = 5e7 * 10**9;
        _maxSellAmount = 5e7 * 10**9;
        _maxWalletAmount = 1e8 * 10**9;
        swapTokensAtAmount = 5e6 * 10**9;
        tradingOpen = true;
        tradingActiveBlock = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setMaxBuyAmount(uint256 maxBuy) public onlyOwner {
        _maxBuyAmount = maxBuy;
    }

    function setMaxSellAmount(uint256 maxSell) public onlyOwner {
        _maxSellAmount = maxSell;
    }
    
    function setMaxWalletAmount(uint256 maxToken) public onlyOwner {
        _maxWalletAmount = maxToken;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount) public onlyOwner {
        require(newAmount >= 1e3 * 10**9, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= 5e6 * 10**9, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function setFourWallet(address FourWallet) public onlyOwner() {
        require(FourWallet != address(0), "FourWallet address cannot be 0");
        _isExcludedFromFee[_FourWallet] = false;
        _FourWallet = payable(FourWallet);
        _isExcludedFromFee[_FourWallet] = true;
    }

    function setRewardWallet(address rewardWallet) public onlyOwner() {
        require(rewardWallet != address(0), "rewardWallet address cannot be 0");
        _isExcludedFromFee[_rewardWallet] = false;
        _rewardWallet = payable(rewardWallet);
        _isExcludedFromFee[_rewardWallet] = true;
    }

    function setLiquidityWallet(address liquidityWallet) public onlyOwner() {
        require(liquidityWallet != address(0), "liquidityWallet address cannot be 0");
        _isExcludedFromFee[_liquidityWallet] = false;
        _liquidityWallet = payable(liquidityWallet);
        _isExcludedFromFee[_liquidityWallet] = true;
    }

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

    function setBuyFee(uint256 buyFourFee, uint256 buyLiquidityFee, uint256 buyRewardFee) external onlyOwner {
        require(buyFourFee + buyLiquidityFee + buyRewardFee <= 30, "Must keep buy taxes below 30%");
        _buyFourFee = buyFourFee;
        _buyLiquidityFee = buyLiquidityFee;
        _buyRewardFee = buyRewardFee;
    }

    function setSellFee(uint256 sellFourFee, uint256 sellLiquidityFee, uint256 sellRewardFee) external onlyOwner {
        require(sellFourFee + sellLiquidityFee + sellRewardFee <= 60, "Must keep sell taxes below 60%");
        _sellFourFee = sellFourFee;
        _sellLiquidityFee = sellLiquidityFee;
        _sellRewardFee = sellRewardFee;
    }

    function setBlocksToBlacklist(uint256 blocks) public onlyOwner {
        blocksToBlacklist = blocks;
    }

    function removeAllFee() private {
        if(_buyFourFee == 0 && _buyLiquidityFee == 0 && _buyRewardFee == 0 && _sellFourFee == 0 && _sellLiquidityFee == 0 && _sellRewardFee == 0) return;
        
        _previousBuyFourFee = _buyFourFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousBuyRewardFee = _buyRewardFee;
        _previousSellFourFee = _sellFourFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        _previousSellRewardFee = _sellRewardFee;
        
        _buyFourFee = 0;
        _buyLiquidityFee = 0;
        _buyRewardFee = 0;
        _sellFourFee = 0;
        _sellLiquidityFee = 0;
        _sellRewardFee = 0;
    }
    
    function restoreAllFee() private {
        _buyFourFee = _previousBuyFourFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _buyRewardFee = _previousBuyRewardFee;
        _sellFourFee = _previousSellFourFee;
        _sellLiquidityFee = _previousSellLiquidityFee;
        _sellRewardFee = _previousSellRewardFee;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 _totalFees;
        uint256 FourFee;
        uint256 liqFee;
        uint256 rwrdFee;
        if(tradingActiveBlock + blocksToBlacklist >= block.number){
            _totalFees = 99;
            liqFee = 92;
        } else {
            _totalFees = _getTotalFees(isSell);
            if (isSell) {
                FourFee = _sellFourFee;
                liqFee = _sellLiquidityFee;
                rwrdFee = _sellRewardFee;
            } else {
                FourFee = _buyFourFee;
                liqFee = _buyLiquidityFee;
                rwrdFee = _buyRewardFee;
            }
        }

        uint256 fees = amount.mul(_totalFees).div(100);
        tokensForReward += fees * rwrdFee / _totalFees;
        tokensForFour += fees * FourFee / _totalFees;
        tokensForLiquidity += fees * liqFee / _totalFees;
            
        if(fees > 0) {
            _transferStandard(sender, address(this), fees);
        }
            
        return amount -= fees;
    }

    receive() external payable {}
    
    function manualswap() public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() public onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        require(!tradingOpen, "Can only withdraw if trading hasn't started");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function _getTotalFees(bool isSell) private view returns(uint256) {
        if (isSell) {
            return _sellFourFee + _sellLiquidityFee + _sellRewardFee;
        }
        return _buyFourFee + _buyLiquidityFee + _buyRewardFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setBlocksToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFourFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyRewardFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"FourWallet","type":"address"}],"name":"setFourWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellFourFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellRewardFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260026007556007546008556001600955600954600a556001600b55600b54600c556002600d55600d54600e556001600f55600f5460105560016011556011546012556000601a60166101000a81548160ff0219169083151502179055506000601a60176101000a81548160ff0219169083151502179055506000601a60186101000a81548160ff0219169083151502179055506000601b556000601c55678ac7230489e80000601d55678ac7230489e80000601e55678ac7230489e80000601f556000602055348015620000d757600080fd5b506000620000ea6200059560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350731c9de1e2af3809f38bf2a995c38b10194ed6dc5a601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731c9de1e2af3809f38bf2a995c38b10194ed6dc5a601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550678ac7230489e8000060026000620002926200059560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620002e66200059d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200050d6200059560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673d7544f278fd3ccd70d45a8f8c1f5985e5b9a1d6d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620005879190620005d7565b60405180910390a3620005fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005d181620005f4565b82525050565b6000602082019050620005ee6000830184620005c6565b92915050565b6000819050919050565b61533c806200060e6000396000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063c9567bf911610095578063e99c9d0911610064578063e99c9d0914610661578063ea2f0b371461068a578063f34eb0b8146106b3578063f5648a4f146106dc576101e3565b8063c9567bf9146105bb578063dd62ed3e146105d2578063e01af92c1461060f578063e6f7ef4d14610638576101e3565b8063afa4f3b2116100d1578063afa4f3b214610529578063b406049314610552578063b515566a1461057b578063c3c8cd80146105a4576101e3565b8063715018a61461047f5780638da5cb5b1461049657806395d89b41146104c1578063a9059cbb146104ec576101e3565b806327a14fc21161017a5780635932ead1116101495780635932ead1146103d95780635958621e146104025780636fc3eaec1461042b57806370a0823114610442576101e3565b806327a14fc214610333578063296f0a0c1461035c578063313ce56714610385578063437823ec146103b0576101e3565b80631d865c30116101b65780631d865c301461027b57806323b872dd146102a457806325519cf2146102e1578063273123b71461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6106f3565b60405161020a919061465d565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190613f71565b610730565b6040516102479190614642565b60405180910390f35b34801561025c57600080fd5b5061026561074e565b60405161027291906148ff565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190614069565b61075e565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190613f22565b610867565b6040516102d89190614642565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190614069565b610940565b005b34801561031657600080fd5b50610331600480360381019061032c9190613e94565b610a49565b005b34801561033f57600080fd5b5061035a60048036038101906103559190614040565b610b39565b005b34801561036857600080fd5b50610383600480360381019061037e9190613e94565b610bd8565b005b34801561039157600080fd5b5061039a610e15565b6040516103a791906149ab565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613e94565b610e1e565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190613fee565b610f0e565b005b34801561040e57600080fd5b5061042960048036038101906104249190613e94565b610fc0565b005b34801561043757600080fd5b506104406111fd565b005b34801561044e57600080fd5b5061046960048036038101906104649190613e94565b6112a3565b60405161047691906148ff565b60405180910390f35b34801561048b57600080fd5b506104946112ec565b005b3480156104a257600080fd5b506104ab61143f565b6040516104b89190614513565b60405180910390f35b3480156104cd57600080fd5b506104d6611468565b6040516104e3919061465d565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190613f71565b6114a5565b6040516105209190614642565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190614040565b6114c3565b005b34801561055e57600080fd5b5061057960048036038101906105749190613e94565b6115f4565b005b34801561058757600080fd5b506105a2600480360381019061059d9190613fad565b611831565b005b3480156105b057600080fd5b506105b9611981565b005b3480156105c757600080fd5b506105d0611a2f565b005b3480156105de57600080fd5b506105f960048036038101906105f49190613ee6565b611fbb565b60405161060691906148ff565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190613fee565b612042565b005b34801561064457600080fd5b5061065f600480360381019061065a9190614040565b6120f4565b005b34801561066d57600080fd5b5061068860048036038101906106839190614040565b612193565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613e94565b612232565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190614040565b612322565b005b3480156106e857600080fd5b506106f16123c1565b005b60606040518060400160405280600f81526020017f546568204469616d6f6e64204f6e650000000000000000000000000000000000815250905090565b600061074461073d612517565b848461251f565b6001905092915050565b6000678ac7230489e80000905090565b610766612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea9061479f565b60405180910390fd5b603c8183856108029190614a77565b61080c9190614a77565b111561084d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610844906147bf565b60405180910390fd5b82600d8190555081600f8190555080601181905550505050565b60006108748484846126ea565b61093584610880612517565b610930856040518060600160405280602881526020016152df60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108e6612517565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a9092919063ffffffff16565b61251f565b600190509392505050565b610948612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc9061479f565b60405180910390fd5b601e8183856109e49190614a77565b6109ee9190614a77565b1115610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a269061477f565b60405180910390fd5b826007819055508160098190555080600b81905550505050565b610a51612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad59061479f565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b41612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc59061479f565b60405180910390fd5b80601f8190555050565b610be0612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c649061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd4906147ff565b60405180910390fd5b600060046000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610e26612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061479f565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f16612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a9061479f565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b610fc8612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c9061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc9061487f565b60405180910390fd5b600060046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611205612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112899061479f565b60405180910390fd5b60004790506112a081612fee565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112f4612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4469616d6f6e6420310000000000000000000000000000000000000000000000815250905090565b60006114b96114b2612517565b84846126ea565b6001905092915050565b6114cb612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f9061479f565b60405180910390fd5b64e8d4a510008110156115a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611597906146df565b60405180910390fd5b6611c37937e080008111156115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e1906146ff565b60405180910390fd5b8060208190555050565b6115fc612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116809061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f0906148bf565b60405180910390fd5b600060046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611839612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bd9061479f565b60405180910390fd5b60005b815181101561197d57600160056000848481518110611911577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197590614c8d565b9150506118c9565b5050565b611989612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061479f565b60405180910390fd5b6000611a21306112a3565b9050611a2c8161305a565b50565b611a37612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abb9061479f565b60405180910390fd5b601a60149054906101000a900460ff1615611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b9061485f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba330601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e8000061251f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611be957600080fd5b505afa158015611bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c219190613ebd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8357600080fd5b505afa158015611c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbb9190613ebd565b6040518363ffffffff1660e01b8152600401611cd892919061452e565b602060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a9190613ebd565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611db3306112a3565b600080611dbe61143f565b426040518863ffffffff1660e01b8152600401611de0969594939291906145e1565b6060604051808303818588803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e3291906140b8565b5050506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff02191690831515021790555066b1a2bc2ec50000601d8190555066b1a2bc2ec50000601e8190555067016345785d8a0000601f819055506611c37937e080006020819055506001601a60146101000a81548160ff02191690831515021790555043601b81905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f65929190614557565b602060405180830381600087803b158015611f7f57600080fd5b505af1158015611f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb79190614017565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61204a612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce9061479f565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b6120fc612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809061479f565b60405180910390fd5b80601c8190555050565b61219b612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f9061479f565b60405180910390fd5b80601e8190555050565b61223a612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be9061479f565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61232a612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae9061479f565b60405180910390fd5b80601d8190555050565b6123c9612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d9061479f565b60405180910390fd5b601a60149054906101000a900460ff16156124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d906148df565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516124cc906144fe565b60006040518083038185875af1925050503d8060008114612509576040519150601f19603f3d011682016040523d82523d6000602084013e61250e565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125869061483f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f69061469f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126dd91906148ff565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519061481f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c19061467f565b60405180910390fd5b6000811161280d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612804906147df565b60405180910390fd5b60008061281861143f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612886575061285661143f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128bf5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128f9575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129125750601a60159054906101000a900460ff16155b15612d8857600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129bb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6129c457600080fd5b60019150601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015612a735750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac95750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ae15750601a60189054906101000a900460ff165b15612c1f57601d54831115612b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b229061473f565b60405180910390fd5b601f5483612b38866112a3565b612b429190614a77565b1115612b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7a9061471f565b60405180910390fd5b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612bce57600080fd5b601e42612bdb9190614a77565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612cca5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d205750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d385750601a60189054906101000a900460ff165b15612d8757601e54831115612d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d799061489f565b60405180910390fd5b600190505b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e295750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e3357600091505b6000612e3e306112a3565b9050600060205482118015612e505750825b9050808015612e6b5750601a60179054906101000a900460ff165b8015612e845750601a60159054906101000a900460ff16155b8015612eda5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f305750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f74576001601a60156101000a81548160ff021916908315150217905550612f58613354565b6000601a60156101000a81548160ff0219169083151502179055505b612f81878787878761363b565b50505050505050565b6000838311158290612fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc9919061465d565b60405180910390fd5b5060008385612fe19190614b58565b9050809150509392505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613056573d6000803e3d6000fd5b5050565b6001601a60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156130b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130e65781602001602082028036833780820191505090505b5090503081600081518110613124577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131c657600080fd5b505afa1580156131da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fe9190613ebd565b81600181518110613238577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061329f30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461251f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161330395949392919061491a565b600060405180830381600087803b15801561331d57600080fd5b505af1158015613331573d6000803e3d6000fd5b50505050506000601a60166101000a81548160ff02191690831515021790555050565b600061335f306112a3565b905060006014546013546015546133769190614a77565b6133809190614a77565b90506000808314806133925750600082145b1561339f57505050613639565b600a6020546133ae9190614afe565b8311156133c757600a6020546133c49190614afe565b92505b6000600283601554866133da9190614afe565b6133e49190614acd565b6133ee9190614acd565b90506000613405828661367b90919063ffffffff16565b905060004790506134158261305a565b600061342a824761367b90919063ffffffff16565b9050600061345587613447601354856136c590919063ffffffff16565b61374090919063ffffffff16565b9050600061348088613472601454866136c590919063ffffffff16565b61374090919063ffffffff16565b905060008183856134919190614b58565b61349b9190614b58565b9050600060158190555060006013819055506000601481905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516134fb906144fe565b60006040518083038185875af1925050503d8060008114613538576040519150601f19603f3d011682016040523d82523d6000602084013e61353d565b606091505b5050809850506000871180156135535750600081115b156135a057613562878261378a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260155460405161359793929190614974565b60405180910390a15b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516135e6906144fe565b60006040518083038185875af1925050503d8060008114613623576040519150601f19603f3d011682016040523d82523d6000602084013e613628565b606091505b505080985050505050505050505050505b565b8161364d57613648613899565b61365b565b613658858483613958565b92505b613666858585613aa2565b8161367457613673613c36565b5b5050505050565b60006136bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f8a565b905092915050565b6000808314156136d8576000905061373a565b600082846136e69190614afe565b90508284826136f59190614acd565b14613735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372c9061475f565b60405180910390fd5b809150505b92915050565b600061378283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c6e565b905092915050565b6137b730601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461251f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161384096959493929190614580565b6060604051808303818588803b15801561385957600080fd5b505af115801561386d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061389291906140b8565b5050505050565b60006007541480156138ad57506000600954145b80156138bb57506000600b54145b80156138c957506000600d54145b80156138d757506000600f54145b80156138e557506000601154145b156138ef57613956565b600754600881905550600954600a81905550600b54600c81905550600d54600e81905550600f54601081905550601154601281905550600060078190555060006009819055506000600b819055506000600d819055506000600f8190555060006011819055505b565b600080600080600043601c54601b546139719190614a77565b106139835760639350605c91506139b9565b61398c86613cd1565b935085156139a857600d549250600f54915060115490506139b8565b60075492506009549150600b5490505b5b60006139e160646139d3878b6136c590919063ffffffff16565b61374090919063ffffffff16565b90508482826139f09190614afe565b6139fa9190614acd565b60136000828254613a0b9190614a77565b92505081905550848482613a1f9190614afe565b613a299190614acd565b60146000828254613a3a9190614a77565b92505081905550848382613a4e9190614afe565b613a589190614acd565b60156000828254613a699190614a77565b925050819055506000811115613a8557613a84893083613aa2565b5b8088613a919190614b58565b975087955050505050509392505050565b613af481600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367b90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b8981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d2290919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c2991906148ff565b60405180910390a3505050565b600854600781905550600a54600981905550600c54600b81905550600e54600d81905550601054600f81905550601254601181905550565b60008083118290613cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cac919061465d565b60405180910390fd5b5060008385613cc49190614acd565b9050809150509392505050565b60008115613cfd57601154600f54600d54613cec9190614a77565b613cf69190614a77565b9050613d1d565b600b54600954600754613d109190614a77565b613d1a9190614a77565b90505b919050565b6000808284613d319190614a77565b905083811015613d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6d906146bf565b60405180910390fd5b8091505092915050565b6000613d93613d8e846149eb565b6149c6565b90508083825260208201905082856020860282011115613db257600080fd5b60005b85811015613de25781613dc88882613dec565b845260208401935060208301925050600181019050613db5565b5050509392505050565b600081359050613dfb81615299565b92915050565b600081519050613e1081615299565b92915050565b600082601f830112613e2757600080fd5b8135613e37848260208601613d80565b91505092915050565b600081359050613e4f816152b0565b92915050565b600081519050613e64816152b0565b92915050565b600081359050613e79816152c7565b92915050565b600081519050613e8e816152c7565b92915050565b600060208284031215613ea657600080fd5b6000613eb484828501613dec565b91505092915050565b600060208284031215613ecf57600080fd5b6000613edd84828501613e01565b91505092915050565b60008060408385031215613ef957600080fd5b6000613f0785828601613dec565b9250506020613f1885828601613dec565b9150509250929050565b600080600060608486031215613f3757600080fd5b6000613f4586828701613dec565b9350506020613f5686828701613dec565b9250506040613f6786828701613e6a565b9150509250925092565b60008060408385031215613f8457600080fd5b6000613f9285828601613dec565b9250506020613fa385828601613e6a565b9150509250929050565b600060208284031215613fbf57600080fd5b600082013567ffffffffffffffff811115613fd957600080fd5b613fe584828501613e16565b91505092915050565b60006020828403121561400057600080fd5b600061400e84828501613e40565b91505092915050565b60006020828403121561402957600080fd5b600061403784828501613e55565b91505092915050565b60006020828403121561405257600080fd5b600061406084828501613e6a565b91505092915050565b60008060006060848603121561407e57600080fd5b600061408c86828701613e6a565b935050602061409d86828701613e6a565b92505060406140ae86828701613e6a565b9150509250925092565b6000806000606084860312156140cd57600080fd5b60006140db86828701613e7f565b93505060206140ec86828701613e7f565b92505060406140fd86828701613e7f565b9150509250925092565b6000614113838361412e565b60208301905092915050565b61412881614be1565b82525050565b61413781614b8c565b82525050565b61414681614b8c565b82525050565b600061415782614a27565b6141618185614a4a565b935061416c83614a17565b8060005b8381101561419d5781516141848882614107565b975061418f83614a3d565b925050600181019050614170565b5085935050505092915050565b6141b381614b9e565b82525050565b6141c281614bf3565b82525050565b60006141d382614a32565b6141dd8185614a66565b93506141ed818560208601614c29565b6141f681614d63565b840191505092915050565b600061420e602383614a66565b915061421982614d74565b604082019050919050565b6000614231602283614a66565b915061423c82614dc3565b604082019050919050565b6000614254601b83614a66565b915061425f82614e12565b602082019050919050565b6000614277603583614a66565b915061428282614e3b565b604082019050919050565b600061429a603483614a66565b91506142a582614e8a565b604082019050919050565b60006142bd602483614a66565b91506142c882614ed9565b604082019050919050565b60006142e0602983614a66565b91506142eb82614f28565b604082019050919050565b6000614303602183614a66565b915061430e82614f77565b604082019050919050565b6000614326601d83614a66565b915061433182614fc6565b602082019050919050565b6000614349602083614a66565b915061435482614fef565b602082019050919050565b600061436c601e83614a66565b915061437782615018565b602082019050919050565b600061438f602983614a66565b915061439a82615041565b604082019050919050565b60006143b2602383614a66565b91506143bd82615090565b604082019050919050565b60006143d5602583614a66565b91506143e0826150df565b604082019050919050565b60006143f8600083614a5b565b91506144038261512e565b600082019050919050565b600061441b602483614a66565b915061442682615131565b604082019050919050565b600061443e601783614a66565b915061444982615180565b602082019050919050565b6000614461602083614a66565b915061446c826151a9565b602082019050919050565b6000614484602a83614a66565b915061448f826151d2565b604082019050919050565b60006144a7601e83614a66565b91506144b282615221565b602082019050919050565b60006144ca602b83614a66565b91506144d58261524a565b604082019050919050565b6144e981614bca565b82525050565b6144f881614bd4565b82525050565b6000614509826143eb565b9150819050919050565b6000602082019050614528600083018461413d565b92915050565b6000604082019050614543600083018561413d565b614550602083018461413d565b9392505050565b600060408201905061456c600083018561413d565b61457960208301846144e0565b9392505050565b600060c082019050614595600083018961413d565b6145a260208301886144e0565b6145af60408301876141b9565b6145bc60608301866141b9565b6145c9608083018561411f565b6145d660a08301846144e0565b979650505050505050565b600060c0820190506145f6600083018961413d565b61460360208301886144e0565b61461060408301876141b9565b61461d60608301866141b9565b61462a608083018561413d565b61463760a08301846144e0565b979650505050505050565b600060208201905061465760008301846141aa565b92915050565b6000602082019050818103600083015261467781846141c8565b905092915050565b6000602082019050818103600083015261469881614201565b9050919050565b600060208201905081810360008301526146b881614224565b9050919050565b600060208201905081810360008301526146d881614247565b9050919050565b600060208201905081810360008301526146f88161426a565b9050919050565b600060208201905081810360008301526147188161428d565b9050919050565b60006020820190508181036000830152614738816142b0565b9050919050565b60006020820190508181036000830152614758816142d3565b9050919050565b60006020820190508181036000830152614778816142f6565b9050919050565b6000602082019050818103600083015261479881614319565b9050919050565b600060208201905081810360008301526147b88161433c565b9050919050565b600060208201905081810360008301526147d88161435f565b9050919050565b600060208201905081810360008301526147f881614382565b9050919050565b60006020820190508181036000830152614818816143a5565b9050919050565b60006020820190508181036000830152614838816143c8565b9050919050565b600060208201905081810360008301526148588161440e565b9050919050565b6000602082019050818103600083015261487881614431565b9050919050565b6000602082019050818103600083015261489881614454565b9050919050565b600060208201905081810360008301526148b881614477565b9050919050565b600060208201905081810360008301526148d88161449a565b9050919050565b600060208201905081810360008301526148f8816144bd565b9050919050565b600060208201905061491460008301846144e0565b92915050565b600060a08201905061492f60008301886144e0565b61493c60208301876141b9565b818103604083015261494e818661414c565b905061495d606083018561413d565b61496a60808301846144e0565b9695505050505050565b600060608201905061498960008301866144e0565b61499660208301856144e0565b6149a360408301846144e0565b949350505050565b60006020820190506149c060008301846144ef565b92915050565b60006149d06149e1565b90506149dc8282614c5c565b919050565b6000604051905090565b600067ffffffffffffffff821115614a0657614a05614d34565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a8282614bca565b9150614a8d83614bca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ac257614ac1614cd6565b5b828201905092915050565b6000614ad882614bca565b9150614ae383614bca565b925082614af357614af2614d05565b5b828204905092915050565b6000614b0982614bca565b9150614b1483614bca565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b4d57614b4c614cd6565b5b828202905092915050565b6000614b6382614bca565b9150614b6e83614bca565b925082821015614b8157614b80614cd6565b5b828203905092915050565b6000614b9782614baa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614bec82614c05565b9050919050565b6000614bfe82614bca565b9050919050565b6000614c1082614c17565b9050919050565b6000614c2282614baa565b9050919050565b60005b83811015614c47578082015181840152602081019050614c2c565b83811115614c56576000848401525b50505050565b614c6582614d63565b810181811067ffffffffffffffff82111715614c8457614c83614d34565b5b80604052505050565b6000614c9882614bca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ccb57614cca614cd6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720333025000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203630250000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f72657761726457616c6c657420616464726573732063616e6e6f742062652030600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f466f757257616c6c657420616464726573732063616e6e6f7420626520300000600082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b6152a281614b8c565b81146152ad57600080fd5b50565b6152b981614b9e565b81146152c457600080fd5b50565b6152d081614bca565b81146152db57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cf7e919b5dfbe42df41158c9a7c84a7c0679f8d489eaaf0c930b594f68d89ad364736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063c9567bf911610095578063e99c9d0911610064578063e99c9d0914610661578063ea2f0b371461068a578063f34eb0b8146106b3578063f5648a4f146106dc576101e3565b8063c9567bf9146105bb578063dd62ed3e146105d2578063e01af92c1461060f578063e6f7ef4d14610638576101e3565b8063afa4f3b2116100d1578063afa4f3b214610529578063b406049314610552578063b515566a1461057b578063c3c8cd80146105a4576101e3565b8063715018a61461047f5780638da5cb5b1461049657806395d89b41146104c1578063a9059cbb146104ec576101e3565b806327a14fc21161017a5780635932ead1116101495780635932ead1146103d95780635958621e146104025780636fc3eaec1461042b57806370a0823114610442576101e3565b806327a14fc214610333578063296f0a0c1461035c578063313ce56714610385578063437823ec146103b0576101e3565b80631d865c30116101b65780631d865c301461027b57806323b872dd146102a457806325519cf2146102e1578063273123b71461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6106f3565b60405161020a919061465d565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190613f71565b610730565b6040516102479190614642565b60405180910390f35b34801561025c57600080fd5b5061026561074e565b60405161027291906148ff565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190614069565b61075e565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190613f22565b610867565b6040516102d89190614642565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190614069565b610940565b005b34801561031657600080fd5b50610331600480360381019061032c9190613e94565b610a49565b005b34801561033f57600080fd5b5061035a60048036038101906103559190614040565b610b39565b005b34801561036857600080fd5b50610383600480360381019061037e9190613e94565b610bd8565b005b34801561039157600080fd5b5061039a610e15565b6040516103a791906149ab565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613e94565b610e1e565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190613fee565b610f0e565b005b34801561040e57600080fd5b5061042960048036038101906104249190613e94565b610fc0565b005b34801561043757600080fd5b506104406111fd565b005b34801561044e57600080fd5b5061046960048036038101906104649190613e94565b6112a3565b60405161047691906148ff565b60405180910390f35b34801561048b57600080fd5b506104946112ec565b005b3480156104a257600080fd5b506104ab61143f565b6040516104b89190614513565b60405180910390f35b3480156104cd57600080fd5b506104d6611468565b6040516104e3919061465d565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190613f71565b6114a5565b6040516105209190614642565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190614040565b6114c3565b005b34801561055e57600080fd5b5061057960048036038101906105749190613e94565b6115f4565b005b34801561058757600080fd5b506105a2600480360381019061059d9190613fad565b611831565b005b3480156105b057600080fd5b506105b9611981565b005b3480156105c757600080fd5b506105d0611a2f565b005b3480156105de57600080fd5b506105f960048036038101906105f49190613ee6565b611fbb565b60405161060691906148ff565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190613fee565b612042565b005b34801561064457600080fd5b5061065f600480360381019061065a9190614040565b6120f4565b005b34801561066d57600080fd5b5061068860048036038101906106839190614040565b612193565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613e94565b612232565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190614040565b612322565b005b3480156106e857600080fd5b506106f16123c1565b005b60606040518060400160405280600f81526020017f546568204469616d6f6e64204f6e650000000000000000000000000000000000815250905090565b600061074461073d612517565b848461251f565b6001905092915050565b6000678ac7230489e80000905090565b610766612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea9061479f565b60405180910390fd5b603c8183856108029190614a77565b61080c9190614a77565b111561084d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610844906147bf565b60405180910390fd5b82600d8190555081600f8190555080601181905550505050565b60006108748484846126ea565b61093584610880612517565b610930856040518060600160405280602881526020016152df60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108e6612517565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a9092919063ffffffff16565b61251f565b600190509392505050565b610948612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc9061479f565b60405180910390fd5b601e8183856109e49190614a77565b6109ee9190614a77565b1115610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a269061477f565b60405180910390fd5b826007819055508160098190555080600b81905550505050565b610a51612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad59061479f565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b41612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc59061479f565b60405180910390fd5b80601f8190555050565b610be0612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c649061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd4906147ff565b60405180910390fd5b600060046000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610e26612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061479f565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f16612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a9061479f565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b610fc8612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c9061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc9061487f565b60405180910390fd5b600060046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611205612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112899061479f565b60405180910390fd5b60004790506112a081612fee565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112f4612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4469616d6f6e6420310000000000000000000000000000000000000000000000815250905090565b60006114b96114b2612517565b84846126ea565b6001905092915050565b6114cb612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f9061479f565b60405180910390fd5b64e8d4a510008110156115a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611597906146df565b60405180910390fd5b6611c37937e080008111156115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e1906146ff565b60405180910390fd5b8060208190555050565b6115fc612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116809061479f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f0906148bf565b60405180910390fd5b600060046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611839612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bd9061479f565b60405180910390fd5b60005b815181101561197d57600160056000848481518110611911577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197590614c8d565b9150506118c9565b5050565b611989612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061479f565b60405180910390fd5b6000611a21306112a3565b9050611a2c8161305a565b50565b611a37612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abb9061479f565b60405180910390fd5b601a60149054906101000a900460ff1615611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b9061485f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba330601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e8000061251f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611be957600080fd5b505afa158015611bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c219190613ebd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8357600080fd5b505afa158015611c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbb9190613ebd565b6040518363ffffffff1660e01b8152600401611cd892919061452e565b602060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a9190613ebd565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611db3306112a3565b600080611dbe61143f565b426040518863ffffffff1660e01b8152600401611de0969594939291906145e1565b6060604051808303818588803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e3291906140b8565b5050506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff02191690831515021790555066b1a2bc2ec50000601d8190555066b1a2bc2ec50000601e8190555067016345785d8a0000601f819055506611c37937e080006020819055506001601a60146101000a81548160ff02191690831515021790555043601b81905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f65929190614557565b602060405180830381600087803b158015611f7f57600080fd5b505af1158015611f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb79190614017565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61204a612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce9061479f565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b6120fc612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809061479f565b60405180910390fd5b80601c8190555050565b61219b612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f9061479f565b60405180910390fd5b80601e8190555050565b61223a612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be9061479f565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61232a612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae9061479f565b60405180910390fd5b80601d8190555050565b6123c9612517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d9061479f565b60405180910390fd5b601a60149054906101000a900460ff16156124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d906148df565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516124cc906144fe565b60006040518083038185875af1925050503d8060008114612509576040519150601f19603f3d011682016040523d82523d6000602084013e61250e565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125869061483f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f69061469f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126dd91906148ff565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519061481f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c19061467f565b60405180910390fd5b6000811161280d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612804906147df565b60405180910390fd5b60008061281861143f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612886575061285661143f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128bf5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128f9575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156129125750601a60159054906101000a900460ff16155b15612d8857600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129bb5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6129c457600080fd5b60019150601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015612a735750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac95750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ae15750601a60189054906101000a900460ff165b15612c1f57601d54831115612b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b229061473f565b60405180910390fd5b601f5483612b38866112a3565b612b429190614a77565b1115612b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7a9061471f565b60405180910390fd5b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612bce57600080fd5b601e42612bdb9190614a77565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612cca5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d205750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d385750601a60189054906101000a900460ff165b15612d8757601e54831115612d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d799061489f565b60405180910390fd5b600190505b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e295750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e3357600091505b6000612e3e306112a3565b9050600060205482118015612e505750825b9050808015612e6b5750601a60179054906101000a900460ff165b8015612e845750601a60159054906101000a900460ff16155b8015612eda5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f305750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f74576001601a60156101000a81548160ff021916908315150217905550612f58613354565b6000601a60156101000a81548160ff0219169083151502179055505b612f81878787878761363b565b50505050505050565b6000838311158290612fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc9919061465d565b60405180910390fd5b5060008385612fe19190614b58565b9050809150509392505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613056573d6000803e3d6000fd5b5050565b6001601a60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156130b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130e65781602001602082028036833780820191505090505b5090503081600081518110613124577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131c657600080fd5b505afa1580156131da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fe9190613ebd565b81600181518110613238577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061329f30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461251f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161330395949392919061491a565b600060405180830381600087803b15801561331d57600080fd5b505af1158015613331573d6000803e3d6000fd5b50505050506000601a60166101000a81548160ff02191690831515021790555050565b600061335f306112a3565b905060006014546013546015546133769190614a77565b6133809190614a77565b90506000808314806133925750600082145b1561339f57505050613639565b600a6020546133ae9190614afe565b8311156133c757600a6020546133c49190614afe565b92505b6000600283601554866133da9190614afe565b6133e49190614acd565b6133ee9190614acd565b90506000613405828661367b90919063ffffffff16565b905060004790506134158261305a565b600061342a824761367b90919063ffffffff16565b9050600061345587613447601354856136c590919063ffffffff16565b61374090919063ffffffff16565b9050600061348088613472601454866136c590919063ffffffff16565b61374090919063ffffffff16565b905060008183856134919190614b58565b61349b9190614b58565b9050600060158190555060006013819055506000601481905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516134fb906144fe565b60006040518083038185875af1925050503d8060008114613538576040519150601f19603f3d011682016040523d82523d6000602084013e61353d565b606091505b5050809850506000871180156135535750600081115b156135a057613562878261378a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260155460405161359793929190614974565b60405180910390a15b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516135e6906144fe565b60006040518083038185875af1925050503d8060008114613623576040519150601f19603f3d011682016040523d82523d6000602084013e613628565b606091505b505080985050505050505050505050505b565b8161364d57613648613899565b61365b565b613658858483613958565b92505b613666858585613aa2565b8161367457613673613c36565b5b5050505050565b60006136bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f8a565b905092915050565b6000808314156136d8576000905061373a565b600082846136e69190614afe565b90508284826136f59190614acd565b14613735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372c9061475f565b60405180910390fd5b809150505b92915050565b600061378283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c6e565b905092915050565b6137b730601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461251f565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161384096959493929190614580565b6060604051808303818588803b15801561385957600080fd5b505af115801561386d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061389291906140b8565b5050505050565b60006007541480156138ad57506000600954145b80156138bb57506000600b54145b80156138c957506000600d54145b80156138d757506000600f54145b80156138e557506000601154145b156138ef57613956565b600754600881905550600954600a81905550600b54600c81905550600d54600e81905550600f54601081905550601154601281905550600060078190555060006009819055506000600b819055506000600d819055506000600f8190555060006011819055505b565b600080600080600043601c54601b546139719190614a77565b106139835760639350605c91506139b9565b61398c86613cd1565b935085156139a857600d549250600f54915060115490506139b8565b60075492506009549150600b5490505b5b60006139e160646139d3878b6136c590919063ffffffff16565b61374090919063ffffffff16565b90508482826139f09190614afe565b6139fa9190614acd565b60136000828254613a0b9190614a77565b92505081905550848482613a1f9190614afe565b613a299190614acd565b60146000828254613a3a9190614a77565b92505081905550848382613a4e9190614afe565b613a589190614acd565b60156000828254613a699190614a77565b925050819055506000811115613a8557613a84893083613aa2565b5b8088613a919190614b58565b975087955050505050509392505050565b613af481600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367b90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b8981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d2290919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c2991906148ff565b60405180910390a3505050565b600854600781905550600a54600981905550600c54600b81905550600e54600d81905550601054600f81905550601254601181905550565b60008083118290613cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cac919061465d565b60405180910390fd5b5060008385613cc49190614acd565b9050809150509392505050565b60008115613cfd57601154600f54600d54613cec9190614a77565b613cf69190614a77565b9050613d1d565b600b54600954600754613d109190614a77565b613d1a9190614a77565b90505b919050565b6000808284613d319190614a77565b905083811015613d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6d906146bf565b60405180910390fd5b8091505092915050565b6000613d93613d8e846149eb565b6149c6565b90508083825260208201905082856020860282011115613db257600080fd5b60005b85811015613de25781613dc88882613dec565b845260208401935060208301925050600181019050613db5565b5050509392505050565b600081359050613dfb81615299565b92915050565b600081519050613e1081615299565b92915050565b600082601f830112613e2757600080fd5b8135613e37848260208601613d80565b91505092915050565b600081359050613e4f816152b0565b92915050565b600081519050613e64816152b0565b92915050565b600081359050613e79816152c7565b92915050565b600081519050613e8e816152c7565b92915050565b600060208284031215613ea657600080fd5b6000613eb484828501613dec565b91505092915050565b600060208284031215613ecf57600080fd5b6000613edd84828501613e01565b91505092915050565b60008060408385031215613ef957600080fd5b6000613f0785828601613dec565b9250506020613f1885828601613dec565b9150509250929050565b600080600060608486031215613f3757600080fd5b6000613f4586828701613dec565b9350506020613f5686828701613dec565b9250506040613f6786828701613e6a565b9150509250925092565b60008060408385031215613f8457600080fd5b6000613f9285828601613dec565b9250506020613fa385828601613e6a565b9150509250929050565b600060208284031215613fbf57600080fd5b600082013567ffffffffffffffff811115613fd957600080fd5b613fe584828501613e16565b91505092915050565b60006020828403121561400057600080fd5b600061400e84828501613e40565b91505092915050565b60006020828403121561402957600080fd5b600061403784828501613e55565b91505092915050565b60006020828403121561405257600080fd5b600061406084828501613e6a565b91505092915050565b60008060006060848603121561407e57600080fd5b600061408c86828701613e6a565b935050602061409d86828701613e6a565b92505060406140ae86828701613e6a565b9150509250925092565b6000806000606084860312156140cd57600080fd5b60006140db86828701613e7f565b93505060206140ec86828701613e7f565b92505060406140fd86828701613e7f565b9150509250925092565b6000614113838361412e565b60208301905092915050565b61412881614be1565b82525050565b61413781614b8c565b82525050565b61414681614b8c565b82525050565b600061415782614a27565b6141618185614a4a565b935061416c83614a17565b8060005b8381101561419d5781516141848882614107565b975061418f83614a3d565b925050600181019050614170565b5085935050505092915050565b6141b381614b9e565b82525050565b6141c281614bf3565b82525050565b60006141d382614a32565b6141dd8185614a66565b93506141ed818560208601614c29565b6141f681614d63565b840191505092915050565b600061420e602383614a66565b915061421982614d74565b604082019050919050565b6000614231602283614a66565b915061423c82614dc3565b604082019050919050565b6000614254601b83614a66565b915061425f82614e12565b602082019050919050565b6000614277603583614a66565b915061428282614e3b565b604082019050919050565b600061429a603483614a66565b91506142a582614e8a565b604082019050919050565b60006142bd602483614a66565b91506142c882614ed9565b604082019050919050565b60006142e0602983614a66565b91506142eb82614f28565b604082019050919050565b6000614303602183614a66565b915061430e82614f77565b604082019050919050565b6000614326601d83614a66565b915061433182614fc6565b602082019050919050565b6000614349602083614a66565b915061435482614fef565b602082019050919050565b600061436c601e83614a66565b915061437782615018565b602082019050919050565b600061438f602983614a66565b915061439a82615041565b604082019050919050565b60006143b2602383614a66565b91506143bd82615090565b604082019050919050565b60006143d5602583614a66565b91506143e0826150df565b604082019050919050565b60006143f8600083614a5b565b91506144038261512e565b600082019050919050565b600061441b602483614a66565b915061442682615131565b604082019050919050565b600061443e601783614a66565b915061444982615180565b602082019050919050565b6000614461602083614a66565b915061446c826151a9565b602082019050919050565b6000614484602a83614a66565b915061448f826151d2565b604082019050919050565b60006144a7601e83614a66565b91506144b282615221565b602082019050919050565b60006144ca602b83614a66565b91506144d58261524a565b604082019050919050565b6144e981614bca565b82525050565b6144f881614bd4565b82525050565b6000614509826143eb565b9150819050919050565b6000602082019050614528600083018461413d565b92915050565b6000604082019050614543600083018561413d565b614550602083018461413d565b9392505050565b600060408201905061456c600083018561413d565b61457960208301846144e0565b9392505050565b600060c082019050614595600083018961413d565b6145a260208301886144e0565b6145af60408301876141b9565b6145bc60608301866141b9565b6145c9608083018561411f565b6145d660a08301846144e0565b979650505050505050565b600060c0820190506145f6600083018961413d565b61460360208301886144e0565b61461060408301876141b9565b61461d60608301866141b9565b61462a608083018561413d565b61463760a08301846144e0565b979650505050505050565b600060208201905061465760008301846141aa565b92915050565b6000602082019050818103600083015261467781846141c8565b905092915050565b6000602082019050818103600083015261469881614201565b9050919050565b600060208201905081810360008301526146b881614224565b9050919050565b600060208201905081810360008301526146d881614247565b9050919050565b600060208201905081810360008301526146f88161426a565b9050919050565b600060208201905081810360008301526147188161428d565b9050919050565b60006020820190508181036000830152614738816142b0565b9050919050565b60006020820190508181036000830152614758816142d3565b9050919050565b60006020820190508181036000830152614778816142f6565b9050919050565b6000602082019050818103600083015261479881614319565b9050919050565b600060208201905081810360008301526147b88161433c565b9050919050565b600060208201905081810360008301526147d88161435f565b9050919050565b600060208201905081810360008301526147f881614382565b9050919050565b60006020820190508181036000830152614818816143a5565b9050919050565b60006020820190508181036000830152614838816143c8565b9050919050565b600060208201905081810360008301526148588161440e565b9050919050565b6000602082019050818103600083015261487881614431565b9050919050565b6000602082019050818103600083015261489881614454565b9050919050565b600060208201905081810360008301526148b881614477565b9050919050565b600060208201905081810360008301526148d88161449a565b9050919050565b600060208201905081810360008301526148f8816144bd565b9050919050565b600060208201905061491460008301846144e0565b92915050565b600060a08201905061492f60008301886144e0565b61493c60208301876141b9565b818103604083015261494e818661414c565b905061495d606083018561413d565b61496a60808301846144e0565b9695505050505050565b600060608201905061498960008301866144e0565b61499660208301856144e0565b6149a360408301846144e0565b949350505050565b60006020820190506149c060008301846144ef565b92915050565b60006149d06149e1565b90506149dc8282614c5c565b919050565b6000604051905090565b600067ffffffffffffffff821115614a0657614a05614d34565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a8282614bca565b9150614a8d83614bca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ac257614ac1614cd6565b5b828201905092915050565b6000614ad882614bca565b9150614ae383614bca565b925082614af357614af2614d05565b5b828204905092915050565b6000614b0982614bca565b9150614b1483614bca565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b4d57614b4c614cd6565b5b828202905092915050565b6000614b6382614bca565b9150614b6e83614bca565b925082821015614b8157614b80614cd6565b5b828203905092915050565b6000614b9782614baa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614bec82614c05565b9050919050565b6000614bfe82614bca565b9050919050565b6000614c1082614c17565b9050919050565b6000614c2282614baa565b9050919050565b60005b83811015614c47578082015181840152602081019050614c2c565b83811115614c56576000848401525b50505050565b614c6582614d63565b810181811067ffffffffffffffff82111715614c8457614c83614d34565b5b80604052505050565b6000614c9882614bca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ccb57614cca614cd6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720333025000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203630250000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f72657761726457616c6c657420616464726573732063616e6e6f742062652030600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f466f757257616c6c657420616464726573732063616e6e6f7420626520300000600082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b6152a281614b8c565b81146152ad57600080fd5b50565b6152b981614b9e565b81146152c457600080fd5b50565b6152d081614bca565b81146152db57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cf7e919b5dfbe42df41158c9a7c84a7c0679f8d489eaaf0c930b594f68d89ad364736f6c63430008040033

Deployed Bytecode Sourcemap

3636:17091:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6645:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7476:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6922:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16449:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7645:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16107:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17970:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14467:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15527:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6831:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15866:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7966:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15212:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20073:153;;;;;;;;;;;;;:::i;:::-;;7025:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2715:148;;;;;;;;;;;;;:::i;:::-;;2501:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6736:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7150:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14588:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14913:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14073:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19907:154;;;;;;;;;;;;;:::i;:::-;;13085:976;;;;;;;;;;;;;:::i;:::-;;7325:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8077:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16805:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14352:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15989:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14245:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20234:239;;;;;;;;;;;;;:::i;:::-;;6645:83;6682:13;6715:5;;;;;;;;;;;;;;;;;6708:12;;6645:83;:::o;7476:161::-;7551:4;7568:39;7577:12;:10;:12::i;:::-;7591:7;7600:6;7568:8;:39::i;:::-;7625:4;7618:11;;7476:161;;;;:::o;6922:95::-;6975:7;4042:12;6995:14;;6922:95;:::o;16449:348::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16627:2:::1;16610:13;16591:16;16577:11;:30;;;;:::i;:::-;:46;;;;:::i;:::-;:52;;16569:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;16690:11;16675:12;:26;;;;16732:16;16712:17;:36;;;;16776:13;16759:14;:30;;;;16449:348:::0;;;:::o;7645:313::-;7743:4;7760:36;7770:6;7778:9;7789:6;7760:9;:36::i;:::-;7807:121;7816:6;7824:12;:10;:12::i;:::-;7838:89;7876:6;7838:89;;;;;;;;;;;;;;;;;:11;:19;7850:6;7838:19;;;;;;;;;;;;;;;:33;7858:12;:10;:12::i;:::-;7838:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7807:8;:121::i;:::-;7946:4;7939:11;;7645:313;;;;;:::o;16107:334::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16278:2:::1;16262:12;16244:15;16231:10;:28;;;;:::i;:::-;:43;;;;:::i;:::-;:49;;16223:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;16339:10;16325:11;:24;;;;16379:15;16360:16;:34;;;;16421:12;16405:13;:28;;;;16107:334:::0;;;:::o;17970:88::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18045:5:::1;18030:4;:12;18035:6;18030:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;17970:88:::0;:::o;14467:109::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14560:8:::1;14541:16;:27;;;;14467:109:::0;:::o;15527:331::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15645:1:::1;15618:29;;:15;:29;;;;15610:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15737:5;15698:18;:36;15717:16;;;;;;;;;;;15698:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;15780:15;15753:16;;:43;;;;;;;;;;;;;;;;;;15846:4;15807:18;:36;15826:16;;;;;;;;;;;15807:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;15527:331:::0;:::o;6831:83::-;6872:5;5089:1;6890:16;;6831:83;:::o;15866:111::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15965:4:::1;15935:18;:27;15954:7;15935:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15866:111:::0;:::o;7966:103::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8056:5:::1;8038:15;;:23;;;;;;;;;;;;;;;;;;7966:103:::0;:::o;15212:307::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15321:1:::1;15297:26;;:12;:26;;;;15289:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15407:5;15371:18;:33;15390:13;;;;;;;;;;;15371:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15447:12;15423:13;;:37;;;;;;;;;;;;;;;;;;15507:4;15471:18;:33;15490:13;;;;;;;;;;;15471:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;15212:307:::0;:::o;20073:153::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20125:26:::1;20154:21;20125:50;;20186:32;20199:18;20186:12;:32::i;:::-;2698:1;20073:153::o:0;7025:117::-;7091:7;7118;:16;7126:7;7118:16;;;;;;;;;;;;;;;;7111:23;;7025:117;;;:::o;2715:148::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2822:1:::1;2785:40;;2806:6;::::0;::::1;;;;;;;;2785:40;;;;;;;;;;;;2853:1;2836:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2715:148::o:0;2501:79::-;2539:7;2566:6;;;;;;;;;;;2559:13;;2501:79;:::o;6736:87::-;6775:13;6808:7;;;;;;;;;;;;;;;;;6801:14;;6736:87;:::o;7150:167::-;7228:4;7245:42;7255:12;:10;:12::i;:::-;7269:9;7280:6;7245:9;:42::i;:::-;7305:4;7298:11;;7150:167;;;;:::o;14588:317::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14687:11:::1;14674:9;:24;;14666:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14788:11;14775:9;:24;;14767:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14888:9;14867:18;:30;;;;14588:317:::0;:::o;14913:291::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15016:1:::1;14994:24;;:10;:24;;;;14986:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15098:5;15064:18;:31;15083:11;;;;;;;;;;;15064:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15136:10;15114:11;;:33;;;;;;;;;;;;;;;;;;15192:4;15158:18;:31;15177:11;;;;;;;;;;;15158:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;14913:291:::0;:::o;14073:164::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14147:6:::1;14142:88;14163:5;:12;14159:1;:16;14142:88;;;14214:4;14197;:14;14202:5;14208:1;14202:8;;;;;;;;;;;;;;;;;;;;;;14197:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14177:3;;;;;:::i;:::-;;;;14142:88;;;;14073:164:::0;:::o;19907:154::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19959:23:::1;19985:24;20003:4;19985:9;:24::i;:::-;19959:50;;20020:33;20037:15;20020:16;:33::i;:::-;2698:1;19907:154::o:0;13085:976::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13149:11:::1;;;;;;;;;;;13148:12;13140:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13198:35;13255:42;13198:100;;13327:16;13309:15;;:34;;;;;;;;;;;;;;;;;;13354:58;13371:4;13386:15;;;;;;;;;;;4042:12;13354:8;:58::i;:::-;13457:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13439:56;;;13504:4;13511:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13439:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13423:13;;:112;;;;;;;;;;;;;;;;;;13546:15;;;;;;;;;;;:31;;;13585:21;13616:4;13622:24;13640:4;13622:9;:24::i;:::-;13647:1;13649::::0;13651:7:::1;:5;:7::i;:::-;13659:15;13546:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13700:4;13686:11;;:18;;;;;;;;;;;;;;;;;;13733:4;13715:15;;:22;;;;;;;;;;;;;;;;;;13764:11;13748:13;:27;;;;13803:11;13786:14;:28;;;;13844:11;13825:16;:30;;;;13887:11;13866:18;:32;;;;13923:4;13909:11;;:18;;;;;;;;;;;;;;;;;;13959:12;13938:18;:33;;;;13989:13;;;;;;;;;;;13982:29;;;14020:15;;;;;;;;;;;14038:14;13982:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2698:1;13085:976::o:0;7325:143::-;7406:7;7433:11;:18;7445:5;7433:18;;;;;;;;;;;;;;;:27;7452:7;7433:27;;;;;;;;;;;;;;;;7426:34;;7325:143;;;;:::o;8077:94::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8158:5:::1;8144:11;;:19;;;;;;;;;;;;;;;;;;8077:94:::0;:::o;16805:108::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16899:6:::1;16879:17;:26;;;;16805:108:::0;:::o;14352:103::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14440:7:::1;14423:14;:24;;;;14352:103:::0;:::o;15989:110::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16086:5:::1;16056:18;:27;16075:7;16056:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15989:110:::0;:::o;14245:99::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14330:6:::1;14314:13;:22;;;;14245:99:::0;:::o;20234:239::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20301:11:::1;;;;;;;;;;;20300:12;20292:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20371:12;20415:10;20407:24;;20439:21;20407:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20394:71;;;;;2698:1;20234:239::o:0;219:98::-;272:7;299:10;292:17;;219:98;:::o;8179:335::-;8289:1;8272:19;;:5;:19;;;;8264:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8370:1;8351:21;;:7;:21;;;;8343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8452:6;8422:11;:18;8434:5;8422:18;;;;;;;;;;;;;;;:27;8441:7;8422:27;;;;;;;;;;;;;;;:36;;;;8490:7;8474:32;;8483:5;8474:32;;;8499:6;8474:32;;;;;;:::i;:::-;;;;;;;;8179:335;;;:::o;8522:1850::-;8626:1;8610:18;;:4;:18;;;;8602:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8703:1;8689:16;;:2;:16;;;;8681:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8773:1;8764:6;:10;8756:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8831:12;8862:15;8908:7;:5;:7::i;:::-;8900:15;;:4;:15;;;;:32;;;;;8925:7;:5;:7::i;:::-;8919:13;;:2;:13;;;;8900:32;:52;;;;;8950:1;8936:16;;:2;:16;;;;8900:52;:77;;;;;8970:6;8956:21;;:2;:21;;;;8900:77;:90;;;;;8982:8;;;;;;;;;;;8981:9;8900:90;8896:939;;;9016:4;:10;9021:4;9016:10;;;;;;;;;;;;;;;;;;;;;;;;;9015:11;:24;;;;;9031:4;:8;9036:2;9031:8;;;;;;;;;;;;;;;;;;;;;;;;;9030:9;9015:24;9007:33;;;;;;9067:4;9057:14;;9098:13;;;;;;;;;;;9090:21;;:4;:21;;;:55;;;;;9129:15;;;;;;;;;;;9115:30;;:2;:30;;;;9090:55;:82;;;;;9150:18;:22;9169:2;9150:22;;;;;;;;;;;;;;;;;;;;;;;;;9149:23;9090:82;:101;;;;;9176:15;;;;;;;;;;;9090:101;9086:451;;;9230:13;;9220:6;:23;;9212:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9342:16;;9332:6;9316:13;9326:2;9316:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;9308:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9441:15;9426:8;:12;9435:2;9426:12;;;;;;;;;;;;;;;;:30;9418:39;;;;;;9510:10;9491:15;:30;;;;:::i;:::-;9476:8;:12;9485:2;9476:12;;;;;;;;;;;;;;;:45;;;;9086:451;9575:13;;;;;;;;;;;9569:19;;:2;:19;;;:55;;;;;9608:15;;;;;;;;;;;9592:32;;:4;:32;;;;9569:55;:84;;;;;9629:18;:24;9648:4;9629:24;;;;;;;;;;;;;;;;;;;;;;;;;9628:25;9569:84;:103;;;;;9657:15;;;;;;;;;;;9569:103;9565:259;;;9711:14;;9701:6;:24;;9693:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9804:4;9791:17;;9565:259;8896:939;9850:18;:24;9869:4;9850:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9878:18;:22;9897:2;9878:22;;;;;;;;;;;;;;;;;;;;;;;;;9850:50;9847:97;;;9927:5;9917:15;;9847:97;9956:28;9987:24;10005:4;9987:9;:24::i;:::-;9956:55;;10022:12;10061:18;;10038:20;:41;10037:57;;;;;10084:10;10037:57;10022:72;;10111:7;:22;;;;;10122:11;;;;;;;;;;;10111:22;:35;;;;;10138:8;;;;;;;;;;;10137:9;10111:35;:64;;;;;10151:18;:24;10170:4;10151:24;;;;;;;;;;;;;;;;;;;;;;;;;10150:25;10111:64;:91;;;;;10180:18;:22;10199:2;10180:22;;;;;;;;;;;;;;;;;;;;;;;;;10179:23;10111:91;10107:195;;;10230:4;10219:8;;:15;;;;;;;;;;;;;;;;;;10249:10;:8;:10::i;:::-;10285:5;10274:8;;:16;;;;;;;;;;;;;;;;;;10107:195;10314:50;10329:4;10334:2;10337:6;10344:7;10353:10;10314:14;:50::i;:::-;8522:1850;;;;;;;:::o;1356:190::-;1442:7;1475:1;1470;:6;;1478:12;1462:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1502:9;1518:1;1514;:5;;;;:::i;:::-;1502:17;;1537:1;1530:8;;;1356:190;;;;;:::o;12980:93::-;13037:11;;;;;;;;;;;:20;;:28;13058:6;13037:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12980:93;:::o;12050:483::-;5959:4;5950:6;;:13;;;;;;;;;;;;;;;;;;12128:21:::1;12166:1;12152:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12128:40;;12197:4;12179;12184:1;12179:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;12223:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12213:4;12218:1;12213:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;12256:62;12273:4;12288:15;;;;;;;;;;;12306:11;12256:8;:62::i;:::-;12329:15;;;;;;;;;;;:66;;;12410:11;12436:1;12452:4;12479;12499:15;12329:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5974:1;5995:5:::0;5986:6;;:14;;;;;;;;;;;;;;;;;;12050:483;:::o;10380:1662::-;10419:23;10445:24;10463:4;10445:9;:24::i;:::-;10419:50;;10480:25;10547:13;;10529:15;;10508:18;;:36;;;;:::i;:::-;:52;;;;:::i;:::-;10480:80;;10571:12;10626:1;10607:15;:20;:46;;;;10652:1;10631:17;:22;10607:46;10604:60;;;10656:7;;;;;10604:60;10718:2;10697:18;;:23;;;;:::i;:::-;10679:15;:41;10676:114;;;10776:2;10755:18;;:23;;;;:::i;:::-;10737:41;;10676:114;10859:23;10944:1;10924:17;10903:18;;10885:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;10859:86;;10956:26;10985:36;11005:15;10985;:19;;:36;;;;:::i;:::-;10956:65;;11042:25;11070:21;11042:49;;11104:36;11121:18;11104:16;:36::i;:::-;11162:18;11183:44;11209:17;11183:21;:25;;:44;;;;:::i;:::-;11162:65;;11248:20;11271:54;11307:17;11271:31;11286:15;;11271:10;:14;;:31;;;;:::i;:::-;:35;;:54;;;;:::i;:::-;11248:77;;11336:18;11357:52;11391:17;11357:29;11372:13;;11357:10;:14;;:29;;;;:::i;:::-;:33;;:52;;;;:::i;:::-;11336:73;;11440:23;11494:10;11479:12;11466:10;:25;;;;:::i;:::-;:38;;;;:::i;:::-;11440:64;;11556:1;11535:18;:22;;;;11586:1;11568:15;:19;;;;11614:1;11598:13;:17;;;;11657:13;;;;;;;;;;;11649:27;;11684:12;11649:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11636:65;;;;;11743:1;11725:15;:19;:42;;;;;11766:1;11748:15;:19;11725:42;11722:210;;;11783:46;11796:15;11813;11783:12;:46::i;:::-;11849:71;11864:18;11884:15;11901:18;;11849:71;;;;;;;;:::i;:::-;;;;;;;;11722:210;11983:11;;;;;;;;;;;11975:25;;12008:21;11975:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11962:72;;;;;10380:1662;;;;;;;;;;;:::o;18074:389::-;18199:7;18195:129;;18223:14;:12;:14::i;:::-;18195:129;;;18279:33;18289:6;18297;18305;18279:9;:33::i;:::-;18270:42;;18195:129;18336:44;18354:6;18362:9;18373:6;18336:17;:44::i;:::-;18405:7;18401:55;;18429:15;:13;:15::i;:::-;18401:55;18074:389;;;;;:::o;1212:136::-;1270:7;1297:43;1301:1;1304;1297:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1290:50;;1212:136;;;;:::o;1554:246::-;1612:7;1641:1;1636;:6;1632:47;;;1666:1;1659:8;;;;1632:47;1689:9;1705:1;1701;:5;;;;:::i;:::-;1689:17;;1734:1;1729;1725;:5;;;;:::i;:::-;:10;1717:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1791:1;1784:8;;;1554:246;;;;;:::o;1808:132::-;1866:7;1893:39;1897:1;1900;1893:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1886:46;;1808:132;;;;:::o;12541:423::-;12622:62;12639:4;12654:15;;;;;;;;;;;12672:11;12622:8;:62::i;:::-;12695:15;;;;;;;;;;;:31;;;12734:9;12767:4;12787:11;12813:1;12856;12899:16;;;;;;;;;;;12930:15;12695:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12541:423;;:::o;16921:686::-;16982:1;16967:11;;:16;:41;;;;;17007:1;16987:16;;:21;16967:41;:63;;;;;17029:1;17012:13;;:18;16967:63;:84;;;;;17050:1;17034:12;;:17;16967:84;:110;;;;;17076:1;17055:17;;:22;16967:110;:133;;;;;17099:1;17081:14;;:19;16967:133;16964:145;;;17102:7;;16964:145;17151:11;;17129:19;:33;;;;17200:16;;17173:24;:43;;;;17251:13;;17227:21;:37;;;;17298:12;;17275:20;:35;;;;17349:17;;17321:25;:45;;;;17402:14;;17377:22;:39;;;;17451:1;17437:11;:15;;;;17482:1;17463:16;:20;;;;17510:1;17494:13;:17;;;;17537:1;17522:12;:16;;;;17569:1;17549:17;:21;;;;17598:1;17581:14;:18;;;;16921:686;:::o;18746:1112::-;18827:7;18847:18;18876:15;18902:14;18927:15;18998:12;18977:17;;18956:18;;:38;;;;:::i;:::-;:54;18953:512;;19039:2;19026:15;;19065:2;19056:11;;18953:512;;;19113:21;19127:6;19113:13;:21::i;:::-;19100:34;;19153:6;19149:305;;;19190:12;;19180:22;;19230:17;;19221:26;;19276:14;;19266:24;;19149:305;;;19341:11;;19331:21;;19380:16;;19371:25;;19425:13;;19415:23;;19149:305;18953:512;19477:12;19492:31;19519:3;19492:22;19503:10;19492:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;19477:46;;19570:10;19560:7;19553:4;:14;;;;:::i;:::-;:27;;;;:::i;:::-;19534:15;;:46;;;;;;;:::i;:::-;;;;;;;;19625:10;19615:7;19608:4;:14;;;;:::i;:::-;:27;;;;:::i;:::-;19591:13;;:44;;;;;;;:::i;:::-;;;;;;;;19684:10;19675:6;19668:4;:13;;;;:::i;:::-;:26;;;;:::i;:::-;19646:18;;:48;;;;;;;:::i;:::-;;;;;;;;19729:1;19722:4;:8;19719:86;;;19747:46;19765:6;19781:4;19788;19747:17;:46::i;:::-;19719:86;19846:4;19836:14;;;;;:::i;:::-;;;;19829:21;;;;;;;18746:1112;;;;;:::o;18471:267::-;18587:28;18607:7;18587;:15;18595:6;18587:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18569:7;:15;18577:6;18569:15;;;;;;;;;;;;;;;:46;;;;18647:31;18670:7;18647;:18;18655:9;18647:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;18626:7;:18;18634:9;18626:18;;;;;;;;;;;;;;;:52;;;;18711:9;18694:36;;18703:6;18694:36;;;18722:7;18694:36;;;;;;:::i;:::-;;;;;;;;18471:267;;;:::o;17619:339::-;17677:19;;17663:11;:33;;;;17726:24;;17707:16;:43;;;;17777:21;;17761:13;:37;;;;17824:20;;17809:12;:35;;;;17875:25;;17855:17;:45;;;;17928:22;;17911:14;:39;;;;17619:339::o;1948:189::-;2034:7;2066:1;2062;:5;2069:12;2054:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2093:9;2109:1;2105;:5;;;;:::i;:::-;2093:17;;2128:1;2121:8;;;1948:189;;;;;:::o;20481:243::-;20538:7;20562:6;20558:95;;;20627:14;;20607:17;;20592:12;;:32;;;;:::i;:::-;:49;;;;:::i;:::-;20585:56;;;;20558:95;20703:13;;20684:16;;20670:11;;:30;;;;:::i;:::-;:46;;;;:::i;:::-;20663:53;;20481:243;;;;:::o;1025:179::-;1083:7;1103:9;1119:1;1115;:5;;;;:::i;:::-;1103:17;;1144:1;1139;:6;;1131:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1195:1;1188:8;;;1025:179;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:262::-;1940:6;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;1947:196;;;;:::o;2149:284::-;2219:6;2268:2;2256:9;2247:7;2243:23;2239:32;2236:2;;;2284:1;2281;2274:12;2236:2;2327:1;2352:64;2408:7;2399:6;2388:9;2384:22;2352:64;:::i;:::-;2342:74;;2298:128;2226:207;;;;:::o;2439:407::-;2507:6;2515;2564:2;2552:9;2543:7;2539:23;2535:32;2532:2;;;2580:1;2577;2570:12;2532:2;2623:1;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;:::i;:::-;2638:63;;2594:117;2750:2;2776:53;2821:7;2812:6;2801:9;2797:22;2776:53;:::i;:::-;2766:63;;2721:118;2522:324;;;;;:::o;2852:552::-;2929:6;2937;2945;2994:2;2982:9;2973:7;2969:23;2965:32;2962:2;;;3010:1;3007;3000:12;2962:2;3053:1;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3024:117;3180:2;3206:53;3251:7;3242:6;3231:9;3227:22;3206:53;:::i;:::-;3196:63;;3151:118;3308:2;3334:53;3379:7;3370:6;3359:9;3355:22;3334:53;:::i;:::-;3324:63;;3279:118;2952:452;;;;;:::o;3410:407::-;3478:6;3486;3535:2;3523:9;3514:7;3510:23;3506:32;3503:2;;;3551:1;3548;3541:12;3503:2;3594:1;3619:53;3664:7;3655:6;3644:9;3640:22;3619:53;:::i;:::-;3609:63;;3565:117;3721:2;3747:53;3792:7;3783:6;3772:9;3768:22;3747:53;:::i;:::-;3737:63;;3692:118;3493:324;;;;;:::o;3823:405::-;3907:6;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;3972:1;3969;3962:12;3924:2;4043:1;4032:9;4028:17;4015:31;4073:18;4065:6;4062:30;4059:2;;;4105:1;4102;4095:12;4059:2;4133:78;4203:7;4194:6;4183:9;4179:22;4133:78;:::i;:::-;4123:88;;3986:235;3914:314;;;;:::o;4234:256::-;4290:6;4339:2;4327:9;4318:7;4314:23;4310:32;4307:2;;;4355:1;4352;4345:12;4307:2;4398:1;4423:50;4465:7;4456:6;4445:9;4441:22;4423:50;:::i;:::-;4413:60;;4369:114;4297:193;;;;:::o;4496:278::-;4563:6;4612:2;4600:9;4591:7;4587:23;4583:32;4580:2;;;4628:1;4625;4618:12;4580:2;4671:1;4696:61;4749:7;4740:6;4729:9;4725:22;4696:61;:::i;:::-;4686:71;;4642:125;4570:204;;;;:::o;4780:262::-;4839:6;4888:2;4876:9;4867:7;4863:23;4859:32;4856:2;;;4904:1;4901;4894:12;4856:2;4947:1;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4918:117;4846:196;;;;:::o;5048:552::-;5125:6;5133;5141;5190:2;5178:9;5169:7;5165:23;5161:32;5158:2;;;5206:1;5203;5196:12;5158:2;5249:1;5274:53;5319:7;5310:6;5299:9;5295:22;5274:53;:::i;:::-;5264:63;;5220:117;5376:2;5402:53;5447:7;5438:6;5427:9;5423:22;5402:53;:::i;:::-;5392:63;;5347:118;5504:2;5530:53;5575:7;5566:6;5555:9;5551:22;5530:53;:::i;:::-;5520:63;;5475:118;5148:452;;;;;:::o;5606:596::-;5694:6;5702;5710;5759:2;5747:9;5738:7;5734:23;5730:32;5727:2;;;5775:1;5772;5765:12;5727:2;5818:1;5843:64;5899:7;5890:6;5879:9;5875:22;5843:64;:::i;:::-;5833:74;;5789:128;5956:2;5982:64;6038:7;6029:6;6018:9;6014:22;5982:64;:::i;:::-;5972:74;;5927:129;6095:2;6121:64;6177:7;6168:6;6157:9;6153:22;6121:64;:::i;:::-;6111:74;;6066:129;5717:485;;;;;:::o;6208:179::-;6277:10;6298:46;6340:3;6332:6;6298:46;:::i;:::-;6376:4;6371:3;6367:14;6353:28;;6288:99;;;;:::o;6393:147::-;6488:45;6527:5;6488:45;:::i;:::-;6483:3;6476:58;6466:74;;:::o;6546:108::-;6623:24;6641:5;6623:24;:::i;:::-;6618:3;6611:37;6601:53;;:::o;6660:118::-;6747:24;6765:5;6747:24;:::i;:::-;6742:3;6735:37;6725:53;;:::o;6814:732::-;6933:3;6962:54;7010:5;6962:54;:::i;:::-;7032:86;7111:6;7106:3;7032:86;:::i;:::-;7025:93;;7142:56;7192:5;7142:56;:::i;:::-;7221:7;7252:1;7237:284;7262:6;7259:1;7256:13;7237:284;;;7338:6;7332:13;7365:63;7424:3;7409:13;7365:63;:::i;:::-;7358:70;;7451:60;7504:6;7451:60;:::i;:::-;7441:70;;7297:224;7284:1;7281;7277:9;7272:14;;7237:284;;;7241:14;7537:3;7530:10;;6938:608;;;;;;;:::o;7552:109::-;7633:21;7648:5;7633:21;:::i;:::-;7628:3;7621:34;7611:50;;:::o;7667:147::-;7762:45;7801:5;7762:45;:::i;:::-;7757:3;7750:58;7740:74;;:::o;7820:364::-;7908:3;7936:39;7969:5;7936:39;:::i;:::-;7991:71;8055:6;8050:3;7991:71;:::i;:::-;7984:78;;8071:52;8116:6;8111:3;8104:4;8097:5;8093:16;8071:52;:::i;:::-;8148:29;8170:6;8148:29;:::i;:::-;8143:3;8139:39;8132:46;;7912:272;;;;;:::o;8190:366::-;8332:3;8353:67;8417:2;8412:3;8353:67;:::i;:::-;8346:74;;8429:93;8518:3;8429:93;:::i;:::-;8547:2;8542:3;8538:12;8531:19;;8336:220;;;:::o;8562:366::-;8704:3;8725:67;8789:2;8784:3;8725:67;:::i;:::-;8718:74;;8801:93;8890:3;8801:93;:::i;:::-;8919:2;8914:3;8910:12;8903:19;;8708:220;;;:::o;8934:366::-;9076:3;9097:67;9161:2;9156:3;9097:67;:::i;:::-;9090:74;;9173:93;9262:3;9173:93;:::i;:::-;9291:2;9286:3;9282:12;9275:19;;9080:220;;;:::o;9306:366::-;9448:3;9469:67;9533:2;9528:3;9469:67;:::i;:::-;9462:74;;9545:93;9634:3;9545:93;:::i;:::-;9663:2;9658:3;9654:12;9647:19;;9452:220;;;:::o;9678:366::-;9820:3;9841:67;9905:2;9900:3;9841:67;:::i;:::-;9834:74;;9917:93;10006:3;9917:93;:::i;:::-;10035:2;10030:3;10026:12;10019:19;;9824:220;;;:::o;10050:366::-;10192:3;10213:67;10277:2;10272:3;10213:67;:::i;:::-;10206:74;;10289:93;10378:3;10289:93;:::i;:::-;10407:2;10402:3;10398:12;10391:19;;10196:220;;;:::o;10422:366::-;10564:3;10585:67;10649:2;10644:3;10585:67;:::i;:::-;10578:74;;10661:93;10750:3;10661:93;:::i;:::-;10779:2;10774:3;10770:12;10763:19;;10568:220;;;:::o;10794:366::-;10936:3;10957:67;11021:2;11016:3;10957:67;:::i;:::-;10950:74;;11033:93;11122:3;11033:93;:::i;:::-;11151:2;11146:3;11142:12;11135:19;;10940:220;;;:::o;11166:366::-;11308:3;11329:67;11393:2;11388:3;11329:67;:::i;:::-;11322:74;;11405:93;11494:3;11405:93;:::i;:::-;11523:2;11518:3;11514:12;11507:19;;11312:220;;;:::o;11538:366::-;11680:3;11701:67;11765:2;11760:3;11701:67;:::i;:::-;11694:74;;11777:93;11866:3;11777:93;:::i;:::-;11895:2;11890:3;11886:12;11879:19;;11684:220;;;:::o;11910:366::-;12052:3;12073:67;12137:2;12132:3;12073:67;:::i;:::-;12066:74;;12149:93;12238:3;12149:93;:::i;:::-;12267:2;12262:3;12258:12;12251:19;;12056:220;;;:::o;12282:366::-;12424:3;12445:67;12509:2;12504:3;12445:67;:::i;:::-;12438:74;;12521:93;12610:3;12521:93;:::i;:::-;12639:2;12634:3;12630:12;12623:19;;12428:220;;;:::o;12654:366::-;12796:3;12817:67;12881:2;12876:3;12817:67;:::i;:::-;12810:74;;12893:93;12982:3;12893:93;:::i;:::-;13011:2;13006:3;13002:12;12995:19;;12800:220;;;:::o;13026:366::-;13168:3;13189:67;13253:2;13248:3;13189:67;:::i;:::-;13182:74;;13265:93;13354:3;13265:93;:::i;:::-;13383:2;13378:3;13374:12;13367:19;;13172:220;;;:::o;13398:398::-;13557:3;13578:83;13659:1;13654:3;13578:83;:::i;:::-;13571:90;;13670:93;13759:3;13670:93;:::i;:::-;13788:1;13783:3;13779:11;13772:18;;13561:235;;;:::o;13802:366::-;13944:3;13965:67;14029:2;14024:3;13965:67;:::i;:::-;13958:74;;14041:93;14130:3;14041:93;:::i;:::-;14159:2;14154:3;14150:12;14143:19;;13948:220;;;:::o;14174:366::-;14316:3;14337:67;14401:2;14396:3;14337:67;:::i;:::-;14330:74;;14413:93;14502:3;14413:93;:::i;:::-;14531:2;14526:3;14522:12;14515:19;;14320:220;;;:::o;14546:366::-;14688:3;14709:67;14773:2;14768:3;14709:67;:::i;:::-;14702:74;;14785:93;14874:3;14785:93;:::i;:::-;14903:2;14898:3;14894:12;14887:19;;14692:220;;;:::o;14918:366::-;15060:3;15081:67;15145:2;15140:3;15081:67;:::i;:::-;15074:74;;15157:93;15246:3;15157:93;:::i;:::-;15275:2;15270:3;15266:12;15259:19;;15064:220;;;:::o;15290:366::-;15432:3;15453:67;15517:2;15512:3;15453:67;:::i;:::-;15446:74;;15529:93;15618:3;15529:93;:::i;:::-;15647:2;15642:3;15638:12;15631:19;;15436:220;;;:::o;15662:366::-;15804:3;15825:67;15889:2;15884:3;15825:67;:::i;:::-;15818:74;;15901:93;15990:3;15901:93;:::i;:::-;16019:2;16014:3;16010:12;16003:19;;15808:220;;;:::o;16034:118::-;16121:24;16139:5;16121:24;:::i;:::-;16116:3;16109:37;16099:53;;:::o;16158:112::-;16241:22;16257:5;16241:22;:::i;:::-;16236:3;16229:35;16219:51;;:::o;16276:379::-;16460:3;16482:147;16625:3;16482:147;:::i;:::-;16475:154;;16646:3;16639:10;;16464:191;;;:::o;16661:222::-;16754:4;16792:2;16781:9;16777:18;16769:26;;16805:71;16873:1;16862:9;16858:17;16849:6;16805:71;:::i;:::-;16759:124;;;;:::o;16889:332::-;17010:4;17048:2;17037:9;17033:18;17025:26;;17061:71;17129:1;17118:9;17114:17;17105:6;17061:71;:::i;:::-;17142:72;17210:2;17199:9;17195:18;17186:6;17142:72;:::i;:::-;17015:206;;;;;:::o;17227:332::-;17348:4;17386:2;17375:9;17371:18;17363:26;;17399:71;17467:1;17456:9;17452:17;17443:6;17399:71;:::i;:::-;17480:72;17548:2;17537:9;17533:18;17524:6;17480:72;:::i;:::-;17353:206;;;;;:::o;17565:823::-;17822:4;17860:3;17849:9;17845:19;17837:27;;17874:71;17942:1;17931:9;17927:17;17918:6;17874:71;:::i;:::-;17955:72;18023:2;18012:9;18008:18;17999:6;17955:72;:::i;:::-;18037:80;18113:2;18102:9;18098:18;18089:6;18037:80;:::i;:::-;18127;18203:2;18192:9;18188:18;18179:6;18127:80;:::i;:::-;18217:81;18293:3;18282:9;18278:19;18269:6;18217:81;:::i;:::-;18308:73;18376:3;18365:9;18361:19;18352:6;18308:73;:::i;:::-;17827:561;;;;;;;;;:::o;18394:807::-;18643:4;18681:3;18670:9;18666:19;18658:27;;18695:71;18763:1;18752:9;18748:17;18739:6;18695:71;:::i;:::-;18776:72;18844:2;18833:9;18829:18;18820:6;18776:72;:::i;:::-;18858:80;18934:2;18923:9;18919:18;18910:6;18858:80;:::i;:::-;18948;19024:2;19013:9;19009:18;19000:6;18948:80;:::i;:::-;19038:73;19106:3;19095:9;19091:19;19082:6;19038:73;:::i;:::-;19121;19189:3;19178:9;19174:19;19165:6;19121:73;:::i;:::-;18648:553;;;;;;;;;:::o;19207:210::-;19294:4;19332:2;19321:9;19317:18;19309:26;;19345:65;19407:1;19396:9;19392:17;19383:6;19345:65;:::i;:::-;19299:118;;;;:::o;19423:313::-;19536:4;19574:2;19563:9;19559:18;19551:26;;19623:9;19617:4;19613:20;19609:1;19598:9;19594:17;19587:47;19651:78;19724:4;19715:6;19651:78;:::i;:::-;19643:86;;19541:195;;;;:::o;19742:419::-;19908:4;19946:2;19935:9;19931:18;19923:26;;19995:9;19989:4;19985:20;19981:1;19970:9;19966:17;19959:47;20023:131;20149:4;20023:131;:::i;:::-;20015:139;;19913:248;;;:::o;20167:419::-;20333:4;20371:2;20360:9;20356:18;20348:26;;20420:9;20414:4;20410:20;20406:1;20395:9;20391:17;20384:47;20448:131;20574:4;20448:131;:::i;:::-;20440:139;;20338:248;;;:::o;20592:419::-;20758:4;20796:2;20785:9;20781:18;20773:26;;20845:9;20839:4;20835:20;20831:1;20820:9;20816:17;20809:47;20873:131;20999:4;20873:131;:::i;:::-;20865:139;;20763:248;;;:::o;21017:419::-;21183:4;21221:2;21210:9;21206:18;21198:26;;21270:9;21264:4;21260:20;21256:1;21245:9;21241:17;21234:47;21298:131;21424:4;21298:131;:::i;:::-;21290:139;;21188:248;;;:::o;21442:419::-;21608:4;21646:2;21635:9;21631:18;21623:26;;21695:9;21689:4;21685:20;21681:1;21670:9;21666:17;21659:47;21723:131;21849:4;21723:131;:::i;:::-;21715:139;;21613:248;;;:::o;21867:419::-;22033:4;22071:2;22060:9;22056:18;22048:26;;22120:9;22114:4;22110:20;22106:1;22095:9;22091:17;22084:47;22148:131;22274:4;22148:131;:::i;:::-;22140:139;;22038:248;;;:::o;22292:419::-;22458:4;22496:2;22485:9;22481:18;22473:26;;22545:9;22539:4;22535:20;22531:1;22520:9;22516:17;22509:47;22573:131;22699:4;22573:131;:::i;:::-;22565:139;;22463:248;;;:::o;22717:419::-;22883:4;22921:2;22910:9;22906:18;22898:26;;22970:9;22964:4;22960:20;22956:1;22945:9;22941:17;22934:47;22998:131;23124:4;22998:131;:::i;:::-;22990:139;;22888:248;;;:::o;23142:419::-;23308:4;23346:2;23335:9;23331:18;23323:26;;23395:9;23389:4;23385:20;23381:1;23370:9;23366:17;23359:47;23423:131;23549:4;23423:131;:::i;:::-;23415:139;;23313:248;;;:::o;23567:419::-;23733:4;23771:2;23760:9;23756:18;23748:26;;23820:9;23814:4;23810:20;23806:1;23795:9;23791:17;23784:47;23848:131;23974:4;23848:131;:::i;:::-;23840:139;;23738:248;;;:::o;23992:419::-;24158:4;24196:2;24185:9;24181:18;24173:26;;24245:9;24239:4;24235:20;24231:1;24220:9;24216:17;24209:47;24273:131;24399:4;24273:131;:::i;:::-;24265:139;;24163:248;;;:::o;24417:419::-;24583:4;24621:2;24610:9;24606:18;24598:26;;24670:9;24664:4;24660:20;24656:1;24645:9;24641:17;24634:47;24698:131;24824:4;24698:131;:::i;:::-;24690:139;;24588:248;;;:::o;24842:419::-;25008:4;25046:2;25035:9;25031:18;25023:26;;25095:9;25089:4;25085:20;25081:1;25070:9;25066:17;25059:47;25123:131;25249:4;25123:131;:::i;:::-;25115:139;;25013:248;;;:::o;25267:419::-;25433:4;25471:2;25460:9;25456:18;25448:26;;25520:9;25514:4;25510:20;25506:1;25495:9;25491:17;25484:47;25548:131;25674:4;25548:131;:::i;:::-;25540:139;;25438:248;;;:::o;25692:419::-;25858:4;25896:2;25885:9;25881:18;25873:26;;25945:9;25939:4;25935:20;25931:1;25920:9;25916:17;25909:47;25973:131;26099:4;25973:131;:::i;:::-;25965:139;;25863:248;;;:::o;26117:419::-;26283:4;26321:2;26310:9;26306:18;26298:26;;26370:9;26364:4;26360:20;26356:1;26345:9;26341:17;26334:47;26398:131;26524:4;26398:131;:::i;:::-;26390:139;;26288:248;;;:::o;26542:419::-;26708:4;26746:2;26735:9;26731:18;26723:26;;26795:9;26789:4;26785:20;26781:1;26770:9;26766:17;26759:47;26823:131;26949:4;26823:131;:::i;:::-;26815:139;;26713:248;;;:::o;26967:419::-;27133:4;27171:2;27160:9;27156:18;27148:26;;27220:9;27214:4;27210:20;27206:1;27195:9;27191:17;27184:47;27248:131;27374:4;27248:131;:::i;:::-;27240:139;;27138:248;;;:::o;27392:419::-;27558:4;27596:2;27585:9;27581:18;27573:26;;27645:9;27639:4;27635:20;27631:1;27620:9;27616:17;27609:47;27673:131;27799:4;27673:131;:::i;:::-;27665:139;;27563:248;;;:::o;27817:419::-;27983:4;28021:2;28010:9;28006:18;27998:26;;28070:9;28064:4;28060:20;28056:1;28045:9;28041:17;28034:47;28098:131;28224:4;28098:131;:::i;:::-;28090:139;;27988:248;;;:::o;28242:222::-;28335:4;28373:2;28362:9;28358:18;28350:26;;28386:71;28454:1;28443:9;28439:17;28430:6;28386:71;:::i;:::-;28340:124;;;;:::o;28470:831::-;28733:4;28771:3;28760:9;28756:19;28748:27;;28785:71;28853:1;28842:9;28838:17;28829:6;28785:71;:::i;:::-;28866:80;28942:2;28931:9;28927:18;28918:6;28866:80;:::i;:::-;28993:9;28987:4;28983:20;28978:2;28967:9;28963:18;28956:48;29021:108;29124:4;29115:6;29021:108;:::i;:::-;29013:116;;29139:72;29207:2;29196:9;29192:18;29183:6;29139:72;:::i;:::-;29221:73;29289:3;29278:9;29274:19;29265:6;29221:73;:::i;:::-;28738:563;;;;;;;;:::o;29307:442::-;29456:4;29494:2;29483:9;29479:18;29471:26;;29507:71;29575:1;29564:9;29560:17;29551:6;29507:71;:::i;:::-;29588:72;29656:2;29645:9;29641:18;29632:6;29588:72;:::i;:::-;29670;29738:2;29727:9;29723:18;29714:6;29670:72;:::i;:::-;29461:288;;;;;;:::o;29755:214::-;29844:4;29882:2;29871:9;29867:18;29859:26;;29895:67;29959:1;29948:9;29944:17;29935:6;29895:67;:::i;:::-;29849:120;;;;:::o;29975:129::-;30009:6;30036:20;;:::i;:::-;30026:30;;30065:33;30093:4;30085:6;30065:33;:::i;:::-;30016:88;;;:::o;30110:75::-;30143:6;30176:2;30170:9;30160:19;;30150:35;:::o;30191:311::-;30268:4;30358:18;30350:6;30347:30;30344:2;;;30380:18;;:::i;:::-;30344:2;30430:4;30422:6;30418:17;30410:25;;30490:4;30484;30480:15;30472:23;;30273:229;;;:::o;30508:132::-;30575:4;30598:3;30590:11;;30628:4;30623:3;30619:14;30611:22;;30580:60;;;:::o;30646:114::-;30713:6;30747:5;30741:12;30731:22;;30720:40;;;:::o;30766:99::-;30818:6;30852:5;30846:12;30836:22;;30825:40;;;:::o;30871:113::-;30941:4;30973;30968:3;30964:14;30956:22;;30946:38;;;:::o;30990:184::-;31089:11;31123:6;31118:3;31111:19;31163:4;31158:3;31154:14;31139:29;;31101:73;;;;:::o;31180:147::-;31281:11;31318:3;31303:18;;31293:34;;;;:::o;31333:169::-;31417:11;31451:6;31446:3;31439:19;31491:4;31486:3;31482:14;31467:29;;31429:73;;;;:::o;31508:305::-;31548:3;31567:20;31585:1;31567:20;:::i;:::-;31562:25;;31601:20;31619:1;31601:20;:::i;:::-;31596:25;;31755:1;31687:66;31683:74;31680:1;31677:81;31674:2;;;31761:18;;:::i;:::-;31674:2;31805:1;31802;31798:9;31791:16;;31552:261;;;;:::o;31819:185::-;31859:1;31876:20;31894:1;31876:20;:::i;:::-;31871:25;;31910:20;31928:1;31910:20;:::i;:::-;31905:25;;31949:1;31939:2;;31954:18;;:::i;:::-;31939:2;31996:1;31993;31989:9;31984:14;;31861:143;;;;:::o;32010:348::-;32050:7;32073:20;32091:1;32073:20;:::i;:::-;32068:25;;32107:20;32125:1;32107:20;:::i;:::-;32102:25;;32295:1;32227:66;32223:74;32220:1;32217:81;32212:1;32205:9;32198:17;32194:105;32191:2;;;32302:18;;:::i;:::-;32191:2;32350:1;32347;32343:9;32332:20;;32058:300;;;;:::o;32364:191::-;32404:4;32424:20;32442:1;32424:20;:::i;:::-;32419:25;;32458:20;32476:1;32458:20;:::i;:::-;32453:25;;32497:1;32494;32491:8;32488:2;;;32502:18;;:::i;:::-;32488:2;32547:1;32544;32540:9;32532:17;;32409:146;;;;:::o;32561:96::-;32598:7;32627:24;32645:5;32627:24;:::i;:::-;32616:35;;32606:51;;;:::o;32663:90::-;32697:7;32740:5;32733:13;32726:21;32715:32;;32705:48;;;:::o;32759:126::-;32796:7;32836:42;32829:5;32825:54;32814:65;;32804:81;;;:::o;32891:77::-;32928:7;32957:5;32946:16;;32936:32;;;:::o;32974:86::-;33009:7;33049:4;33042:5;33038:16;33027:27;;33017:43;;;:::o;33066:134::-;33124:9;33157:37;33188:5;33157:37;:::i;:::-;33144:50;;33134:66;;;:::o;33206:121::-;33264:9;33297:24;33315:5;33297:24;:::i;:::-;33284:37;;33274:53;;;:::o;33333:126::-;33383:9;33416:37;33447:5;33416:37;:::i;:::-;33403:50;;33393:66;;;:::o;33465:113::-;33515:9;33548:24;33566:5;33548:24;:::i;:::-;33535:37;;33525:53;;;:::o;33584:307::-;33652:1;33662:113;33676:6;33673:1;33670:13;33662:113;;;33761:1;33756:3;33752:11;33746:18;33742:1;33737:3;33733:11;33726:39;33698:2;33695:1;33691:10;33686:15;;33662:113;;;33793:6;33790:1;33787:13;33784:2;;;33873:1;33864:6;33859:3;33855:16;33848:27;33784:2;33633:258;;;;:::o;33897:281::-;33980:27;34002:4;33980:27;:::i;:::-;33972:6;33968:40;34110:6;34098:10;34095:22;34074:18;34062:10;34059:34;34056:62;34053:2;;;34121:18;;:::i;:::-;34053:2;34161:10;34157:2;34150:22;33940:238;;;:::o;34184:233::-;34223:3;34246:24;34264:5;34246:24;:::i;:::-;34237:33;;34292:66;34285:5;34282:77;34279:2;;;34362:18;;:::i;:::-;34279:2;34409:1;34402:5;34398:13;34391:20;;34227:190;;;:::o;34423:180::-;34471:77;34468:1;34461:88;34568:4;34565:1;34558:15;34592:4;34589:1;34582:15;34609:180;34657:77;34654:1;34647:88;34754:4;34751:1;34744:15;34778:4;34775:1;34768:15;34795:180;34843:77;34840:1;34833:88;34940:4;34937:1;34930:15;34964:4;34961:1;34954:15;34981:102;35022:6;35073:2;35069:7;35064:2;35057:5;35053:14;35049:28;35039:38;;35029:54;;;:::o;35089:222::-;35229:34;35225:1;35217:6;35213:14;35206:58;35298:5;35293:2;35285:6;35281:15;35274:30;35195:116;:::o;35317:221::-;35457:34;35453:1;35445:6;35441:14;35434:58;35526:4;35521:2;35513:6;35509:15;35502:29;35423:115;:::o;35544:177::-;35684:29;35680:1;35672:6;35668:14;35661:53;35650:71;:::o;35727:240::-;35867:34;35863:1;35855:6;35851:14;35844:58;35936:23;35931:2;35923:6;35919:15;35912:48;35833:134;:::o;35973:239::-;36113:34;36109:1;36101:6;36097:14;36090:58;36182:22;36177:2;36169:6;36165:15;36158:47;36079:133;:::o;36218:223::-;36358:34;36354:1;36346:6;36342:14;36335:58;36427:6;36422:2;36414:6;36410:15;36403:31;36324:117;:::o;36447:228::-;36587:34;36583:1;36575:6;36571:14;36564:58;36656:11;36651:2;36643:6;36639:15;36632:36;36553:122;:::o;36681:220::-;36821:34;36817:1;36809:6;36805:14;36798:58;36890:3;36885:2;36877:6;36873:15;36866:28;36787:114;:::o;36907:179::-;37047:31;37043:1;37035:6;37031:14;37024:55;37013:73;:::o;37092:182::-;37232:34;37228:1;37220:6;37216:14;37209:58;37198:76;:::o;37280:180::-;37420:32;37416:1;37408:6;37404:14;37397:56;37386:74;:::o;37466:228::-;37606:34;37602:1;37594:6;37590:14;37583:58;37675:11;37670:2;37662:6;37658:15;37651:36;37572:122;:::o;37700:222::-;37840:34;37836:1;37828:6;37824:14;37817:58;37909:5;37904:2;37896:6;37892:15;37885:30;37806:116;:::o;37928:224::-;38068:34;38064:1;38056:6;38052:14;38045:58;38137:7;38132:2;38124:6;38120:15;38113:32;38034:118;:::o;38158:114::-;38264:8;:::o;38278:223::-;38418:34;38414:1;38406:6;38402:14;38395:58;38487:6;38482:2;38474:6;38470:15;38463:31;38384:117;:::o;38507:173::-;38647:25;38643:1;38635:6;38631:14;38624:49;38613:67;:::o;38686:182::-;38826:34;38822:1;38814:6;38810:14;38803:58;38792:76;:::o;38874:229::-;39014:34;39010:1;39002:6;38998:14;38991:58;39083:12;39078:2;39070:6;39066:15;39059:37;38980:123;:::o;39109:180::-;39249:32;39245:1;39237:6;39233:14;39226:56;39215:74;:::o;39295:230::-;39435:34;39431:1;39423:6;39419:14;39412:58;39504:13;39499:2;39491:6;39487:15;39480:38;39401:124;:::o;39531:122::-;39604:24;39622:5;39604:24;:::i;:::-;39597:5;39594:35;39584:2;;39643:1;39640;39633:12;39584:2;39574:79;:::o;39659:116::-;39729:21;39744:5;39729:21;:::i;:::-;39722:5;39719:32;39709:2;;39765:1;39762;39755:12;39709:2;39699:76;:::o;39781:122::-;39854:24;39872:5;39854:24;:::i;:::-;39847:5;39844:35;39834:2;;39893:1;39890;39883:12;39834:2;39824:79;:::o

Swarm Source

ipfs://cf7e919b5dfbe42df41158c9a7c84a7c0679f8d489eaaf0c930b594f68d89ad3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.