ETH Price: $2,762.92 (+4.68%)

Contract

0xD164C1F25d7ab9e55173457e0C527FC76a4ad0Bc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve149056882022-06-04 22:48:27811 days ago1654382907IN
0xD164C1F2...76a4ad0Bc
0 ETH0.002698657.1266562
Set Max Sell Amo...148975582022-06-03 14:14:58812 days ago1654265698IN
0xD164C1F2...76a4ad0Bc
0 ETH0.00316458131.17451509
Transfer Ownersh...148975542022-06-03 14:14:17812 days ago1654265657IN
0xD164C1F2...76a4ad0Bc
0 ETH0.00475809153.54628501
Approve148834472022-06-01 6:57:20814 days ago1654066640IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0011877525.14347489
Approve148792412022-05-31 14:35:21815 days ago1654007721IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0008896618.83321642
Approve148740582022-05-30 18:15:20816 days ago1653934520IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0014549830.80045169
Approve148720122022-05-30 10:19:20816 days ago1653905960IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0010052321.27981305
Approve148717832022-05-30 9:26:34816 days ago1653902794IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0009933436.33435237
Approve148709492022-05-30 6:01:26816 days ago1653890486IN
0xD164C1F2...76a4ad0Bc
0 ETH0.001064822.54081297
Approve148701682022-05-30 3:00:21816 days ago1653879621IN
0xD164C1F2...76a4ad0Bc
0 ETH0.001296927.45411259
Approve148693812022-05-29 23:47:42817 days ago1653868062IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0007203515.2490702
Approve148691252022-05-29 22:48:34817 days ago1653864514IN
0xD164C1F2...76a4ad0Bc
0 ETH0.001214925.71827555
Approve148690012022-05-29 22:18:59817 days ago1653862739IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0018669439.52126505
Approve148689912022-05-29 22:16:49817 days ago1653862609IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0020544443.49035105
Approve148689592022-05-29 22:09:39817 days ago1653862179IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0010787722.83658586
Transfer Ownersh...148689522022-05-29 22:08:30817 days ago1653862110IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0015043528.56077389
Approve148689512022-05-29 22:08:11817 days ago1653862091IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0012282826.00143343
Approve148689232022-05-29 22:01:41817 days ago1653861701IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0013250428.0498154
Approve148689162022-05-29 21:59:58817 days ago1653861598IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0013879929.38242797
Approve148688262022-05-29 21:38:28817 days ago1653860308IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0012868927.24215988
Approve148688012022-05-29 21:33:44817 days ago1653860024IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0016641335.22808364
Approve148687972022-05-29 21:32:13817 days ago1653859933IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0018312938.76659699
Approve148687942022-05-29 21:31:45817 days ago1653859905IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0016369334.65216261
Approve148687692022-05-29 21:26:17817 days ago1653859577IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0025725354.45796423
Approve148687362022-05-29 21:17:04817 days ago1653859024IN
0xD164C1F2...76a4ad0Bc
0 ETH0.0019719741.74466
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
148820702022-06-01 1:30:37814 days ago1654047037
0xD164C1F2...76a4ad0Bc
0.01013202 ETH
148820702022-06-01 1:30:37814 days ago1654047037
0xD164C1F2...76a4ad0Bc
0.00179576 ETH
148820702022-06-01 1:30:37814 days ago1654047037
0xD164C1F2...76a4ad0Bc
0.00416813 ETH
148820702022-06-01 1:30:37814 days ago1654047037
0xD164C1F2...76a4ad0Bc
0.00416813 ETH
148820702022-06-01 1:30:37814 days ago1654047037
0xD164C1F2...76a4ad0Bc
0.01667252 ETH
148773922022-05-31 7:12:26815 days ago1653981146
0xD164C1F2...76a4ad0Bc
0.01714921 ETH
148773922022-05-31 7:12:26815 days ago1653981146
0xD164C1F2...76a4ad0Bc
0.00305151 ETH
148773922022-05-31 7:12:26815 days ago1653981146
0xD164C1F2...76a4ad0Bc
0.00704884 ETH
148773922022-05-31 7:12:26815 days ago1653981146
0xD164C1F2...76a4ad0Bc
0.00704884 ETH
148773922022-05-31 7:12:26815 days ago1653981146
0xD164C1F2...76a4ad0Bc
0.02819539 ETH
148758512022-05-31 1:09:40815 days ago1653959380
0xD164C1F2...76a4ad0Bc
0.00305151 ETH
148758512022-05-31 1:09:40815 days ago1653959380
0xD164C1F2...76a4ad0Bc
0.00704884 ETH
148758512022-05-31 1:09:40815 days ago1653959380
0xD164C1F2...76a4ad0Bc
0.00704884 ETH
148758512022-05-31 1:09:40815 days ago1653959380
0xD164C1F2...76a4ad0Bc
0.02819539 ETH
148709272022-05-30 5:56:04816 days ago1653890164
0xD164C1F2...76a4ad0Bc
0.01847661 ETH
148709272022-05-30 5:56:04816 days ago1653890164
0xD164C1F2...76a4ad0Bc
0.00328465 ETH
148709272022-05-30 5:56:04816 days ago1653890164
0xD164C1F2...76a4ad0Bc
0.00759598 ETH
148709272022-05-30 5:56:04816 days ago1653890164
0xD164C1F2...76a4ad0Bc
0.00759598 ETH
148709272022-05-30 5:56:04816 days ago1653890164
0xD164C1F2...76a4ad0Bc
0.03038393 ETH
148697982022-05-30 1:30:51816 days ago1653874251
0xD164C1F2...76a4ad0Bc
0.02793962 ETH
148697982022-05-30 1:30:51816 days ago1653874251
0xD164C1F2...76a4ad0Bc
0.00498377 ETH
148697982022-05-30 1:30:51816 days ago1653874251
0xD164C1F2...76a4ad0Bc
0.01147792 ETH
148697982022-05-30 1:30:51816 days ago1653874251
0xD164C1F2...76a4ad0Bc
0.01147792 ETH
148697982022-05-30 1:30:51816 days ago1653874251
0xD164C1F2...76a4ad0Bc
0.04591169 ETH
148689642022-05-29 22:10:19817 days ago1653862219
0xD164C1F2...76a4ad0Bc
0.03401957 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PANDAINU

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-26
*/

/*

PANDA INU OFFICIAL

Telegram: https://t.me/pandainu_eth
Website: www.panda-inu.org

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@#,,,,,,/&&@@@#,,,,,,,@@@@@#,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,@######%%@                 @@%######@,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,%#####%@                       .@%####@,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,@##%@                           *&###&,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,&@&    #######       #######     @@,,,,,,,,,,,,,,,,,,,,,
,,,,,,,(&(/@@,,&&,,,,,,,,@   ###@ &###.      ###@ @###    #,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,&@#(@/*@,,,,,,&   ####%&@##          #@@#####   @,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,@#%@@/*@,,,,,&   #######/   /@@@@    #######(   &,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,@#%@,,,,&(.&,,@    .#####(  /(*#@@*,@   ######    &,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,@(*@,@,             &@(///@             ,@,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,@(*@#@,,              #.             ,,@,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,@//(%#&@,,,,,.                ,,,,,&@,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,#%@#@#####%%@@@&/,,,,,,,*,,%@@@%%%%&,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,&@%#####%#######################%%*,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,@@%%@################@,#####%&*,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*              #*######%%@,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,&@@@#            (#####%%%@(,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,%(#,#####%@          @%%%%%%@##/#*@,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,((     ###%%*           #@&###     #@,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,&     #%%%@,,,,,...,,,,,@%%%#     #@,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,@%%%%%@@/***%@@@@@@@&/***%@&%%%%@,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,***********************,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,


*/
// 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;
    mapping (address => bool) internal authorizations;

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function isAuthorized(address adr) private view returns (bool) {
        return authorizations[adr];
    }

    function authorize(address adr) private onlyOwner {
        authorizations[adr] = true;
    }

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

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

    function transferOwnership(address payable adr) external authorized {
        _owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);

}  


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 PANDAINU 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 = 100000000000 * 10**9;
    
    uint256 private _buyMarketingFee = 4;
    uint256 private _previousBuyMarketingFee = _buyMarketingFee;
    uint256 private _buyLiquidityFee = 2;
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    uint256 private _buyDevFee = 2;
    uint256 private _previousBuyDevFee = _buyDevFee;
    
    uint256 private _sellMarketingFee = 4;
    uint256 private _previousSellMarketingFee = _sellMarketingFee;
    uint256 private _sellLiquidityFee = 2;
    uint256 private _previousSellLiquidityFee = _sellLiquidityFee;
    uint256 private _sellDevFee = 2;
    uint256 private _previousSellDevFee = _sellDevFee;

    uint256 private tokensForReward;
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;

    address payable private _rewardWallet;
    address payable private _MarketingWallet;
    address payable private _liquidityWallet;
    
    string private constant _name = "PANDA INU";
    string private constant _symbol = "PANDA";
    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 = 2;
    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 () {
        _MarketingWallet = payable(0xB99b08317527d3bD4f0947C338F58BC9DCe5662C);
        _liquidityWallet = payable(0x566C7CA2eC2a738413A79E21f22f8a160408632D);
        _rewardWallet = payable(0x566C7CA2eC2a738413A79E21f22f8a160408632D);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_MarketingWallet] = true;
        _isExcludedFromFee[_liquidityWallet] = true;
        _isExcludedFromFee[_rewardWallet] = true;
        emit Transfer(address(0x566C7CA2eC2a738413A79E21f22f8a160408632D), _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 + tokensForMarketing;
        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 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        
        
        uint256 ethForLiquidity = ethBalance - ethForReward - ethForMarketing;
        
        
        tokensForLiquidity = 0;
        tokensForReward = 0;
        tokensForMarketing = 0;
        
        (success,) = address(_rewardWallet).call{value: ethForReward}("");
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
        
        (success,) = address(_MarketingWallet).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 {
        _MarketingWallet.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 = 3000000000 * 10**9;
        _maxSellAmount = 3000000000 * 10**9;
        _maxWalletAmount = 3000000000 * 10**9;
        swapTokensAtAmount = 500000000 * 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 >= 100000000 * 10**9, "Swap amount cannot be lower than 0.1% total supply.");
        require(newAmount <= 1000000000 * 10**9, "Swap amount cannot be higher than 1.0% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function setMarketingWallet(address MarketingWallet) public onlyOwner() {
        require(MarketingWallet != address(0), "MarketingWallet address cannot be 0");
        _isExcludedFromFee[_MarketingWallet] = false;
        _MarketingWallet = payable(MarketingWallet);
        _isExcludedFromFee[_MarketingWallet] = 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 buyMarketingFee, uint256 buyLiquidityFee, uint256 buyDevFee) external onlyOwner {
        require(buyMarketingFee + buyLiquidityFee + buyDevFee <= 30, "Must keep buy taxes below 30%");
        _buyMarketingFee = buyMarketingFee;
        _buyLiquidityFee = buyLiquidityFee;
        _buyDevFee = buyDevFee;
    }

    function setSellFee(uint256 sellMarketingFee, uint256 sellLiquidityFee, uint256 sellDevFee) external onlyOwner {
        require(sellMarketingFee + sellLiquidityFee + sellDevFee <= 60, "Must keep sell taxes below 60%");
        _sellMarketingFee = sellMarketingFee;
        _sellLiquidityFee = sellLiquidityFee;
        _sellDevFee = sellDevFee;
    }

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

    function removeAllFee() private {
        if(_buyMarketingFee == 0 && _buyLiquidityFee == 0 && _buyDevFee == 0 && _sellMarketingFee == 0 && _sellLiquidityFee == 0 && _sellDevFee == 0) return;
        
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousBuyDevFee = _buyDevFee;
        _previousSellMarketingFee = _sellMarketingFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        _previousSellDevFee = _sellDevFee;
        
        _buyMarketingFee = 0;
        _buyLiquidityFee = 0;
        _buyDevFee = 0;
        _sellMarketingFee = 0;
        _sellLiquidityFee = 0;
        _sellDevFee = 0;
    }
    
    function restoreAllFee() private {
        _buyMarketingFee = _previousBuyMarketingFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _buyDevFee = _previousBuyDevFee;
        _sellMarketingFee = _previousSellMarketingFee;
        _sellLiquidityFee = _previousSellLiquidityFee;
        _sellDevFee = _previousSellDevFee;
    }
    
    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 MarketingFee;
        uint256 liqFee;
        uint256 rwrdFee;
        if(tradingActiveBlock + blocksToBlacklist >= block.number){
            _totalFees = 99;
            liqFee = 92;
        } else {
            _totalFees = _getTotalFees(isSell);
            if (isSell) {
                MarketingFee = _sellMarketingFee;
                liqFee = _sellLiquidityFee;
                rwrdFee = _sellDevFee;
            } else {
                MarketingFee = _buyMarketingFee;
                liqFee = _buyLiquidityFee;
                rwrdFee = _buyDevFee;
            }
        }

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

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

    function withdrawStuckETH() external authorized {
        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 _sellMarketingFee + _sellLiquidityFee + _sellDevFee;
        }
        return _buyMarketingFee + _buyLiquidityFee + _buyDevFee;
    }
}

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":false,"internalType":"address","name":"owner","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":[{"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":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyDevFee","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":"liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"MarketingWallet","type":"address"}],"name":"setMarketingWallet","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":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellDevFee","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":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260046008556008546009556002600a55600a54600b556002600c55600c54600d556004600e55600e54600f55600260105560105460115560026012556012546013556000601b60166101000a81548160ff0219169083151502179055506000601b60176101000a81548160ff0219169083151502179055506000601b60186101000a81548160ff0219169083151502179055506000601c556002601d5568056bc75e2d63100000601e5568056bc75e2d63100000601f5568056bc75e2d631000006020556000602155348015620000da57600080fd5b506000620000ed620005ca60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505073b99b08317527d3bd4f0947c338f58bc9dce5662c601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073566c7ca2ec2a738413a79e21f22f8a160408632d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073566c7ca2ec2a738413a79e21f22f8a160408632d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555068056bc75e2d6310000060036000620002c6620005ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200031a620005d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000541620005ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673566c7ca2ec2a738413a79e21f22f8a160408632d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d63100000604051620005bc91906200060c565b60405180910390a362000633565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006068162000629565b82525050565b6000602082019050620006236000830184620005fb565b92915050565b6000819050919050565b61538880620006436000396000f3fe6080604052600436106101dc5760003560e01c806370a0823111610102578063dd62ed3e11610095578063ea2f0b3711610064578063ea2f0b3714610673578063f2fde38b1461069c578063f34eb0b8146106c5578063f5648a4f146106ee576101e3565b8063dd62ed3e146105bb578063e01af92c146105f8578063e6f7ef4d14610621578063e99c9d091461064a576101e3565b8063afa4f3b2116100d1578063afa4f3b21461053b578063b515566a14610564578063c3c8cd801461058d578063c9567bf9146105a4576101e3565b806370a082311461046b5780638da5cb5b146104a857806395d89b41146104d3578063a9059cbb146104fe576101e3565b806327a14fc21161017a5780635932ead1116101495780635932ead1146103d95780635958621e146104025780635d098b381461042b5780636fc3eaec14610454576101e3565b806327a14fc214610333578063296f0a0c1461035c578063313ce56714610385578063437823ec146103b0576101e3565b80631d865c30116101b65780631d865c301461027b57806323b872dd146102a457806325519cf2146102e1578063273123b71461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610705565b60405161020a91906145ce565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190613e84565b610742565b60405161024791906145b3565b60405180910390f35b34801561025c57600080fd5b50610265610760565b6040516102729190614890565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190613f94565b610771565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190613e31565b61087a565b6040516102d891906145b3565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613f94565b610953565b005b34801561031657600080fd5b50610331600480360381019061032c9190613d6a565b610a5c565b005b34801561033f57600080fd5b5061035a60048036038101906103559190613f67565b610b4c565b005b34801561036857600080fd5b50610383600480360381019061037e9190613d6a565b610beb565b005b34801561039157600080fd5b5061039a610e28565b6040516103a7919061493c565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613d6a565b610e31565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190613f0d565b610f21565b005b34801561040e57600080fd5b5061042960048036038101906104249190613d6a565b610fd3565b005b34801561043757600080fd5b50610452600480360381019061044d9190613d6a565b611210565b005b34801561046057600080fd5b5061046961144d565b005b34801561047757600080fd5b50610492600480360381019061048d9190613d6a565b6114a6565b60405161049f9190614890565b60405180910390f35b3480156104b457600080fd5b506104bd6114ef565b6040516104ca9190614469565b60405180910390f35b3480156104df57600080fd5b506104e8611518565b6040516104f591906145ce565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190613e84565b611555565b60405161053291906145b3565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190613f67565b611573565b005b34801561057057600080fd5b5061058b60048036038101906105869190613ec4565b6116a8565b005b34801561059957600080fd5b506105a26117d2565b005b3480156105b057600080fd5b506105b9611833565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190613df1565b611dc3565b6040516105ef9190614890565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613f0d565b611e4a565b005b34801561062d57600080fd5b5061064860048036038101906106439190613f67565b611efc565b005b34801561065657600080fd5b50610671600480360381019061066c9190613f67565b611f9b565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613d6a565b61203a565b005b3480156106a857600080fd5b506106c360048036038101906106be9190613dc4565b61212a565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190613f67565b612244565b005b3480156106fa57600080fd5b506107036122e3565b005b60606040518060400160405280600981526020017f50414e444120494e550000000000000000000000000000000000000000000000815250905090565b600061075661074f6123ec565b84846123f4565b6001905092915050565b600068056bc75e2d63100000905090565b6107796123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd906146d0565b60405180910390fd5b603c8183856108159190614a08565b61081f9190614a08565b1115610860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610857906146f0565b60405180910390fd5b82600e819055508160108190555080601281905550505050565b60006108878484846125bf565b610948846108936123ec565b6109438560405180606001604052806028815260200161532b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108f96123ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5f9092919063ffffffff16565b6123f4565b600190509392505050565b61095b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906146d0565b60405180910390fd5b601e8183856109f79190614a08565b610a019190614a08565b1115610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a39906146b0565b60405180910390fd5b8260088190555081600a8190555080600c81905550505050565b610a646123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae8906146d0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b546123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd8906146d0565b60405180910390fd5b8060208190555050565b610bf36123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c77906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce790614730565b60405180910390fd5b600060056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610e396123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd906146d0565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f296123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad906146d0565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b610fdb6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf906147f0565b60405180910390fd5b600060056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112186123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90614830565b60405180910390fd5b600060056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61145633612ec3565b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90614850565b60405180910390fd5b60004790506114a381612f19565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f50414e4441000000000000000000000000000000000000000000000000000000815250905090565b60006115696115626123ec565b84846125bf565b6001905092915050565b61157b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff906146d0565b60405180910390fd5b67016345785d8a0000811015611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a906147d0565b60405180910390fd5b670de0b6b3a764000081111561169e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169590614750565b60405180910390fd5b8060218190555050565b6116b06123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906146d0565b60405180910390fd5b60005b81518110156117ce5760016006600084848151811061176257611761614cd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117c690614c30565b915050611740565b5050565b6117db33612ec3565b61181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190614850565b60405180910390fd5b6000611825306114a6565b905061183081612f85565b50565b61183b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf906146d0565b60405180910390fd5b601b60149054906101000a900460ff1615611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f906147b0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119a830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d631000006123f4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a269190613d97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8857600080fd5b505afa158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190613d97565b6040518363ffffffff1660e01b8152600401611add92919061449f565b602060405180830381600087803b158015611af757600080fd5b505af1158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613d97565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611bb8306114a6565b600080611bc36114ef565b426040518863ffffffff1660e01b8152600401611be596959493929190614552565b6060604051808303818588803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c379190613fe7565b5050506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff0219169083151502179055506729a2241af62c0000601e819055506729a2241af62c0000601f819055506729a2241af62c00006020819055506706f05b59d3b200006021819055506001601b60146101000a81548160ff02191690831515021790555043601c81905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611d6d9291906144c8565b602060405180830381600087803b158015611d8757600080fd5b505af1158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190613f3a565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e526123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed6906146d0565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b611f046123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906146d0565b60405180910390fd5b80601d8190555050565b611fa36123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906146d0565b60405180910390fd5b80601f8190555050565b6120426123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c6906146d0565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61213333612ec3565b612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614850565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122399190614484565b60405180910390a150565b61224c6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906146d0565b60405180910390fd5b80601e8190555050565b6122ec33612ec3565b61232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614850565b60405180910390fd5b601b60149054906101000a900460ff161561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290614870565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516123a190614454565b60006040518083038185875af1925050503d80600081146123de576040519150601f19603f3d011682016040523d82523d6000602084013e6123e3565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90614790565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614610565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125b29190614890565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690614770565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612696906145f0565b60405180910390fd5b600081116126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d990614710565b60405180910390fd5b6000806126ed6114ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561275b575061272b6114ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127945750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127ce575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127e75750601b60159054906101000a900460ff16155b15612c5d57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128905750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61289957600080fd5b60019150601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156129485750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561299e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129b65750601b60189054906101000a900460ff165b15612af457601e54831115612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614670565b60405180910390fd5b60205483612a0d866114a6565b612a179190614a08565b1115612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90614650565b60405180910390fd5b42600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612aa357600080fd5b601e42612ab09190614a08565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b9f5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612bf55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c0d5750601b60189054906101000a900460ff165b15612c5c57601f54831115612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614810565b60405180910390fd5b600190505b5b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cfe5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d0857600091505b6000612d13306114a6565b9050600060215482118015612d255750825b9050808015612d405750601b60179054906101000a900460ff165b8015612d595750601b60159054906101000a900460ff16155b8015612daf5750600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e055750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e49576001601b60156101000a81548160ff021916908315150217905550612e2d61320d565b6000601b60156101000a81548160ff0219169083151502179055505b612e5687878787876134f4565b50505050505050565b6000838311158290612ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9e91906145ce565b60405180910390fd5b5060008385612eb69190614ae9565b9050809150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f81573d6000803e3d6000fd5b5050565b6001601b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612fbd57612fbc614d06565b5b604051908082528060200260200182016040528015612feb5781602001602082028036833780820191505090505b509050308160008151811061300357613002614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a557600080fd5b505afa1580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130dd9190613d97565b816001815181106130f1576130f0614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061315830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131bc9594939291906148ab565b600060405180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b50505050506000601b60166101000a81548160ff02191690831515021790555050565b6000613218306114a6565b9050600060155460145460165461322f9190614a08565b6132399190614a08565b905060008083148061324b5750600082145b15613258575050506134f2565b600a6021546132679190614a8f565b83111561328057600a60215461327d9190614a8f565b92505b6000600283601654866132939190614a8f565b61329d9190614a5e565b6132a79190614a5e565b905060006132be828661353490919063ffffffff16565b905060004790506132ce82612f85565b60006132e3824761353490919063ffffffff16565b9050600061330e876133006014548561357e90919063ffffffff16565b6135f990919063ffffffff16565b905060006133398861332b6015548661357e90919063ffffffff16565b6135f990919063ffffffff16565b9050600081838561334a9190614ae9565b6133549190614ae9565b9050600060168190555060006014819055506000601581905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516133b490614454565b60006040518083038185875af1925050503d80600081146133f1576040519150601f19603f3d011682016040523d82523d6000602084013e6133f6565b606091505b50508098505060008711801561340c5750600081115b156134595761341b8782613643565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161345093929190614905565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161349f90614454565b60006040518083038185875af1925050503d80600081146134dc576040519150601f19603f3d011682016040523d82523d6000602084013e6134e1565b606091505b505080985050505050505050505050505b565b8161350657613501613752565b613514565b613511858483613811565b92505b61351f85858561395b565b8161352d5761352c613aef565b5b5050505050565b600061357683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e5f565b905092915050565b60008083141561359157600090506135f3565b6000828461359f9190614a8f565b90508284826135ae9190614a5e565b146135ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e590614690565b60405180910390fd5b809150505b92915050565b600061363b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b27565b905092915050565b61367030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016136f9969594939291906144f1565b6060604051808303818588803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061374b9190613fe7565b5050505050565b600060085414801561376657506000600a54145b801561377457506000600c54145b801561378257506000600e54145b801561379057506000601054145b801561379e57506000601254145b156137a85761380f565b600854600981905550600a54600b81905550600c54600d81905550600e54600f8190555060105460118190555060125460138190555060006008819055506000600a819055506000600c819055506000600e81905550600060108190555060006012819055505b565b600080600080600043601d54601c5461382a9190614a08565b1061383c5760639350605c9150613872565b61384586613b8a565b9350851561386157600e54925060105491506012549050613871565b6008549250600a549150600c5490505b5b600061389a606461388c878b61357e90919063ffffffff16565b6135f990919063ffffffff16565b90508482826138a99190614a8f565b6138b39190614a5e565b601460008282546138c49190614a08565b925050819055508484826138d89190614a8f565b6138e29190614a5e565b601560008282546138f39190614a08565b925050819055508483826139079190614a8f565b6139119190614a5e565b601660008282546139229190614a08565b92505081905550600081111561393e5761393d89308361395b565b5b808861394a9190614ae9565b975087955050505050509392505050565b6139ad81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353490919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ae29190614890565b60405180910390a3505050565b600954600881905550600b54600a81905550600d54600c81905550600f54600e81905550601154601081905550601354601281905550565b60008083118290613b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6591906145ce565b60405180910390fd5b5060008385613b7d9190614a5e565b9050809150509392505050565b60008115613bb657601254601054600e54613ba59190614a08565b613baf9190614a08565b9050613bd6565b600c54600a54600854613bc99190614a08565b613bd39190614a08565b90505b919050565b6000808284613bea9190614a08565b905083811015613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2690614630565b60405180910390fd5b8091505092915050565b6000613c4c613c478461497c565b614957565b90508083825260208201905082856020860282011115613c6f57613c6e614d3a565b5b60005b85811015613c9f5781613c858882613ca9565b845260208401935060208301925050600181019050613c72565b5050509392505050565b600081359050613cb8816152ce565b92915050565b600081519050613ccd816152ce565b92915050565b600081359050613ce2816152e5565b92915050565b600082601f830112613cfd57613cfc614d35565b5b8135613d0d848260208601613c39565b91505092915050565b600081359050613d25816152fc565b92915050565b600081519050613d3a816152fc565b92915050565b600081359050613d4f81615313565b92915050565b600081519050613d6481615313565b92915050565b600060208284031215613d8057613d7f614d44565b5b6000613d8e84828501613ca9565b91505092915050565b600060208284031215613dad57613dac614d44565b5b6000613dbb84828501613cbe565b91505092915050565b600060208284031215613dda57613dd9614d44565b5b6000613de884828501613cd3565b91505092915050565b60008060408385031215613e0857613e07614d44565b5b6000613e1685828601613ca9565b9250506020613e2785828601613ca9565b9150509250929050565b600080600060608486031215613e4a57613e49614d44565b5b6000613e5886828701613ca9565b9350506020613e6986828701613ca9565b9250506040613e7a86828701613d40565b9150509250925092565b60008060408385031215613e9b57613e9a614d44565b5b6000613ea985828601613ca9565b9250506020613eba85828601613d40565b9150509250929050565b600060208284031215613eda57613ed9614d44565b5b600082013567ffffffffffffffff811115613ef857613ef7614d3f565b5b613f0484828501613ce8565b91505092915050565b600060208284031215613f2357613f22614d44565b5b6000613f3184828501613d16565b91505092915050565b600060208284031215613f5057613f4f614d44565b5b6000613f5e84828501613d2b565b91505092915050565b600060208284031215613f7d57613f7c614d44565b5b6000613f8b84828501613d40565b91505092915050565b600080600060608486031215613fad57613fac614d44565b5b6000613fbb86828701613d40565b9350506020613fcc86828701613d40565b9250506040613fdd86828701613d40565b9150509250925092565b60008060006060848603121561400057613fff614d44565b5b600061400e86828701613d55565b935050602061401f86828701613d55565b925050604061403086828701613d55565b9150509250925092565b60006140468383614061565b60208301905092915050565b61405b81614b84565b82525050565b61406a81614b1d565b82525050565b61407981614b1d565b82525050565b600061408a826149b8565b61409481856149db565b935061409f836149a8565b8060005b838110156140d05781516140b7888261403a565b97506140c2836149ce565b9250506001810190506140a3565b5085935050505092915050565b6140e681614b41565b82525050565b6140f581614b96565b82525050565b6000614106826149c3565b61411081856149f7565b9350614120818560208601614bcc565b61412981614d49565b840191505092915050565b60006141416023836149f7565b915061414c82614d5a565b604082019050919050565b60006141646022836149f7565b915061416f82614da9565b604082019050919050565b6000614187601b836149f7565b915061419282614df8565b602082019050919050565b60006141aa6024836149f7565b91506141b582614e21565b604082019050919050565b60006141cd6029836149f7565b91506141d882614e70565b604082019050919050565b60006141f06021836149f7565b91506141fb82614ebf565b604082019050919050565b6000614213601d836149f7565b915061421e82614f0e565b602082019050919050565b60006142366020836149f7565b915061424182614f37565b602082019050919050565b6000614259601e836149f7565b915061426482614f60565b602082019050919050565b600061427c6029836149f7565b915061428782614f89565b604082019050919050565b600061429f6023836149f7565b91506142aa82614fd8565b604082019050919050565b60006142c26034836149f7565b91506142cd82615027565b604082019050919050565b60006142e56025836149f7565b91506142f082615076565b604082019050919050565b60006143086000836149ec565b9150614313826150c5565b600082019050919050565b600061432b6024836149f7565b9150614336826150c8565b604082019050919050565b600061434e6017836149f7565b915061435982615117565b602082019050919050565b60006143716033836149f7565b915061437c82615140565b604082019050919050565b60006143946020836149f7565b915061439f8261518f565b602082019050919050565b60006143b7602a836149f7565b91506143c2826151b8565b604082019050919050565b60006143da6023836149f7565b91506143e582615207565b604082019050919050565b60006143fd600b836149f7565b915061440882615256565b602082019050919050565b6000614420602b836149f7565b915061442b8261527f565b604082019050919050565b61443f81614b6d565b82525050565b61444e81614b77565b82525050565b600061445f826142fb565b9150819050919050565b600060208201905061447e6000830184614070565b92915050565b60006020820190506144996000830184614052565b92915050565b60006040820190506144b46000830185614070565b6144c16020830184614070565b9392505050565b60006040820190506144dd6000830185614070565b6144ea6020830184614436565b9392505050565b600060c0820190506145066000830189614070565b6145136020830188614436565b61452060408301876140ec565b61452d60608301866140ec565b61453a6080830185614052565b61454760a0830184614436565b979650505050505050565b600060c0820190506145676000830189614070565b6145746020830188614436565b61458160408301876140ec565b61458e60608301866140ec565b61459b6080830185614070565b6145a860a0830184614436565b979650505050505050565b60006020820190506145c860008301846140dd565b92915050565b600060208201905081810360008301526145e881846140fb565b905092915050565b6000602082019050818103600083015261460981614134565b9050919050565b6000602082019050818103600083015261462981614157565b9050919050565b600060208201905081810360008301526146498161417a565b9050919050565b600060208201905081810360008301526146698161419d565b9050919050565b60006020820190508181036000830152614689816141c0565b9050919050565b600060208201905081810360008301526146a9816141e3565b9050919050565b600060208201905081810360008301526146c981614206565b9050919050565b600060208201905081810360008301526146e981614229565b9050919050565b600060208201905081810360008301526147098161424c565b9050919050565b600060208201905081810360008301526147298161426f565b9050919050565b6000602082019050818103600083015261474981614292565b9050919050565b60006020820190508181036000830152614769816142b5565b9050919050565b60006020820190508181036000830152614789816142d8565b9050919050565b600060208201905081810360008301526147a98161431e565b9050919050565b600060208201905081810360008301526147c981614341565b9050919050565b600060208201905081810360008301526147e981614364565b9050919050565b6000602082019050818103600083015261480981614387565b9050919050565b60006020820190508181036000830152614829816143aa565b9050919050565b60006020820190508181036000830152614849816143cd565b9050919050565b60006020820190508181036000830152614869816143f0565b9050919050565b6000602082019050818103600083015261488981614413565b9050919050565b60006020820190506148a56000830184614436565b92915050565b600060a0820190506148c06000830188614436565b6148cd60208301876140ec565b81810360408301526148df818661407f565b90506148ee6060830185614070565b6148fb6080830184614436565b9695505050505050565b600060608201905061491a6000830186614436565b6149276020830185614436565b6149346040830184614436565b949350505050565b60006020820190506149516000830184614445565b92915050565b6000614961614972565b905061496d8282614bff565b919050565b6000604051905090565b600067ffffffffffffffff82111561499757614996614d06565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a1382614b6d565b9150614a1e83614b6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5357614a52614c79565b5b828201905092915050565b6000614a6982614b6d565b9150614a7483614b6d565b925082614a8457614a83614ca8565b5b828204905092915050565b6000614a9a82614b6d565b9150614aa583614b6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ade57614add614c79565b5b828202905092915050565b6000614af482614b6d565b9150614aff83614b6d565b925082821015614b1257614b11614c79565b5b828203905092915050565b6000614b2882614b4d565b9050919050565b6000614b3a82614b4d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b8f82614ba8565b9050919050565b6000614ba182614b6d565b9050919050565b6000614bb382614bba565b9050919050565b6000614bc582614b4d565b9050919050565b60005b83811015614bea578082015181840152602081019050614bcf565b83811115614bf9576000848401525b50505050565b614c0882614d49565b810181811067ffffffffffffffff82111715614c2757614c26614d06565b5b80604052505050565b6000614c3b82614b6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6e57614c6d614c79565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720333025000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203630250000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312e302520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b7f72657761726457616c6c657420616464726573732063616e6e6f742062652030600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b6152d781614b1d565b81146152e257600080fd5b50565b6152ee81614b2f565b81146152f957600080fd5b50565b61530581614b41565b811461531057600080fd5b50565b61531c81614b6d565b811461532757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206a39ca8727e769fa5fd5f0c407a0888a2e2ceb085fa8d191967bdcfea10ccf7664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806370a0823111610102578063dd62ed3e11610095578063ea2f0b3711610064578063ea2f0b3714610673578063f2fde38b1461069c578063f34eb0b8146106c5578063f5648a4f146106ee576101e3565b8063dd62ed3e146105bb578063e01af92c146105f8578063e6f7ef4d14610621578063e99c9d091461064a576101e3565b8063afa4f3b2116100d1578063afa4f3b21461053b578063b515566a14610564578063c3c8cd801461058d578063c9567bf9146105a4576101e3565b806370a082311461046b5780638da5cb5b146104a857806395d89b41146104d3578063a9059cbb146104fe576101e3565b806327a14fc21161017a5780635932ead1116101495780635932ead1146103d95780635958621e146104025780635d098b381461042b5780636fc3eaec14610454576101e3565b806327a14fc214610333578063296f0a0c1461035c578063313ce56714610385578063437823ec146103b0576101e3565b80631d865c30116101b65780631d865c301461027b57806323b872dd146102a457806325519cf2146102e1578063273123b71461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610705565b60405161020a91906145ce565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190613e84565b610742565b60405161024791906145b3565b60405180910390f35b34801561025c57600080fd5b50610265610760565b6040516102729190614890565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190613f94565b610771565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190613e31565b61087a565b6040516102d891906145b3565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613f94565b610953565b005b34801561031657600080fd5b50610331600480360381019061032c9190613d6a565b610a5c565b005b34801561033f57600080fd5b5061035a60048036038101906103559190613f67565b610b4c565b005b34801561036857600080fd5b50610383600480360381019061037e9190613d6a565b610beb565b005b34801561039157600080fd5b5061039a610e28565b6040516103a7919061493c565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613d6a565b610e31565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190613f0d565b610f21565b005b34801561040e57600080fd5b5061042960048036038101906104249190613d6a565b610fd3565b005b34801561043757600080fd5b50610452600480360381019061044d9190613d6a565b611210565b005b34801561046057600080fd5b5061046961144d565b005b34801561047757600080fd5b50610492600480360381019061048d9190613d6a565b6114a6565b60405161049f9190614890565b60405180910390f35b3480156104b457600080fd5b506104bd6114ef565b6040516104ca9190614469565b60405180910390f35b3480156104df57600080fd5b506104e8611518565b6040516104f591906145ce565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190613e84565b611555565b60405161053291906145b3565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190613f67565b611573565b005b34801561057057600080fd5b5061058b60048036038101906105869190613ec4565b6116a8565b005b34801561059957600080fd5b506105a26117d2565b005b3480156105b057600080fd5b506105b9611833565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190613df1565b611dc3565b6040516105ef9190614890565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613f0d565b611e4a565b005b34801561062d57600080fd5b5061064860048036038101906106439190613f67565b611efc565b005b34801561065657600080fd5b50610671600480360381019061066c9190613f67565b611f9b565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613d6a565b61203a565b005b3480156106a857600080fd5b506106c360048036038101906106be9190613dc4565b61212a565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190613f67565b612244565b005b3480156106fa57600080fd5b506107036122e3565b005b60606040518060400160405280600981526020017f50414e444120494e550000000000000000000000000000000000000000000000815250905090565b600061075661074f6123ec565b84846123f4565b6001905092915050565b600068056bc75e2d63100000905090565b6107796123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd906146d0565b60405180910390fd5b603c8183856108159190614a08565b61081f9190614a08565b1115610860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610857906146f0565b60405180910390fd5b82600e819055508160108190555080601281905550505050565b60006108878484846125bf565b610948846108936123ec565b6109438560405180606001604052806028815260200161532b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108f96123ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5f9092919063ffffffff16565b6123f4565b600190509392505050565b61095b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906146d0565b60405180910390fd5b601e8183856109f79190614a08565b610a019190614a08565b1115610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a39906146b0565b60405180910390fd5b8260088190555081600a8190555080600c81905550505050565b610a646123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae8906146d0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b546123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd8906146d0565b60405180910390fd5b8060208190555050565b610bf36123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c77906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce790614730565b60405180910390fd5b600060056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610e396123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd906146d0565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f296123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad906146d0565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b610fdb6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf906147f0565b60405180910390fd5b600060056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112186123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90614830565b60405180910390fd5b600060056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61145633612ec3565b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90614850565b60405180910390fd5b60004790506114a381612f19565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f50414e4441000000000000000000000000000000000000000000000000000000815250905090565b60006115696115626123ec565b84846125bf565b6001905092915050565b61157b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff906146d0565b60405180910390fd5b67016345785d8a0000811015611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a906147d0565b60405180910390fd5b670de0b6b3a764000081111561169e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169590614750565b60405180910390fd5b8060218190555050565b6116b06123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906146d0565b60405180910390fd5b60005b81518110156117ce5760016006600084848151811061176257611761614cd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117c690614c30565b915050611740565b5050565b6117db33612ec3565b61181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190614850565b60405180910390fd5b6000611825306114a6565b905061183081612f85565b50565b61183b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf906146d0565b60405180910390fd5b601b60149054906101000a900460ff1615611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f906147b0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119a830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d631000006123f4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a269190613d97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8857600080fd5b505afa158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190613d97565b6040518363ffffffff1660e01b8152600401611add92919061449f565b602060405180830381600087803b158015611af757600080fd5b505af1158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613d97565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611bb8306114a6565b600080611bc36114ef565b426040518863ffffffff1660e01b8152600401611be596959493929190614552565b6060604051808303818588803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c379190613fe7565b5050506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff0219169083151502179055506729a2241af62c0000601e819055506729a2241af62c0000601f819055506729a2241af62c00006020819055506706f05b59d3b200006021819055506001601b60146101000a81548160ff02191690831515021790555043601c81905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611d6d9291906144c8565b602060405180830381600087803b158015611d8757600080fd5b505af1158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190613f3a565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e526123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed6906146d0565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b611f046123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906146d0565b60405180910390fd5b80601d8190555050565b611fa36123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906146d0565b60405180910390fd5b80601f8190555050565b6120426123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c6906146d0565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61213333612ec3565b612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614850565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122399190614484565b60405180910390a150565b61224c6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906146d0565b60405180910390fd5b80601e8190555050565b6122ec33612ec3565b61232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614850565b60405180910390fd5b601b60149054906101000a900460ff161561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290614870565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516123a190614454565b60006040518083038185875af1925050503d80600081146123de576040519150601f19603f3d011682016040523d82523d6000602084013e6123e3565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90614790565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614610565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125b29190614890565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690614770565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612696906145f0565b60405180910390fd5b600081116126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d990614710565b60405180910390fd5b6000806126ed6114ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561275b575061272b6114ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127945750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127ce575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127e75750601b60159054906101000a900460ff16155b15612c5d57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128905750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61289957600080fd5b60019150601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156129485750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561299e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129b65750601b60189054906101000a900460ff165b15612af457601e54831115612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614670565b60405180910390fd5b60205483612a0d866114a6565b612a179190614a08565b1115612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90614650565b60405180910390fd5b42600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612aa357600080fd5b601e42612ab09190614a08565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b9f5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612bf55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c0d5750601b60189054906101000a900460ff165b15612c5c57601f54831115612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614810565b60405180910390fd5b600190505b5b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cfe5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d0857600091505b6000612d13306114a6565b9050600060215482118015612d255750825b9050808015612d405750601b60179054906101000a900460ff165b8015612d595750601b60159054906101000a900460ff16155b8015612daf5750600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e055750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e49576001601b60156101000a81548160ff021916908315150217905550612e2d61320d565b6000601b60156101000a81548160ff0219169083151502179055505b612e5687878787876134f4565b50505050505050565b6000838311158290612ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9e91906145ce565b60405180910390fd5b5060008385612eb69190614ae9565b9050809150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f81573d6000803e3d6000fd5b5050565b6001601b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612fbd57612fbc614d06565b5b604051908082528060200260200182016040528015612feb5781602001602082028036833780820191505090505b509050308160008151811061300357613002614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a557600080fd5b505afa1580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130dd9190613d97565b816001815181106130f1576130f0614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061315830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131bc9594939291906148ab565b600060405180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b50505050506000601b60166101000a81548160ff02191690831515021790555050565b6000613218306114a6565b9050600060155460145460165461322f9190614a08565b6132399190614a08565b905060008083148061324b5750600082145b15613258575050506134f2565b600a6021546132679190614a8f565b83111561328057600a60215461327d9190614a8f565b92505b6000600283601654866132939190614a8f565b61329d9190614a5e565b6132a79190614a5e565b905060006132be828661353490919063ffffffff16565b905060004790506132ce82612f85565b60006132e3824761353490919063ffffffff16565b9050600061330e876133006014548561357e90919063ffffffff16565b6135f990919063ffffffff16565b905060006133398861332b6015548661357e90919063ffffffff16565b6135f990919063ffffffff16565b9050600081838561334a9190614ae9565b6133549190614ae9565b9050600060168190555060006014819055506000601581905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516133b490614454565b60006040518083038185875af1925050503d80600081146133f1576040519150601f19603f3d011682016040523d82523d6000602084013e6133f6565b606091505b50508098505060008711801561340c5750600081115b156134595761341b8782613643565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161345093929190614905565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161349f90614454565b60006040518083038185875af1925050503d80600081146134dc576040519150601f19603f3d011682016040523d82523d6000602084013e6134e1565b606091505b505080985050505050505050505050505b565b8161350657613501613752565b613514565b613511858483613811565b92505b61351f85858561395b565b8161352d5761352c613aef565b5b5050505050565b600061357683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e5f565b905092915050565b60008083141561359157600090506135f3565b6000828461359f9190614a8f565b90508284826135ae9190614a5e565b146135ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e590614690565b60405180910390fd5b809150505b92915050565b600061363b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b27565b905092915050565b61367030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016136f9969594939291906144f1565b6060604051808303818588803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061374b9190613fe7565b5050505050565b600060085414801561376657506000600a54145b801561377457506000600c54145b801561378257506000600e54145b801561379057506000601054145b801561379e57506000601254145b156137a85761380f565b600854600981905550600a54600b81905550600c54600d81905550600e54600f8190555060105460118190555060125460138190555060006008819055506000600a819055506000600c819055506000600e81905550600060108190555060006012819055505b565b600080600080600043601d54601c5461382a9190614a08565b1061383c5760639350605c9150613872565b61384586613b8a565b9350851561386157600e54925060105491506012549050613871565b6008549250600a549150600c5490505b5b600061389a606461388c878b61357e90919063ffffffff16565b6135f990919063ffffffff16565b90508482826138a99190614a8f565b6138b39190614a5e565b601460008282546138c49190614a08565b925050819055508484826138d89190614a8f565b6138e29190614a5e565b601560008282546138f39190614a08565b925050819055508483826139079190614a8f565b6139119190614a5e565b601660008282546139229190614a08565b92505081905550600081111561393e5761393d89308361395b565b5b808861394a9190614ae9565b975087955050505050509392505050565b6139ad81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353490919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ae29190614890565b60405180910390a3505050565b600954600881905550600b54600a81905550600d54600c81905550600f54600e81905550601154601081905550601354601281905550565b60008083118290613b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6591906145ce565b60405180910390fd5b5060008385613b7d9190614a5e565b9050809150509392505050565b60008115613bb657601254601054600e54613ba59190614a08565b613baf9190614a08565b9050613bd6565b600c54600a54600854613bc99190614a08565b613bd39190614a08565b90505b919050565b6000808284613bea9190614a08565b905083811015613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2690614630565b60405180910390fd5b8091505092915050565b6000613c4c613c478461497c565b614957565b90508083825260208201905082856020860282011115613c6f57613c6e614d3a565b5b60005b85811015613c9f5781613c858882613ca9565b845260208401935060208301925050600181019050613c72565b5050509392505050565b600081359050613cb8816152ce565b92915050565b600081519050613ccd816152ce565b92915050565b600081359050613ce2816152e5565b92915050565b600082601f830112613cfd57613cfc614d35565b5b8135613d0d848260208601613c39565b91505092915050565b600081359050613d25816152fc565b92915050565b600081519050613d3a816152fc565b92915050565b600081359050613d4f81615313565b92915050565b600081519050613d6481615313565b92915050565b600060208284031215613d8057613d7f614d44565b5b6000613d8e84828501613ca9565b91505092915050565b600060208284031215613dad57613dac614d44565b5b6000613dbb84828501613cbe565b91505092915050565b600060208284031215613dda57613dd9614d44565b5b6000613de884828501613cd3565b91505092915050565b60008060408385031215613e0857613e07614d44565b5b6000613e1685828601613ca9565b9250506020613e2785828601613ca9565b9150509250929050565b600080600060608486031215613e4a57613e49614d44565b5b6000613e5886828701613ca9565b9350506020613e6986828701613ca9565b9250506040613e7a86828701613d40565b9150509250925092565b60008060408385031215613e9b57613e9a614d44565b5b6000613ea985828601613ca9565b9250506020613eba85828601613d40565b9150509250929050565b600060208284031215613eda57613ed9614d44565b5b600082013567ffffffffffffffff811115613ef857613ef7614d3f565b5b613f0484828501613ce8565b91505092915050565b600060208284031215613f2357613f22614d44565b5b6000613f3184828501613d16565b91505092915050565b600060208284031215613f5057613f4f614d44565b5b6000613f5e84828501613d2b565b91505092915050565b600060208284031215613f7d57613f7c614d44565b5b6000613f8b84828501613d40565b91505092915050565b600080600060608486031215613fad57613fac614d44565b5b6000613fbb86828701613d40565b9350506020613fcc86828701613d40565b9250506040613fdd86828701613d40565b9150509250925092565b60008060006060848603121561400057613fff614d44565b5b600061400e86828701613d55565b935050602061401f86828701613d55565b925050604061403086828701613d55565b9150509250925092565b60006140468383614061565b60208301905092915050565b61405b81614b84565b82525050565b61406a81614b1d565b82525050565b61407981614b1d565b82525050565b600061408a826149b8565b61409481856149db565b935061409f836149a8565b8060005b838110156140d05781516140b7888261403a565b97506140c2836149ce565b9250506001810190506140a3565b5085935050505092915050565b6140e681614b41565b82525050565b6140f581614b96565b82525050565b6000614106826149c3565b61411081856149f7565b9350614120818560208601614bcc565b61412981614d49565b840191505092915050565b60006141416023836149f7565b915061414c82614d5a565b604082019050919050565b60006141646022836149f7565b915061416f82614da9565b604082019050919050565b6000614187601b836149f7565b915061419282614df8565b602082019050919050565b60006141aa6024836149f7565b91506141b582614e21565b604082019050919050565b60006141cd6029836149f7565b91506141d882614e70565b604082019050919050565b60006141f06021836149f7565b91506141fb82614ebf565b604082019050919050565b6000614213601d836149f7565b915061421e82614f0e565b602082019050919050565b60006142366020836149f7565b915061424182614f37565b602082019050919050565b6000614259601e836149f7565b915061426482614f60565b602082019050919050565b600061427c6029836149f7565b915061428782614f89565b604082019050919050565b600061429f6023836149f7565b91506142aa82614fd8565b604082019050919050565b60006142c26034836149f7565b91506142cd82615027565b604082019050919050565b60006142e56025836149f7565b91506142f082615076565b604082019050919050565b60006143086000836149ec565b9150614313826150c5565b600082019050919050565b600061432b6024836149f7565b9150614336826150c8565b604082019050919050565b600061434e6017836149f7565b915061435982615117565b602082019050919050565b60006143716033836149f7565b915061437c82615140565b604082019050919050565b60006143946020836149f7565b915061439f8261518f565b602082019050919050565b60006143b7602a836149f7565b91506143c2826151b8565b604082019050919050565b60006143da6023836149f7565b91506143e582615207565b604082019050919050565b60006143fd600b836149f7565b915061440882615256565b602082019050919050565b6000614420602b836149f7565b915061442b8261527f565b604082019050919050565b61443f81614b6d565b82525050565b61444e81614b77565b82525050565b600061445f826142fb565b9150819050919050565b600060208201905061447e6000830184614070565b92915050565b60006020820190506144996000830184614052565b92915050565b60006040820190506144b46000830185614070565b6144c16020830184614070565b9392505050565b60006040820190506144dd6000830185614070565b6144ea6020830184614436565b9392505050565b600060c0820190506145066000830189614070565b6145136020830188614436565b61452060408301876140ec565b61452d60608301866140ec565b61453a6080830185614052565b61454760a0830184614436565b979650505050505050565b600060c0820190506145676000830189614070565b6145746020830188614436565b61458160408301876140ec565b61458e60608301866140ec565b61459b6080830185614070565b6145a860a0830184614436565b979650505050505050565b60006020820190506145c860008301846140dd565b92915050565b600060208201905081810360008301526145e881846140fb565b905092915050565b6000602082019050818103600083015261460981614134565b9050919050565b6000602082019050818103600083015261462981614157565b9050919050565b600060208201905081810360008301526146498161417a565b9050919050565b600060208201905081810360008301526146698161419d565b9050919050565b60006020820190508181036000830152614689816141c0565b9050919050565b600060208201905081810360008301526146a9816141e3565b9050919050565b600060208201905081810360008301526146c981614206565b9050919050565b600060208201905081810360008301526146e981614229565b9050919050565b600060208201905081810360008301526147098161424c565b9050919050565b600060208201905081810360008301526147298161426f565b9050919050565b6000602082019050818103600083015261474981614292565b9050919050565b60006020820190508181036000830152614769816142b5565b9050919050565b60006020820190508181036000830152614789816142d8565b9050919050565b600060208201905081810360008301526147a98161431e565b9050919050565b600060208201905081810360008301526147c981614341565b9050919050565b600060208201905081810360008301526147e981614364565b9050919050565b6000602082019050818103600083015261480981614387565b9050919050565b60006020820190508181036000830152614829816143aa565b9050919050565b60006020820190508181036000830152614849816143cd565b9050919050565b60006020820190508181036000830152614869816143f0565b9050919050565b6000602082019050818103600083015261488981614413565b9050919050565b60006020820190506148a56000830184614436565b92915050565b600060a0820190506148c06000830188614436565b6148cd60208301876140ec565b81810360408301526148df818661407f565b90506148ee6060830185614070565b6148fb6080830184614436565b9695505050505050565b600060608201905061491a6000830186614436565b6149276020830185614436565b6149346040830184614436565b949350505050565b60006020820190506149516000830184614445565b92915050565b6000614961614972565b905061496d8282614bff565b919050565b6000604051905090565b600067ffffffffffffffff82111561499757614996614d06565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a1382614b6d565b9150614a1e83614b6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5357614a52614c79565b5b828201905092915050565b6000614a6982614b6d565b9150614a7483614b6d565b925082614a8457614a83614ca8565b5b828204905092915050565b6000614a9a82614b6d565b9150614aa583614b6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ade57614add614c79565b5b828202905092915050565b6000614af482614b6d565b9150614aff83614b6d565b925082821015614b1257614b11614c79565b5b828203905092915050565b6000614b2882614b4d565b9050919050565b6000614b3a82614b4d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b8f82614ba8565b9050919050565b6000614ba182614b6d565b9050919050565b6000614bb382614bba565b9050919050565b6000614bc582614b4d565b9050919050565b60005b83811015614bea578082015181840152602081019050614bcf565b83811115614bf9576000848401525b50505050565b614c0882614d49565b810181811067ffffffffffffffff82111715614c2757614c26614d06565b5b80604052505050565b6000614c3b82614b6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6e57614c6d614c79565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720333025000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203630250000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312e302520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b7f72657761726457616c6c657420616464726573732063616e6e6f742062652030600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b6152d781614b1d565b81146152e257600080fd5b50565b6152ee81614b2f565b81146152f957600080fd5b50565b61530581614b41565b811461531057600080fd5b50565b61531c81614b6d565b811461532757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206a39ca8727e769fa5fd5f0c407a0888a2e2ceb085fa8d191967bdcfea10ccf7664736f6c63430008070033

Deployed Bytecode Sourcemap

5937:17332:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8998:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9829:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9275:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18923:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9998:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18573:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20476:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16882:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17993:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9184:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18332:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10319:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17678:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17339:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22609:154;;;;;;;;;;;;;:::i;:::-;;9378:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4721:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9089:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9503:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17003:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16488:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22442:155;;;;;;;;;;;;;:::i;:::-;;15473:1003;;;;;;;;;;;;;:::i;:::-;;9678:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10430:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19287:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16767:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18455:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4935:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16660:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22771:240;;;;;;;;;;;;;:::i;:::-;;8998:83;9035:13;9068:5;;;;;;;;;;;;;;;;;9061:12;;8998:83;:::o;9829:161::-;9904:4;9921:39;9930:12;:10;:12::i;:::-;9944:7;9953:6;9921:8;:39::i;:::-;9978:4;9971:11;;9829:161;;;;:::o;9275:95::-;9328:7;6338:20;9348:14;;9275:95;:::o;18923:356::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19105:2:::1;19091:10;19072:16;19053;:35;;;;:::i;:::-;:48;;;;:::i;:::-;:54;;19045:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19173:16;19153:17;:36;;;;19220:16;19200:17;:36;;;;19261:10;19247:11;:24;;;;18923:356:::0;;;:::o;9998:313::-;10096:4;10113:36;10123:6;10131:9;10142:6;10113:9;:36::i;:::-;10160:121;10169:6;10177:12;:10;:12::i;:::-;10191:89;10229:6;10191:89;;;;;;;;;;;;;;;;;:11;:19;10203:6;10191:19;;;;;;;;;;;;;;;:33;10211:12;:10;:12::i;:::-;10191:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10160:8;:121::i;:::-;10299:4;10292:11;;9998:313;;;;;:::o;18573:342::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18748:2:::1;18735:9;18717:15;18699;:33;;;;:::i;:::-;:45;;;;:::i;:::-;:51;;18691:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;18814:15;18795:16;:34;;;;18859:15;18840:16;:34;;;;18898:9;18885:10;:22;;;;18573:342:::0;;;:::o;20476:88::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:5:::1;20536:4;:12;20541:6;20536:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;20476:88:::0;:::o;16882:109::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16975:8:::1;16956:16;:27;;;;16882:109:::0;:::o;17993:331::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18111:1:::1;18084:29;;:15;:29;;;;18076:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18203:5;18164:18;:36;18183:16;;;;;;;;;;;18164:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;18246:15;18219:16;;:43;;;;;;;;;;;;;;;;;;18312:4;18273:18;:36;18292:16;;;;;;;;;;;18273:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;17993:331:::0;:::o;9184:83::-;9225:5;7405:1;9243:16;;9184:83;:::o;18332:111::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18431:4:::1;18401:18;:27;18420:7;18401:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18332:111:::0;:::o;10319:103::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10409:5:::1;10391:15;;:23;;;;;;;;;;;;;;;;;;10319:103:::0;:::o;17678:307::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17787:1:::1;17763:26;;:12;:26;;;;17755:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17873:5;17837:18;:33;17856:13;;;;;;;;;;;17837:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17913:12;17889:13;;:37;;;;;;;;;;;;;;;;;;17973:4;17937:18;:33;17956:13;;;;;;;;;;;17937:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;17678:307:::0;:::o;17339:331::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:1:::1;17430:29;;:15;:29;;;;17422:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;17549:5;17510:18;:36;17529:16;;;;;;;;;;;17510:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;17592:15;17565:16;;:43;;;;;;;;;;;;;;;;;;17658:4;17619:18;:36;17638:16;;;;;;;;;;;17619:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;17339:331:::0;:::o;22609:154::-;4443:24;4456:10;4443:12;:24::i;:::-;4435:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22662:26:::1;22691:21;22662:50;;22723:32;22736:18;22723:12;:32::i;:::-;22651:112;22609:154::o:0;9378:117::-;9444:7;9471;:16;9479:7;9471:16;;;;;;;;;;;;;;;;9464:23;;9378:117;;;:::o;4721:79::-;4759:7;4786:6;;;;;;;;;;;4779:13;;4721:79;:::o;9089:87::-;9128:13;9161:7;;;;;;;;;;;;;;;;;9154:14;;9089:87;:::o;9503:167::-;9581:4;9598:42;9608:12;:10;:12::i;:::-;9622:9;9633:6;9598:9;:42::i;:::-;9658:4;9651:11;;9503:167;;;;:::o;17003:328::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17102:17:::1;17089:9;:30;;17081:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17207:18;17194:9;:31;;17186:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;17314:9;17293:18;:30;;;;17003:328:::0;:::o;16488:164::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16562:6:::1;16557:88;16578:5;:12;16574:1;:16;16557:88;;;16629:4;16612;:14;16617:5;16623:1;16617:8;;;;;;;;:::i;:::-;;;;;;;;16612:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16592:3;;;;;:::i;:::-;;;;16557:88;;;;16488:164:::0;:::o;22442:155::-;4443:24;4456:10;4443:12;:24::i;:::-;4435:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22495:23:::1;22521:24;22539:4;22521:9;:24::i;:::-;22495:50;;22556:33;22573:15;22556:16;:33::i;:::-;22484:113;22442:155::o:0;15473:1003::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15537:11:::1;;;;;;;;;;;15536:12;15528:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;15586:35;15643:42;15586:100;;15715:16;15697:15;;:34;;;;;;;;;;;;;;;;;;15742:58;15759:4;15774:15;;;;;;;;;;;6338:20;15742:8;:58::i;:::-;15845:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15827:56;;;15892:4;15899:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15827:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15811:13;;:112;;;;;;;;;;;;;;;;;;15934:15;;;;;;;;;;;:31;;;15973:21;16004:4;16010:24;16028:4;16010:9;:24::i;:::-;16035:1;16037::::0;16039:7:::1;:5;:7::i;:::-;16047:15;15934:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16088:4;16074:11;;:18;;;;;;;;;;;;;;;;;;16121:4;16103:15;;:22;;;;;;;;;;;;;;;;;;16152:18;16136:13;:34;;;;16198:18;16181:14;:35;;;;16246:18;16227:16;:37;;;;16296:17;16275:18;:38;;;;16338:4;16324:11;;:18;;;;;;;;;;;;;;;;;;16374:12;16353:18;:33;;;;16404:13;;;;;;;;;;;16397:29;;;16435:15;;;;;;;;;;;16453:14;16397:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15517:959;15473:1003::o:0;9678:143::-;9759:7;9786:11;:18;9798:5;9786:18;;;;;;;;;;;;;;;:27;9805:7;9786:27;;;;;;;;;;;;;;;;9779:34;;9678:143;;;;:::o;10430:94::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10511:5:::1;10497:11;;:19;;;;;;;;;;;;;;;;;;10430:94:::0;:::o;19287:108::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19381:6:::1;19361:17;:26;;;;19287:108:::0;:::o;16767:103::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16855:7:::1;16838:14;:24;;;;16767:103:::0;:::o;18455:110::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18552:5:::1;18522:18;:27;18541:7;18522:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18455:110:::0;:::o;4935:177::-;4443:24;4456:10;4443:12;:24::i;:::-;4435:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5023:3:::1;5014:6;::::0;:12:::1;;;;;;;;;;;;;;;;;;5059:4;5037:14;:19;5052:3;5037:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;5079:25;5100:3;5079:25;;;;;;:::i;:::-;;;;;;;;4935:177:::0;:::o;16660:99::-;4858:12;:10;:12::i;:::-;4848:22;;:6;;;;;;;;;;:22;;;4840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16745:6:::1;16729:13;:22;;;;16660:99:::0;:::o;22771:240::-;4443:24;4456:10;4443:12;:24::i;:::-;4435:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22839:11:::1;;;;;;;;;;;22838:12;22830:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22909:12;22953:10;22945:24;;22977:21;22945:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22932:71;;;;;22819:192;22771:240::o:0;2173:98::-;2226:7;2253:10;2246:17;;2173:98;:::o;10532:335::-;10642:1;10625:19;;:5;:19;;;;10617:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10723:1;10704:21;;:7;:21;;;;10696:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10805:6;10775:11;:18;10787:5;10775:18;;;;;;;;;;;;;;;:27;10794:7;10775:27;;;;;;;;;;;;;;;:36;;;;10843:7;10827:32;;10836:5;10827:32;;;10852:6;10827:32;;;;;;:::i;:::-;;;;;;;;10532:335;;;:::o;10875:1850::-;10979:1;10963:18;;:4;:18;;;;10955:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11056:1;11042:16;;:2;:16;;;;11034:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11126:1;11117:6;:10;11109:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:12;11215:15;11261:7;:5;:7::i;:::-;11253:15;;:4;:15;;;;:32;;;;;11278:7;:5;:7::i;:::-;11272:13;;:2;:13;;;;11253:32;:52;;;;;11303:1;11289:16;;:2;:16;;;;11253:52;:77;;;;;11323:6;11309:21;;:2;:21;;;;11253:77;:90;;;;;11335:8;;;;;;;;;;;11334:9;11253:90;11249:939;;;11369:4;:10;11374:4;11369:10;;;;;;;;;;;;;;;;;;;;;;;;;11368:11;:24;;;;;11384:4;:8;11389:2;11384:8;;;;;;;;;;;;;;;;;;;;;;;;;11383:9;11368:24;11360:33;;;;;;11420:4;11410:14;;11451:13;;;;;;;;;;;11443:21;;:4;:21;;;:55;;;;;11482:15;;;;;;;;;;;11468:30;;:2;:30;;;;11443:55;:82;;;;;11503:18;:22;11522:2;11503:22;;;;;;;;;;;;;;;;;;;;;;;;;11502:23;11443:82;:101;;;;;11529:15;;;;;;;;;;;11443:101;11439:451;;;11583:13;;11573:6;:23;;11565:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;11695:16;;11685:6;11669:13;11679:2;11669:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;11661:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;11794:15;11779:8;:12;11788:2;11779:12;;;;;;;;;;;;;;;;:30;11771:39;;;;;;11863:10;11844:15;:30;;;;:::i;:::-;11829:8;:12;11838:2;11829:12;;;;;;;;;;;;;;;:45;;;;11439:451;11928:13;;;;;;;;;;;11922:19;;:2;:19;;;:55;;;;;11961:15;;;;;;;;;;;11945:32;;:4;:32;;;;11922:55;:84;;;;;11982:18;:24;12001:4;11982:24;;;;;;;;;;;;;;;;;;;;;;;;;11981:25;11922:84;:103;;;;;12010:15;;;;;;;;;;;11922:103;11918:259;;;12064:14;;12054:6;:24;;12046:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12157:4;12144:17;;11918:259;11249:939;12203:18;:24;12222:4;12203:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12231:18;:22;12250:2;12231:22;;;;;;;;;;;;;;;;;;;;;;;;;12203:50;12200:97;;;12280:5;12270:15;;12200:97;12309:28;12340:24;12358:4;12340:9;:24::i;:::-;12309:55;;12375:12;12414:18;;12391:20;:41;12390:57;;;;;12437:10;12390:57;12375:72;;12464:7;:22;;;;;12475:11;;;;;;;;;;;12464:22;:35;;;;;12491:8;;;;;;;;;;;12490:9;12464:35;:64;;;;;12504:18;:24;12523:4;12504:24;;;;;;;;;;;;;;;;;;;;;;;;;12503:25;12464:64;:91;;;;;12533:18;:22;12552:2;12533:22;;;;;;;;;;;;;;;;;;;;;;;;;12532:23;12464:91;12460:195;;;12583:4;12572:8;;:15;;;;;;;;;;;;;;;;;;12602:10;:8;:10::i;:::-;12638:5;12627:8;;:16;;;;;;;;;;;;;;;;;;12460:195;12667:50;12682:4;12687:2;12690:6;12697:7;12706:10;12667:14;:50::i;:::-;10944:1781;;;;10875:1850;;;:::o;3310:190::-;3396:7;3429:1;3424;:6;;3432:12;3416:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3456:9;3472:1;3468;:5;;;;:::i;:::-;3456:17;;3491:1;3484:8;;;3310:190;;;;;:::o;4502:108::-;4559:4;4583:14;:19;4598:3;4583:19;;;;;;;;;;;;;;;;;;;;;;;;;4576:26;;4502:108;;;:::o;15363:98::-;15420:16;;;;;;;;;;;:25;;:33;15446:6;15420:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15363:98;:::o;14433:483::-;8275:4;8266:6;;:13;;;;;;;;;;;;;;;;;;14511:21:::1;14549:1;14535:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14511:40;;14580:4;14562;14567:1;14562:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14606:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14596:4;14601:1;14596:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14639:62;14656:4;14671:15;;;;;;;;;;;14689:11;14639:8;:62::i;:::-;14712:15;;;;;;;;;;;:66;;;14793:11;14819:1;14835:4;14862;14882:15;14712:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14500:416;8311:5:::0;8302:6;;:14;;;;;;;;;;;;;;;;;;14433:483;:::o;12733:1692::-;12772:23;12798:24;12816:4;12798:9;:24::i;:::-;12772:50;;12833:25;12900:18;;12882:15;;12861:18;;:36;;;;:::i;:::-;:57;;;;:::i;:::-;12833:85;;12929:12;12984:1;12965:15;:20;:46;;;;13010:1;12989:17;:22;12965:46;12962:60;;;13014:7;;;;;12962:60;13076:2;13055:18;;:23;;;;:::i;:::-;13037:15;:41;13034:114;;;13134:2;13113:18;;:23;;;;:::i;:::-;13095:41;;13034:114;13217:23;13302:1;13282:17;13261:18;;13243:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;13217:86;;13314:26;13343:36;13363:15;13343;:19;;:36;;;;:::i;:::-;13314:65;;13400:25;13428:21;13400:49;;13462:36;13479:18;13462:16;:36::i;:::-;13520:18;13541:44;13567:17;13541:21;:25;;:44;;;;:::i;:::-;13520:65;;13606:20;13629:54;13665:17;13629:31;13644:15;;13629:10;:14;;:31;;;;:::i;:::-;:35;;:54;;;;:::i;:::-;13606:77;;13694:23;13720:57;13759:17;13720:34;13735:18;;13720:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;13694:83;;13808:23;13862:15;13847:12;13834:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;13808:69;;13929:1;13908:18;:22;;;;13959:1;13941:15;:19;;;;13992:1;13971:18;:22;;;;14035:13;;;;;;;;;;;14027:27;;14062:12;14027:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14014:65;;;;;14121:1;14103:15;:19;:42;;;;;14144:1;14126:15;:19;14103:42;14100:210;;;14161:46;14174:15;14191;14161:12;:46::i;:::-;14227:71;14242:18;14262:15;14279:18;;14227:71;;;;;;;;:::i;:::-;;;;;;;;14100:210;14361:16;;;;;;;;;;;14353:30;;14391:21;14353:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14340:77;;;;;12761:1664;;;;;;;;;;12733:1692;:::o;20580:389::-;20705:7;20701:129;;20729:14;:12;:14::i;:::-;20701:129;;;20785:33;20795:6;20803;20811;20785:9;:33::i;:::-;20776:42;;20701:129;20842:44;20860:6;20868:9;20879:6;20842:17;:44::i;:::-;20911:7;20907:55;;20935:15;:13;:15::i;:::-;20907:55;20580:389;;;;;:::o;3166:136::-;3224:7;3251:43;3255:1;3258;3251:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3244:50;;3166:136;;;;:::o;3508:246::-;3566:7;3595:1;3590;:6;3586:47;;;3620:1;3613:8;;;;3586:47;3643:9;3659:1;3655;:5;;;;:::i;:::-;3643:17;;3688:1;3683;3679;:5;;;;:::i;:::-;:10;3671:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3745:1;3738:8;;;3508:246;;;;;:::o;3762:132::-;3820:7;3847:39;3851:1;3854;3847:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3840:46;;3762:132;;;;:::o;14924:423::-;15005:62;15022:4;15037:15;;;;;;;;;;;15055:11;15005:8;:62::i;:::-;15078:15;;;;;;;;;;;:31;;;15117:9;15150:4;15170:11;15196:1;15239;15282:16;;;;;;;;;;;15313:15;15078:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14924:423;;:::o;19403:702::-;19469:1;19449:16;;:21;:46;;;;;19494:1;19474:16;;:21;19449:46;:65;;;;;19513:1;19499:10;;:15;19449:65;:91;;;;;19539:1;19518:17;;:22;19449:91;:117;;;;;19565:1;19544:17;;:22;19449:117;:137;;;;;19585:1;19570:11;;:16;19449:137;19446:149;;;19588:7;;19446:149;19642:16;;19615:24;:43;;;;19696:16;;19669:24;:43;;;;19744:10;;19723:18;:31;;;;19793:17;;19765:25;:45;;;;19849:17;;19821:25;:45;;;;19899:11;;19877:19;:33;;;;19950:1;19931:16;:20;;;;19981:1;19962:16;:20;;;;20006:1;19993:10;:14;;;;20038:1;20018:17;:21;;;;20070:1;20050:17;:21;;;;20096:1;20082:11;:15;;;;19403:702;:::o;21252:1141::-;21333:7;21353:18;21382:20;21413:14;21438:15;21509:12;21488:17;;21467:18;;:38;;;;:::i;:::-;:54;21464:526;;21550:2;21537:15;;21576:2;21567:11;;21464:526;;;21624:21;21638:6;21624:13;:21::i;:::-;21611:34;;21664:6;21660:319;;;21706:17;;21691:32;;21751:17;;21742:26;;21797:11;;21787:21;;21660:319;;;21864:16;;21849:31;;21908:16;;21899:25;;21953:10;;21943:20;;21660:319;21464:526;22002:12;22017:31;22044:3;22017:22;22028:10;22017:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;22002:46;;22095:10;22085:7;22078:4;:14;;;;:::i;:::-;:27;;;;:::i;:::-;22059:15;;:46;;;;;;;:::i;:::-;;;;;;;;22160:10;22145:12;22138:4;:19;;;;:::i;:::-;:32;;;;:::i;:::-;22116:18;;:54;;;;;;;:::i;:::-;;;;;;;;22219:10;22210:6;22203:4;:13;;;;:::i;:::-;:26;;;;:::i;:::-;22181:18;;:48;;;;;;;:::i;:::-;;;;;;;;22264:1;22257:4;:8;22254:86;;;22282:46;22300:6;22316:4;22323;22282:17;:46::i;:::-;22254:86;22381:4;22371:14;;;;;:::i;:::-;;;;22364:21;;;;;;;21252:1141;;;;;:::o;20977:267::-;21093:28;21113:7;21093;:15;21101:6;21093:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21075:7;:15;21083:6;21075:15;;;;;;;;;;;;;;;:46;;;;21153:31;21176:7;21153;:18;21161:9;21153:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;21132:7;:18;21140:9;21132:18;;;;;;;;;;;;;;;:52;;;;21217:9;21200:36;;21209:6;21200:36;;;21228:7;21200:36;;;;;;:::i;:::-;;;;;;;;20977:267;;;:::o;20117:347::-;20180:24;;20161:16;:43;;;;20234:24;;20215:16;:43;;;;20282:18;;20269:10;:31;;;;20331:25;;20311:17;:45;;;;20387:25;;20367:17;:45;;;;20437:19;;20423:11;:33;;;;20117:347::o;3902:189::-;3988:7;4020:1;4016;:5;4023:12;4008:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4047:9;4063:1;4059;:5;;;;:::i;:::-;4047:17;;4082:1;4075:8;;;3902:189;;;;;:::o;23019:247::-;23076:7;23100:6;23096:97;;;23170:11;;23150:17;;23130;;:37;;;;:::i;:::-;:51;;;;:::i;:::-;23123:58;;;;23096:97;23248:10;;23229:16;;23210;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;23203:55;;23019:247;;;;:::o;2979:179::-;3037:7;3057:9;3073:1;3069;:5;;;;:::i;:::-;3057:17;;3098:1;3093;:6;;3085:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3149:1;3142:8;;;2979:179;;;;:::o;24:722: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:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1046:155::-;1100:5;1138:6;1125:20;1116:29;;1154:41;1189:5;1154:41;:::i;:::-;1046:155;;;;:::o;1224:370::-;1295:5;1344:3;1337:4;1329:6;1325:17;1321:27;1311:122;;1352:79;;:::i;:::-;1311:122;1469:6;1456:20;1494:94;1584:3;1576:6;1569:4;1561:6;1557:17;1494:94;:::i;:::-;1485:103;;1301:293;1224:370;;;;:::o;1600:133::-;1643:5;1681:6;1668:20;1659:29;;1697:30;1721:5;1697:30;:::i;:::-;1600:133;;;;:::o;1739:137::-;1793:5;1824:6;1818:13;1809:22;;1840:30;1864:5;1840:30;:::i;:::-;1739:137;;;;:::o;1882:139::-;1928:5;1966:6;1953:20;1944:29;;1982:33;2009:5;1982:33;:::i;:::-;1882:139;;;;:::o;2027:143::-;2084:5;2115:6;2109:13;2100:22;;2131:33;2158:5;2131:33;:::i;:::-;2027:143;;;;:::o;2176:329::-;2235:6;2284:2;2272:9;2263:7;2259:23;2255:32;2252:119;;;2290:79;;:::i;:::-;2252:119;2410:1;2435:53;2480:7;2471:6;2460:9;2456:22;2435:53;:::i;:::-;2425:63;;2381:117;2176:329;;;;:::o;2511:351::-;2581:6;2630:2;2618:9;2609:7;2605:23;2601:32;2598:119;;;2636:79;;:::i;:::-;2598:119;2756:1;2781:64;2837:7;2828:6;2817:9;2813:22;2781:64;:::i;:::-;2771:74;;2727:128;2511:351;;;;:::o;2868:345::-;2935:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:119;;;2990:79;;:::i;:::-;2952:119;3110:1;3135:61;3188:7;3179:6;3168:9;3164:22;3135:61;:::i;:::-;3125:71;;3081:125;2868:345;;;;:::o;3219:474::-;3287:6;3295;3344:2;3332:9;3323:7;3319:23;3315:32;3312:119;;;3350:79;;:::i;:::-;3312:119;3470:1;3495:53;3540:7;3531:6;3520:9;3516:22;3495:53;:::i;:::-;3485:63;;3441:117;3597:2;3623:53;3668:7;3659:6;3648:9;3644:22;3623:53;:::i;:::-;3613:63;;3568:118;3219:474;;;;;:::o;3699:619::-;3776:6;3784;3792;3841:2;3829:9;3820:7;3816:23;3812:32;3809:119;;;3847:79;;:::i;:::-;3809:119;3967:1;3992:53;4037:7;4028:6;4017:9;4013:22;3992:53;:::i;:::-;3982:63;;3938:117;4094:2;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4065:118;4222:2;4248:53;4293:7;4284:6;4273:9;4269:22;4248:53;:::i;:::-;4238:63;;4193:118;3699:619;;;;;:::o;4324:474::-;4392:6;4400;4449:2;4437:9;4428:7;4424:23;4420:32;4417:119;;;4455:79;;:::i;:::-;4417:119;4575:1;4600:53;4645:7;4636:6;4625:9;4621:22;4600:53;:::i;:::-;4590:63;;4546:117;4702:2;4728:53;4773:7;4764:6;4753:9;4749:22;4728:53;:::i;:::-;4718:63;;4673:118;4324:474;;;;;:::o;4804:539::-;4888:6;4937:2;4925:9;4916:7;4912:23;4908:32;4905:119;;;4943:79;;:::i;:::-;4905:119;5091:1;5080:9;5076:17;5063:31;5121:18;5113:6;5110:30;5107:117;;;5143:79;;:::i;:::-;5107:117;5248:78;5318:7;5309:6;5298:9;5294:22;5248:78;:::i;:::-;5238:88;;5034:302;4804:539;;;;:::o;5349:323::-;5405:6;5454:2;5442:9;5433:7;5429:23;5425:32;5422:119;;;5460:79;;:::i;:::-;5422:119;5580:1;5605:50;5647:7;5638:6;5627:9;5623:22;5605:50;:::i;:::-;5595:60;;5551:114;5349:323;;;;:::o;5678:345::-;5745:6;5794:2;5782:9;5773:7;5769:23;5765:32;5762:119;;;5800:79;;:::i;:::-;5762:119;5920:1;5945:61;5998:7;5989:6;5978:9;5974:22;5945:61;:::i;:::-;5935:71;;5891:125;5678:345;;;;:::o;6029:329::-;6088:6;6137:2;6125:9;6116:7;6112:23;6108:32;6105:119;;;6143:79;;:::i;:::-;6105:119;6263:1;6288:53;6333:7;6324:6;6313:9;6309:22;6288:53;:::i;:::-;6278:63;;6234:117;6029:329;;;;:::o;6364:619::-;6441:6;6449;6457;6506:2;6494:9;6485:7;6481:23;6477:32;6474:119;;;6512:79;;:::i;:::-;6474:119;6632:1;6657:53;6702:7;6693:6;6682:9;6678:22;6657:53;:::i;:::-;6647:63;;6603:117;6759:2;6785:53;6830:7;6821:6;6810:9;6806:22;6785:53;:::i;:::-;6775:63;;6730:118;6887:2;6913:53;6958:7;6949:6;6938:9;6934:22;6913:53;:::i;:::-;6903:63;;6858:118;6364:619;;;;;:::o;6989:663::-;7077:6;7085;7093;7142:2;7130:9;7121:7;7117:23;7113:32;7110:119;;;7148:79;;:::i;:::-;7110:119;7268:1;7293:64;7349:7;7340:6;7329:9;7325:22;7293:64;:::i;:::-;7283:74;;7239:128;7406:2;7432:64;7488:7;7479:6;7468:9;7464:22;7432:64;:::i;:::-;7422:74;;7377:129;7545:2;7571:64;7627:7;7618:6;7607:9;7603:22;7571:64;:::i;:::-;7561:74;;7516:129;6989:663;;;;;:::o;7658:179::-;7727:10;7748:46;7790:3;7782:6;7748:46;:::i;:::-;7826:4;7821:3;7817:14;7803:28;;7658:179;;;;:::o;7843:147::-;7938:45;7977:5;7938:45;:::i;:::-;7933:3;7926:58;7843:147;;:::o;7996:108::-;8073:24;8091:5;8073:24;:::i;:::-;8068:3;8061:37;7996:108;;:::o;8110:118::-;8197:24;8215:5;8197:24;:::i;:::-;8192:3;8185:37;8110:118;;:::o;8264:732::-;8383:3;8412:54;8460:5;8412:54;:::i;:::-;8482:86;8561:6;8556:3;8482:86;:::i;:::-;8475:93;;8592:56;8642:5;8592:56;:::i;:::-;8671:7;8702:1;8687:284;8712:6;8709:1;8706:13;8687:284;;;8788:6;8782:13;8815:63;8874:3;8859:13;8815:63;:::i;:::-;8808:70;;8901:60;8954:6;8901:60;:::i;:::-;8891:70;;8747:224;8734:1;8731;8727:9;8722:14;;8687:284;;;8691:14;8987:3;8980:10;;8388:608;;;8264:732;;;;:::o;9002:109::-;9083:21;9098:5;9083:21;:::i;:::-;9078:3;9071:34;9002:109;;:::o;9117:147::-;9212:45;9251:5;9212:45;:::i;:::-;9207:3;9200:58;9117:147;;:::o;9270:364::-;9358:3;9386:39;9419:5;9386:39;:::i;:::-;9441:71;9505:6;9500:3;9441:71;:::i;:::-;9434:78;;9521:52;9566:6;9561:3;9554:4;9547:5;9543:16;9521:52;:::i;:::-;9598:29;9620:6;9598:29;:::i;:::-;9593:3;9589:39;9582:46;;9362:272;9270:364;;;;:::o;9640:366::-;9782:3;9803:67;9867:2;9862:3;9803:67;:::i;:::-;9796:74;;9879:93;9968:3;9879:93;:::i;:::-;9997:2;9992:3;9988:12;9981:19;;9640:366;;;:::o;10012:::-;10154:3;10175:67;10239:2;10234:3;10175:67;:::i;:::-;10168:74;;10251:93;10340:3;10251:93;:::i;:::-;10369:2;10364:3;10360:12;10353:19;;10012:366;;;:::o;10384:::-;10526:3;10547:67;10611:2;10606:3;10547:67;:::i;:::-;10540:74;;10623:93;10712:3;10623:93;:::i;:::-;10741:2;10736:3;10732:12;10725:19;;10384:366;;;:::o;10756:::-;10898:3;10919:67;10983:2;10978:3;10919:67;:::i;:::-;10912:74;;10995:93;11084:3;10995:93;:::i;:::-;11113:2;11108:3;11104:12;11097:19;;10756:366;;;:::o;11128:::-;11270:3;11291:67;11355:2;11350:3;11291:67;:::i;:::-;11284:74;;11367:93;11456:3;11367:93;:::i;:::-;11485:2;11480:3;11476:12;11469:19;;11128:366;;;:::o;11500:::-;11642:3;11663:67;11727:2;11722:3;11663:67;:::i;:::-;11656:74;;11739:93;11828:3;11739:93;:::i;:::-;11857:2;11852:3;11848:12;11841:19;;11500:366;;;:::o;11872:::-;12014:3;12035:67;12099:2;12094:3;12035:67;:::i;:::-;12028:74;;12111:93;12200:3;12111:93;:::i;:::-;12229:2;12224:3;12220:12;12213:19;;11872:366;;;:::o;12244:::-;12386:3;12407:67;12471:2;12466:3;12407:67;:::i;:::-;12400:74;;12483:93;12572:3;12483:93;:::i;:::-;12601:2;12596:3;12592:12;12585:19;;12244:366;;;:::o;12616:::-;12758:3;12779:67;12843:2;12838:3;12779:67;:::i;:::-;12772:74;;12855:93;12944:3;12855:93;:::i;:::-;12973:2;12968:3;12964:12;12957:19;;12616:366;;;:::o;12988:::-;13130:3;13151:67;13215:2;13210:3;13151:67;:::i;:::-;13144:74;;13227:93;13316:3;13227:93;:::i;:::-;13345:2;13340:3;13336:12;13329:19;;12988:366;;;:::o;13360:::-;13502:3;13523:67;13587:2;13582:3;13523:67;:::i;:::-;13516:74;;13599:93;13688:3;13599:93;:::i;:::-;13717:2;13712:3;13708:12;13701:19;;13360:366;;;:::o;13732:::-;13874:3;13895:67;13959:2;13954:3;13895:67;:::i;:::-;13888:74;;13971:93;14060:3;13971:93;:::i;:::-;14089:2;14084:3;14080:12;14073:19;;13732:366;;;:::o;14104:::-;14246:3;14267:67;14331:2;14326:3;14267:67;:::i;:::-;14260:74;;14343:93;14432:3;14343:93;:::i;:::-;14461:2;14456:3;14452:12;14445:19;;14104:366;;;:::o;14476:398::-;14635:3;14656:83;14737:1;14732:3;14656:83;:::i;:::-;14649:90;;14748:93;14837:3;14748:93;:::i;:::-;14866:1;14861:3;14857:11;14850:18;;14476:398;;;:::o;14880:366::-;15022:3;15043:67;15107:2;15102:3;15043:67;:::i;:::-;15036:74;;15119:93;15208:3;15119:93;:::i;:::-;15237:2;15232:3;15228:12;15221:19;;14880:366;;;:::o;15252:::-;15394:3;15415:67;15479:2;15474:3;15415:67;:::i;:::-;15408:74;;15491:93;15580:3;15491:93;:::i;:::-;15609:2;15604:3;15600:12;15593:19;;15252:366;;;:::o;15624:::-;15766:3;15787:67;15851:2;15846:3;15787:67;:::i;:::-;15780:74;;15863:93;15952:3;15863:93;:::i;:::-;15981:2;15976:3;15972:12;15965:19;;15624:366;;;:::o;15996:::-;16138:3;16159:67;16223:2;16218:3;16159:67;:::i;:::-;16152:74;;16235:93;16324:3;16235:93;:::i;:::-;16353:2;16348:3;16344:12;16337:19;;15996:366;;;:::o;16368:::-;16510:3;16531:67;16595:2;16590:3;16531:67;:::i;:::-;16524:74;;16607:93;16696:3;16607:93;:::i;:::-;16725:2;16720:3;16716:12;16709:19;;16368:366;;;:::o;16740:::-;16882:3;16903:67;16967:2;16962:3;16903:67;:::i;:::-;16896:74;;16979:93;17068:3;16979:93;:::i;:::-;17097:2;17092:3;17088:12;17081:19;;16740:366;;;:::o;17112:::-;17254:3;17275:67;17339:2;17334:3;17275:67;:::i;:::-;17268:74;;17351:93;17440:3;17351:93;:::i;:::-;17469:2;17464:3;17460:12;17453:19;;17112:366;;;:::o;17484:::-;17626:3;17647:67;17711:2;17706:3;17647:67;:::i;:::-;17640:74;;17723:93;17812:3;17723:93;:::i;:::-;17841:2;17836:3;17832:12;17825:19;;17484:366;;;:::o;17856:118::-;17943:24;17961:5;17943:24;:::i;:::-;17938:3;17931:37;17856:118;;:::o;17980:112::-;18063:22;18079:5;18063:22;:::i;:::-;18058:3;18051:35;17980:112;;:::o;18098:379::-;18282:3;18304:147;18447:3;18304:147;:::i;:::-;18297:154;;18468:3;18461:10;;18098:379;;;:::o;18483:222::-;18576:4;18614:2;18603:9;18599:18;18591:26;;18627:71;18695:1;18684:9;18680:17;18671:6;18627:71;:::i;:::-;18483:222;;;;:::o;18711:238::-;18812:4;18850:2;18839:9;18835:18;18827:26;;18863:79;18939:1;18928:9;18924:17;18915:6;18863:79;:::i;:::-;18711:238;;;;:::o;18955:332::-;19076:4;19114:2;19103:9;19099:18;19091:26;;19127:71;19195:1;19184:9;19180:17;19171:6;19127:71;:::i;:::-;19208:72;19276:2;19265:9;19261:18;19252:6;19208:72;:::i;:::-;18955:332;;;;;:::o;19293:::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19465:71;19533:1;19522:9;19518:17;19509:6;19465:71;:::i;:::-;19546:72;19614:2;19603:9;19599:18;19590:6;19546:72;:::i;:::-;19293:332;;;;;:::o;19631:823::-;19888:4;19926:3;19915:9;19911:19;19903:27;;19940:71;20008:1;19997:9;19993:17;19984:6;19940:71;:::i;:::-;20021:72;20089:2;20078:9;20074:18;20065:6;20021:72;:::i;:::-;20103:80;20179:2;20168:9;20164:18;20155:6;20103:80;:::i;:::-;20193;20269:2;20258:9;20254:18;20245:6;20193:80;:::i;:::-;20283:81;20359:3;20348:9;20344:19;20335:6;20283:81;:::i;:::-;20374:73;20442:3;20431:9;20427:19;20418:6;20374:73;:::i;:::-;19631:823;;;;;;;;;:::o;20460:807::-;20709:4;20747:3;20736:9;20732:19;20724:27;;20761:71;20829:1;20818:9;20814:17;20805:6;20761:71;:::i;:::-;20842:72;20910:2;20899:9;20895:18;20886:6;20842:72;:::i;:::-;20924:80;21000:2;20989:9;20985:18;20976:6;20924:80;:::i;:::-;21014;21090:2;21079:9;21075:18;21066:6;21014:80;:::i;:::-;21104:73;21172:3;21161:9;21157:19;21148:6;21104:73;:::i;:::-;21187;21255:3;21244:9;21240:19;21231:6;21187:73;:::i;:::-;20460:807;;;;;;;;;:::o;21273:210::-;21360:4;21398:2;21387:9;21383:18;21375:26;;21411:65;21473:1;21462:9;21458:17;21449:6;21411:65;:::i;:::-;21273:210;;;;:::o;21489:313::-;21602:4;21640:2;21629:9;21625:18;21617:26;;21689:9;21683:4;21679:20;21675:1;21664:9;21660:17;21653:47;21717:78;21790:4;21781:6;21717:78;:::i;:::-;21709:86;;21489:313;;;;:::o;21808:419::-;21974:4;22012:2;22001:9;21997:18;21989:26;;22061:9;22055:4;22051:20;22047:1;22036:9;22032:17;22025:47;22089:131;22215:4;22089:131;:::i;:::-;22081:139;;21808:419;;;:::o;22233:::-;22399:4;22437:2;22426:9;22422:18;22414:26;;22486:9;22480:4;22476:20;22472:1;22461:9;22457:17;22450:47;22514:131;22640:4;22514:131;:::i;:::-;22506:139;;22233:419;;;:::o;22658:::-;22824:4;22862:2;22851:9;22847:18;22839:26;;22911:9;22905:4;22901:20;22897:1;22886:9;22882:17;22875:47;22939:131;23065:4;22939:131;:::i;:::-;22931:139;;22658:419;;;:::o;23083:::-;23249:4;23287:2;23276:9;23272:18;23264:26;;23336:9;23330:4;23326:20;23322:1;23311:9;23307:17;23300:47;23364:131;23490:4;23364:131;:::i;:::-;23356:139;;23083:419;;;:::o;23508:::-;23674:4;23712:2;23701:9;23697:18;23689:26;;23761:9;23755:4;23751:20;23747:1;23736:9;23732:17;23725:47;23789:131;23915:4;23789:131;:::i;:::-;23781:139;;23508:419;;;:::o;23933:::-;24099:4;24137:2;24126:9;24122:18;24114:26;;24186:9;24180:4;24176:20;24172:1;24161:9;24157:17;24150:47;24214:131;24340:4;24214:131;:::i;:::-;24206:139;;23933:419;;;:::o;24358:::-;24524:4;24562:2;24551:9;24547:18;24539:26;;24611:9;24605:4;24601:20;24597:1;24586:9;24582:17;24575:47;24639:131;24765:4;24639:131;:::i;:::-;24631:139;;24358:419;;;:::o;24783:::-;24949:4;24987:2;24976:9;24972:18;24964:26;;25036:9;25030:4;25026:20;25022:1;25011:9;25007:17;25000:47;25064:131;25190:4;25064:131;:::i;:::-;25056:139;;24783:419;;;:::o;25208:::-;25374:4;25412:2;25401:9;25397:18;25389:26;;25461:9;25455:4;25451:20;25447:1;25436:9;25432:17;25425:47;25489:131;25615:4;25489:131;:::i;:::-;25481:139;;25208:419;;;:::o;25633:::-;25799:4;25837:2;25826:9;25822:18;25814:26;;25886:9;25880:4;25876:20;25872:1;25861:9;25857:17;25850:47;25914:131;26040:4;25914:131;:::i;:::-;25906:139;;25633:419;;;:::o;26058:::-;26224:4;26262:2;26251:9;26247:18;26239:26;;26311:9;26305:4;26301:20;26297:1;26286:9;26282:17;26275:47;26339:131;26465:4;26339:131;:::i;:::-;26331:139;;26058:419;;;:::o;26483:::-;26649:4;26687:2;26676:9;26672:18;26664:26;;26736:9;26730:4;26726:20;26722:1;26711:9;26707:17;26700:47;26764:131;26890:4;26764:131;:::i;:::-;26756:139;;26483:419;;;:::o;26908:::-;27074:4;27112:2;27101:9;27097:18;27089:26;;27161:9;27155:4;27151:20;27147:1;27136:9;27132:17;27125:47;27189:131;27315:4;27189:131;:::i;:::-;27181:139;;26908:419;;;:::o;27333:::-;27499:4;27537:2;27526:9;27522:18;27514:26;;27586:9;27580:4;27576:20;27572:1;27561:9;27557:17;27550:47;27614:131;27740:4;27614:131;:::i;:::-;27606:139;;27333:419;;;:::o;27758:::-;27924:4;27962:2;27951:9;27947:18;27939:26;;28011:9;28005:4;28001:20;27997:1;27986:9;27982:17;27975:47;28039:131;28165:4;28039:131;:::i;:::-;28031:139;;27758:419;;;:::o;28183:::-;28349:4;28387:2;28376:9;28372:18;28364:26;;28436:9;28430:4;28426:20;28422:1;28411:9;28407:17;28400:47;28464:131;28590:4;28464:131;:::i;:::-;28456:139;;28183:419;;;:::o;28608:::-;28774:4;28812:2;28801:9;28797:18;28789:26;;28861:9;28855:4;28851:20;28847:1;28836:9;28832:17;28825:47;28889:131;29015:4;28889:131;:::i;:::-;28881:139;;28608:419;;;:::o;29033:::-;29199:4;29237:2;29226:9;29222:18;29214:26;;29286:9;29280:4;29276:20;29272:1;29261:9;29257:17;29250:47;29314:131;29440:4;29314:131;:::i;:::-;29306:139;;29033:419;;;:::o;29458:::-;29624:4;29662:2;29651:9;29647:18;29639:26;;29711:9;29705:4;29701:20;29697:1;29686:9;29682:17;29675:47;29739:131;29865:4;29739:131;:::i;:::-;29731:139;;29458:419;;;:::o;29883:::-;30049:4;30087:2;30076:9;30072:18;30064:26;;30136:9;30130:4;30126:20;30122:1;30111:9;30107:17;30100:47;30164:131;30290:4;30164:131;:::i;:::-;30156:139;;29883:419;;;:::o;30308:::-;30474:4;30512:2;30501:9;30497:18;30489:26;;30561:9;30555:4;30551:20;30547:1;30536:9;30532:17;30525:47;30589:131;30715:4;30589:131;:::i;:::-;30581:139;;30308:419;;;:::o;30733:222::-;30826:4;30864:2;30853:9;30849:18;30841:26;;30877:71;30945:1;30934:9;30930:17;30921:6;30877:71;:::i;:::-;30733:222;;;;:::o;30961:831::-;31224:4;31262:3;31251:9;31247:19;31239:27;;31276:71;31344:1;31333:9;31329:17;31320:6;31276:71;:::i;:::-;31357:80;31433:2;31422:9;31418:18;31409:6;31357:80;:::i;:::-;31484:9;31478:4;31474:20;31469:2;31458:9;31454:18;31447:48;31512:108;31615:4;31606:6;31512:108;:::i;:::-;31504:116;;31630:72;31698:2;31687:9;31683:18;31674:6;31630:72;:::i;:::-;31712:73;31780:3;31769:9;31765:19;31756:6;31712:73;:::i;:::-;30961:831;;;;;;;;:::o;31798:442::-;31947:4;31985:2;31974:9;31970:18;31962:26;;31998:71;32066:1;32055:9;32051:17;32042:6;31998:71;:::i;:::-;32079:72;32147:2;32136:9;32132:18;32123:6;32079:72;:::i;:::-;32161;32229:2;32218:9;32214:18;32205:6;32161:72;:::i;:::-;31798:442;;;;;;:::o;32246:214::-;32335:4;32373:2;32362:9;32358:18;32350:26;;32386:67;32450:1;32439:9;32435:17;32426:6;32386:67;:::i;:::-;32246:214;;;;:::o;32466:129::-;32500:6;32527:20;;:::i;:::-;32517:30;;32556:33;32584:4;32576:6;32556:33;:::i;:::-;32466:129;;;:::o;32601:75::-;32634:6;32667:2;32661:9;32651:19;;32601:75;:::o;32682:311::-;32759:4;32849:18;32841:6;32838:30;32835:56;;;32871:18;;:::i;:::-;32835:56;32921:4;32913:6;32909:17;32901:25;;32981:4;32975;32971:15;32963:23;;32682:311;;;:::o;32999:132::-;33066:4;33089:3;33081:11;;33119:4;33114:3;33110:14;33102:22;;32999:132;;;:::o;33137:114::-;33204:6;33238:5;33232:12;33222:22;;33137:114;;;:::o;33257:99::-;33309:6;33343:5;33337:12;33327:22;;33257:99;;;:::o;33362:113::-;33432:4;33464;33459:3;33455:14;33447:22;;33362:113;;;:::o;33481:184::-;33580:11;33614:6;33609:3;33602:19;33654:4;33649:3;33645:14;33630:29;;33481:184;;;;:::o;33671:147::-;33772:11;33809:3;33794:18;;33671:147;;;;:::o;33824:169::-;33908:11;33942:6;33937:3;33930:19;33982:4;33977:3;33973:14;33958:29;;33824:169;;;;:::o;33999:305::-;34039:3;34058:20;34076:1;34058:20;:::i;:::-;34053:25;;34092:20;34110:1;34092:20;:::i;:::-;34087:25;;34246:1;34178:66;34174:74;34171:1;34168:81;34165:107;;;34252:18;;:::i;:::-;34165:107;34296:1;34293;34289:9;34282:16;;33999:305;;;;:::o;34310:185::-;34350:1;34367:20;34385:1;34367:20;:::i;:::-;34362:25;;34401:20;34419:1;34401:20;:::i;:::-;34396:25;;34440:1;34430:35;;34445:18;;:::i;:::-;34430:35;34487:1;34484;34480:9;34475:14;;34310:185;;;;:::o;34501:348::-;34541:7;34564:20;34582:1;34564:20;:::i;:::-;34559:25;;34598:20;34616:1;34598:20;:::i;:::-;34593:25;;34786:1;34718:66;34714:74;34711:1;34708:81;34703:1;34696:9;34689:17;34685:105;34682:131;;;34793:18;;:::i;:::-;34682:131;34841:1;34838;34834:9;34823:20;;34501:348;;;;:::o;34855:191::-;34895:4;34915:20;34933:1;34915:20;:::i;:::-;34910:25;;34949:20;34967:1;34949:20;:::i;:::-;34944:25;;34988:1;34985;34982:8;34979:34;;;34993:18;;:::i;:::-;34979:34;35038:1;35035;35031:9;35023:17;;34855:191;;;;:::o;35052:96::-;35089:7;35118:24;35136:5;35118:24;:::i;:::-;35107:35;;35052:96;;;:::o;35154:104::-;35199:7;35228:24;35246:5;35228:24;:::i;:::-;35217:35;;35154:104;;;:::o;35264:90::-;35298:7;35341:5;35334:13;35327:21;35316:32;;35264:90;;;:::o;35360:126::-;35397:7;35437:42;35430:5;35426:54;35415:65;;35360:126;;;:::o;35492:77::-;35529:7;35558:5;35547:16;;35492:77;;;:::o;35575:86::-;35610:7;35650:4;35643:5;35639:16;35628:27;;35575:86;;;:::o;35667:134::-;35725:9;35758:37;35789:5;35758:37;:::i;:::-;35745:50;;35667:134;;;:::o;35807:121::-;35865:9;35898:24;35916:5;35898:24;:::i;:::-;35885:37;;35807:121;;;:::o;35934:126::-;35984:9;36017:37;36048:5;36017:37;:::i;:::-;36004:50;;35934:126;;;:::o;36066:113::-;36116:9;36149:24;36167:5;36149:24;:::i;:::-;36136:37;;36066:113;;;:::o;36185:307::-;36253:1;36263:113;36277:6;36274:1;36271:13;36263:113;;;36362:1;36357:3;36353:11;36347:18;36343:1;36338:3;36334:11;36327:39;36299:2;36296:1;36292:10;36287:15;;36263:113;;;36394:6;36391:1;36388:13;36385:101;;;36474:1;36465:6;36460:3;36456:16;36449:27;36385:101;36234:258;36185:307;;;:::o;36498:281::-;36581:27;36603:4;36581:27;:::i;:::-;36573:6;36569:40;36711:6;36699:10;36696:22;36675:18;36663:10;36660:34;36657:62;36654:88;;;36722:18;;:::i;:::-;36654:88;36762:10;36758:2;36751:22;36541:238;36498:281;;:::o;36785:233::-;36824:3;36847:24;36865:5;36847:24;:::i;:::-;36838:33;;36893:66;36886:5;36883:77;36880:103;;;36963:18;;:::i;:::-;36880:103;37010:1;37003:5;36999:13;36992:20;;36785:233;;;:::o;37024:180::-;37072:77;37069:1;37062:88;37169:4;37166:1;37159:15;37193:4;37190:1;37183:15;37210:180;37258:77;37255:1;37248:88;37355:4;37352:1;37345:15;37379:4;37376:1;37369:15;37396:180;37444:77;37441:1;37434:88;37541:4;37538:1;37531:15;37565:4;37562:1;37555:15;37582:180;37630:77;37627:1;37620:88;37727:4;37724:1;37717:15;37751:4;37748:1;37741:15;37768:117;37877:1;37874;37867:12;37891:117;38000:1;37997;37990:12;38014:117;38123:1;38120;38113:12;38137:117;38246:1;38243;38236:12;38260:102;38301:6;38352:2;38348:7;38343:2;38336:5;38332:14;38328:28;38318:38;;38260:102;;;:::o;38368:222::-;38508:34;38504:1;38496:6;38492:14;38485:58;38577:5;38572:2;38564:6;38560:15;38553:30;38368:222;:::o;38596:221::-;38736:34;38732:1;38724:6;38720:14;38713:58;38805:4;38800:2;38792:6;38788:15;38781:29;38596:221;:::o;38823:177::-;38963:29;38959:1;38951:6;38947:14;38940:53;38823:177;:::o;39006:223::-;39146:34;39142:1;39134:6;39130:14;39123:58;39215:6;39210:2;39202:6;39198:15;39191:31;39006:223;:::o;39235:228::-;39375:34;39371:1;39363:6;39359:14;39352:58;39444:11;39439:2;39431:6;39427:15;39420:36;39235:228;:::o;39469:220::-;39609:34;39605:1;39597:6;39593:14;39586:58;39678:3;39673:2;39665:6;39661:15;39654:28;39469:220;:::o;39695:179::-;39835:31;39831:1;39823:6;39819:14;39812:55;39695:179;:::o;39880:182::-;40020:34;40016:1;40008:6;40004:14;39997:58;39880:182;:::o;40068:180::-;40208:32;40204:1;40196:6;40192:14;40185:56;40068:180;:::o;40254:228::-;40394:34;40390:1;40382:6;40378:14;40371:58;40463:11;40458:2;40450:6;40446:15;40439:36;40254:228;:::o;40488:222::-;40628:34;40624:1;40616:6;40612:14;40605:58;40697:5;40692:2;40684:6;40680:15;40673:30;40488:222;:::o;40716:239::-;40856:34;40852:1;40844:6;40840:14;40833:58;40925:22;40920:2;40912:6;40908:15;40901:47;40716:239;:::o;40961:224::-;41101:34;41097:1;41089:6;41085:14;41078:58;41170:7;41165:2;41157:6;41153:15;41146:32;40961:224;:::o;41191:114::-;;:::o;41311:223::-;41451:34;41447:1;41439:6;41435:14;41428:58;41520:6;41515:2;41507:6;41503:15;41496:31;41311:223;:::o;41540:173::-;41680:25;41676:1;41668:6;41664:14;41657:49;41540:173;:::o;41719:238::-;41859:34;41855:1;41847:6;41843:14;41836:58;41928:21;41923:2;41915:6;41911:15;41904:46;41719:238;:::o;41963:182::-;42103:34;42099:1;42091:6;42087:14;42080:58;41963:182;:::o;42151:229::-;42291:34;42287:1;42279:6;42275:14;42268:58;42360:12;42355:2;42347:6;42343:15;42336:37;42151:229;:::o;42386:222::-;42526:34;42522:1;42514:6;42510:14;42503:58;42595:5;42590:2;42582:6;42578:15;42571:30;42386:222;:::o;42614:161::-;42754:13;42750:1;42742:6;42738:14;42731:37;42614:161;:::o;42781:230::-;42921:34;42917:1;42909:6;42905:14;42898:58;42990:13;42985:2;42977:6;42973:15;42966:38;42781:230;:::o;43017:122::-;43090:24;43108:5;43090:24;:::i;:::-;43083:5;43080:35;43070:63;;43129:1;43126;43119:12;43070:63;43017:122;:::o;43145:138::-;43226:32;43252:5;43226:32;:::i;:::-;43219:5;43216:43;43206:71;;43273:1;43270;43263:12;43206:71;43145:138;:::o;43289:116::-;43359:21;43374:5;43359:21;:::i;:::-;43352:5;43349:32;43339:60;;43395:1;43392;43385:12;43339:60;43289:116;:::o;43411:122::-;43484:24;43502:5;43484:24;:::i;:::-;43477:5;43474:35;43464:63;;43523:1;43520;43513:12;43464:63;43411:122;:::o

Swarm Source

ipfs://6a39ca8727e769fa5fd5f0c407a0888a2e2ceb085fa8d191967bdcfea10ccf76

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.