ETH Price: $3,000.23 (+4.07%)
Gas: 2 Gwei

Contract

0x6fBBC6C468EbAfBD340A57d8e958eC9FF4d0548A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve198865222024-05-17 1:49:3550 days ago1715910575IN
0x6fBBC6C4...FF4d0548A
0 ETH0.000085023.1465027
Approve198865112024-05-17 1:47:2350 days ago1715910443IN
0x6fBBC6C4...FF4d0548A
0 ETH0.000081143.2428076
Approve186992082023-12-02 14:06:47216 days ago1701526007IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0013295528.14104886
Approve186382522023-11-24 1:18:59225 days ago1700788739IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0013466128.50222286
Approve186079512023-11-19 19:30:11229 days ago1700422211IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0011488824.28624613
Approve186017872023-11-18 22:47:35230 days ago1700347655IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0008845518.69863218
Approve185859812023-11-16 17:36:23232 days ago1700156183IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0026953657.04968603
Approve185856102023-11-16 16:21:47232 days ago1700151707IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0013355349.24920163
Approve185856062023-11-16 16:20:59232 days ago1700151659IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0022232847.28574767
Approve185717182023-11-14 17:45:11234 days ago1699983911IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0020532443.40341125
Approve185681762023-11-14 5:53:23235 days ago1699941203IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0010735322.72226245
Transfer185681712023-11-14 5:52:23235 days ago1699941143IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0013803721.42503503
Approve185632492023-11-13 13:22:47235 days ago1699881767IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0026238455.53582658
Approve185605432023-11-13 4:16:23236 days ago1699848983IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0015449632.7004721
Approve185557722023-11-12 12:16:23236 days ago1699791383IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0016546334.97735883
Approve185557682023-11-12 12:15:35236 days ago1699791335IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0015659233.10207103
Transfer185551622023-11-12 10:13:11236 days ago1699783991IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0017260824.94204627
Approve185543732023-11-12 7:34:11237 days ago1699774451IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0009105319.27212461
Approve185522042023-11-12 0:16:47237 days ago1699748207IN
0x6fBBC6C4...FF4d0548A
0 ETH0.001065822.55870007
Transfer185521312023-11-12 0:01:47237 days ago1699747307IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0017762523.30764706
Approve185518692023-11-11 23:08:35237 days ago1699744115IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0011505124.35163569
Approve185518012023-11-11 22:54:47237 days ago1699743287IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0010912523.09738665
Approve185515292023-11-11 22:00:23237 days ago1699740023IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0015887733.58509777
Approve185515032023-11-11 21:55:11237 days ago1699739711IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0014372330.4201416
Approve185514582023-11-11 21:46:11237 days ago1699739171IN
0x6fBBC6C4...FF4d0548A
0 ETH0.0015654933.13498677
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
185585582023-11-12 21:37:11236 days ago1699825031
0x6fBBC6C4...FF4d0548A
0.01191912 ETH
185585582023-11-12 21:37:11236 days ago1699825031
0x6fBBC6C4...FF4d0548A
0.02383825 ETH
185585582023-11-12 21:37:11236 days ago1699825031
0x6fBBC6C4...FF4d0548A
0.03575738 ETH
185519242023-11-11 23:19:35237 days ago1699744775
0x6fBBC6C4...FF4d0548A
0.01567619 ETH
185519242023-11-11 23:19:35237 days ago1699744775
0x6fBBC6C4...FF4d0548A
0.03135239 ETH
185519242023-11-11 23:19:35237 days ago1699744775
0x6fBBC6C4...FF4d0548A
0.04702858 ETH
185467212023-11-11 5:51:47238 days ago1699681907
0x6fBBC6C4...FF4d0548A
0.02461089 ETH
185467212023-11-11 5:51:47238 days ago1699681907
0x6fBBC6C4...FF4d0548A
0.04922179 ETH
185467212023-11-11 5:51:47238 days ago1699681907
0x6fBBC6C4...FF4d0548A
0.07383269 ETH
185443982023-11-10 22:02:23238 days ago1699653743
0x6fBBC6C4...FF4d0548A
0.04088315 ETH
185443982023-11-10 22:02:23238 days ago1699653743
0x6fBBC6C4...FF4d0548A
0.08176631 ETH
185443982023-11-10 22:02:23238 days ago1699653743
0x6fBBC6C4...FF4d0548A
0.12264947 ETH
185413012023-11-10 11:38:59238 days ago1699616339
0x6fBBC6C4...FF4d0548A
0.01027166 ETH
185413012023-11-10 11:38:59238 days ago1699616339
0x6fBBC6C4...FF4d0548A
0.02054332 ETH
185413012023-11-10 11:38:59238 days ago1699616339
0x6fBBC6C4...FF4d0548A
0.03081499 ETH
185393372023-11-10 5:04:11239 days ago1699592651
0x6fBBC6C4...FF4d0548A
0.01620248 ETH
185393372023-11-10 5:04:11239 days ago1699592651
0x6fBBC6C4...FF4d0548A
0.03240497 ETH
185393372023-11-10 5:04:11239 days ago1699592651
0x6fBBC6C4...FF4d0548A
0.04860745 ETH
185369672023-11-09 21:07:35239 days ago1699564055
0x6fBBC6C4...FF4d0548A
0.01822998 ETH
185369672023-11-09 21:07:35239 days ago1699564055
0x6fBBC6C4...FF4d0548A
0.03645996 ETH
185369672023-11-09 21:07:35239 days ago1699564055
0x6fBBC6C4...FF4d0548A
0.05468995 ETH
185365922023-11-09 19:51:11239 days ago1699559471
0x6fBBC6C4...FF4d0548A
0.0205001 ETH
185365922023-11-09 19:51:11239 days ago1699559471
0x6fBBC6C4...FF4d0548A
0.04100021 ETH
185365922023-11-09 19:51:11239 days ago1699559471
0x6fBBC6C4...FF4d0548A
0.06150032 ETH
185365852023-11-09 19:49:47239 days ago1699559387
0x6fBBC6C4...FF4d0548A
0.06150032 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GrokX

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/** 𝕲 𝕽 𝕺 𝕶  𝖃
 *
*/

/** TG https://t.me/GrokXOfficial
    X https://x.com/elonsgrokx?s=21
*/  

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

contract Ownable is Context {
    address private _owner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract GrokX is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "GrokX";
    string private _symbol = "Grok X";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0xB4C96edD3B94FBc720434FfE2921f8E43Eed5c37);
    address payable public DeveloperWallet = payable(0xB4C96edD3B94FBc720434FfE2921f8E43Eed5c37);
    address public liquidityReciever;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    bool public tradingEnabled;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    
    // mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 5;
    uint256 public _buyMarketingFee = 20;
    uint256 public _buyDeveloperFee = 0;
    
    uint256 public _sellLiquidityFee = 5;
    uint256 public _sellMarketingFee = 20;
    uint256 public _sellDeveloperFee = 0;

    uint256 public feeUnits = 100;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 100000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(2).div(100);  //2%
    uint256 public _walletMax =   _totalSupply.mul(2).div(100);   //2%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;

    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;
        liquidityReciever = address(msg.sender);

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function setTradingEnabled(bool _enabled) external onlyOwner{
        tradingEnabled = _enabled;

    }

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

    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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityReciever = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    // function setBlacklist(address _adr, bool _status) external onlyOwner {
    //     blacklist[_adr] = _status;
    // }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        require(_totalTaxIfBuying <= (feeUnits/25), "Buy fees must be 25% or less");
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
        require(_totalTaxIfSelling <= (feeUnits/25), "Sell fees must be 25% or less");
    }
    

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        // require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");
        //  if(!_whitelisted[from]) { require(tradingEnabled, "Trading is not enabled yet");}


        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
        
    }

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeUnits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600581526020017f47726f6b58000000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062001048565b506040518060400160405280600681526020017f47726f6b20580000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001048565b506012600360006101000a81548160ff021916908360ff16021790555073b4c96edd3b94fbc720434ffe2921f8e43eed5c37600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b4c96edd3b94fbc720434ffe2921f8e43eed5c37600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506005600d556014600e556000600f556005601055601460115560006012556064601355600360009054906101000a900460ff16600a620002169190620013aa565b620186a0620002269190620014e7565b6016556200026060646200024c600160165462000e7660201b620033c91790919060201c565b62000efa60201b620034441790919060201c565b6017556200029a606462000286600260165462000e7660201b620033c91790919060201c565b62000efa60201b620034441790919060201c565b601855620002d46064620002c0600260165462000e7660201b620033c91790919060201c565b62000efa60201b620034441790919060201c565b6019556001601b60156101000a81548160ff0219169083151502179055506000601b60166101000a81548160ff0219169083151502179055506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff0219169083151502179055503480156200035057600080fd5b5060006200036362000f4c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046157600080fd5b505afa15801562000476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049c91906200110f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ff57600080fd5b505afa15801562000514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053a91906200110f565b6040518363ffffffff1660e01b815260040162000559929190620011ec565b602060405180830381600087803b1580156200057457600080fd5b505af115801562000589573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005af91906200110f565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000620006eb62000f5460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200089e62000f5460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000acb62000f5460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ca1600f5462000c8d600e54600d5462000f7d60201b6200348e1790919060201c565b62000f7d60201b6200348e1790919060201c565b60148190555062000ce060125462000ccc60115460105462000f7d60201b6200348e1790919060201c565b62000f7d60201b6200348e1790919060201c565b6015819055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506016546006600062000db862000f4c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000e0662000f4c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405162000e67919062001281565b60405180910390a3506200173c565b60008083141562000e8b576000905062000ef4565b6000828462000e9b9190620014e7565b905082848262000eac919062001317565b1462000eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ee6906200125f565b60405180910390fd5b809150505b92915050565b600062000f4483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fe060201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f8e9190620012ba565b90508381101562000fd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fcd906200123d565b60405180910390fd5b8091505092915050565b600080831182906200102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001021919062001219565b60405180910390fd5b50600083856200103b919062001317565b9050809150509392505050565b8280546200105690620015c9565b90600052602060002090601f0160209004810192826200107a5760008555620010c6565b82601f106200109557805160ff1916838001178555620010c6565b82800160010185558215620010c6579182015b82811115620010c5578251825591602001919060010190620010a8565b5b509050620010d59190620010d9565b5090565b5b80821115620010f4576000816000905550600101620010da565b5090565b600081519050620011098162001722565b92915050565b6000602082840312156200112257600080fd5b60006200113284828501620010f8565b91505092915050565b620011468162001548565b82525050565b600062001159826200129e565b620011658185620012a9565b93506200117781856020860162001593565b62001182816200168c565b840191505092915050565b60006200119c601b83620012a9565b9150620011a982620016aa565b602082019050919050565b6000620011c3602183620012a9565b9150620011d082620016d3565b604082019050919050565b620011e6816200157c565b82525050565b60006040820190506200120360008301856200113b565b6200121260208301846200113b565b9392505050565b600060208201905081810360008301526200123581846200114c565b905092915050565b6000602082019050818103600083015262001258816200118d565b9050919050565b600060208201905081810360008301526200127a81620011b4565b9050919050565b6000602082019050620012986000830184620011db565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012c7826200157c565b9150620012d4836200157c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200130c576200130b620015ff565b5b828201905092915050565b600062001324826200157c565b915062001331836200157c565b9250826200134457620013436200162e565b5b828204905092915050565b6000808291508390505b6001851115620013a157808604811115620013795762001378620015ff565b5b6001851615620013895780820291505b808102905062001399856200169d565b945062001359565b94509492505050565b6000620013b7826200157c565b9150620013c48362001586565b9250620013f37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013fb565b905092915050565b6000826200140d5760019050620014e0565b816200141d5760009050620014e0565b8160018114620014365760028114620014415762001477565b6001915050620014e0565b60ff841115620014565762001455620015ff565b5b8360020a91508482111562001470576200146f620015ff565b5b50620014e0565b5060208310610133831016604e8410600b8410161715620014b15782820a905083811115620014ab57620014aa620015ff565b5b620014e0565b620014c084848460016200134f565b92509050818404811115620014da57620014d9620015ff565b5b81810290505b9392505050565b6000620014f4826200157c565b915062001501836200157c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200153d576200153c620015ff565b5b828202905092915050565b600062001555826200155c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620015b357808201518184015260208101905062001596565b83811115620015c3576000848401525b50505050565b60006002820490506001821680620015e257607f821691505b60208210811415620015f957620015f86200165d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6200172d8162001548565b81146200173957600080fd5b50565b60805160601c60a05160601c615b6a62001776600039600081816110e2015261153501526000818161150901526115610152615b6a6000f3fe6080604052600436106103c75760003560e01c806388790a68116101f2578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e73578063f872858a14610e9c578063f8f6329014610ec7578063fb4b8e6c14610ef2576103ce565b8063f1d5f51714610dcd578063f2fde38b14610df6578063f455444614610e1f578063f680f79914610e48576103ce565b8063ec28438a116100dc578063ec28438a14610d27578063ee828db314610d50578063ef422a1814610d79578063f0cd1dac14610da2576103ce565b8063da00097d14610c7d578063dc44b6a014610ca8578063dd62ed3e14610cd3578063e6b2603b14610d10576103ce565b8063c2e5ec0411610185578063c860795211610154578063c860795214610bc1578063c867d60b14610bec578063c9c9afc514610c29578063d2d7ad8314610c52576103ce565b8063c2e5ec0414610b19578063c49b9a8014610b42578063c5d2418914610b6b578063c816841b14610b96576103ce565b806398e944c8116101c157806398e944c814610a4b578063a457c2d714610a76578063a5d69d1f14610ab3578063a9059cbb14610adc576103ce565b806388790a681461098d5780638b42507f146109b85780638da5cb5b146109f557806395d89b4114610a20576103ce565b80633ecad271116102e257806370a0823111610275578063807c2d9c11610244578063807c2d9c146108e357806382eefb431461090e578063844d591c146109395780638526148514610962576103ce565b806370a0823114610839578063715018a61461087657806375f0a8741461088d5780637d1db4a5146108b8576103ce565b80635194f9bf116102b15780635194f9bf1461076b5780635342acb4146107965780635881f3ef146107d35780636724348214610810576103ce565b80633ecad271146106af5780634a74bb02146106ec5780634ada218b146107175780634cb80fd514610742576103ce565b806323555d571161035a5780632b112e49116103295780632b112e49146105f3578063313ce5671461061e57806339509351146106495780633b97084a14610686576103ce565b806323555d571461053757806323b872dd146105625780632563ae831461059f57806327c8f835146105c8576103ce565b80631694505e116103965780631694505e1461048f57806318160ddd146104ba5780631870517a146104e55780632198cf6c1461050e576103ce565b806306fdde03146103d357806308733214146103fe5780630930907b14610427578063095ea7b314610452576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610f1b565b6040516103f59190615131565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190614c2b565b610fad565b005b34801561043357600080fd5b5061043c6110e0565b6040516104499190615012565b60405180910390f35b34801561045e57600080fd5b5061047960048036038101906104749190614aff565b611104565b60405161048691906150fb565b60405180910390f35b34801561049b57600080fd5b506104a4611122565b6040516104b19190615116565b60405180910390f35b3480156104c657600080fd5b506104cf611148565b6040516104dc9190615313565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190614c2b565b611152565b005b34801561051a57600080fd5b5061053560048036038101906105309190614ac3565b611285565b005b34801561054357600080fd5b5061054c611375565b6040516105599190615313565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190614a74565b61137b565b60405161059691906150fb565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190614bb0565b611455565b005b3480156105d457600080fd5b506105dd611507565b6040516105ea9190615012565b60405180910390f35b3480156105ff57600080fd5b5061060861152b565b6040516106159190615313565b60405180910390f35b34801561062a57600080fd5b506106336115a9565b60405161064091906153b8565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190614aff565b6115c0565b60405161067d91906150fb565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190614c02565b611673565b005b3480156106bb57600080fd5b506106d660048036038101906106d191906149e6565b611712565b6040516106e391906150fb565b60405180910390f35b3480156106f857600080fd5b50610701611732565b60405161070e91906150fb565b60405180910390f35b34801561072357600080fd5b5061072c611745565b60405161073991906150fb565b60405180910390f35b34801561074e57600080fd5b50610769600480360381019061076491906149e6565b611758565b005b34801561077757600080fd5b50610780611831565b60405161078d9190615313565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906149e6565b611837565b6040516107ca91906150fb565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f591906149e6565b611857565b6040516108079190615012565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614b3b565b611d3b565b005b34801561084557600080fd5b50610860600480360381019061085b91906149e6565b6121fa565b60405161086d9190615313565b60405180910390f35b34801561088257600080fd5b5061088b612243565b005b34801561089957600080fd5b506108a2612398565b6040516108af919061502d565b60405180910390f35b3480156108c457600080fd5b506108cd6123be565b6040516108da9190615313565b60405180910390f35b3480156108ef57600080fd5b506108f86123c4565b6040516109059190615313565b60405180910390f35b34801561091a57600080fd5b506109236123ca565b6040516109309190615313565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614ac3565b6123d0565b005b34801561096e57600080fd5b506109776124c0565b60405161098491906150fb565b60405180910390f35b34801561099957600080fd5b506109a26124d3565b6040516109af9190615313565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da91906149e6565b6124d9565b6040516109ec91906150fb565b60405180910390f35b348015610a0157600080fd5b50610a0a6124f9565b604051610a179190615012565b60405180910390f35b348015610a2c57600080fd5b50610a35612522565b604051610a429190615131565b60405180910390f35b348015610a5757600080fd5b50610a606125b4565b604051610a6d9190615012565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a989190614aff565b6125da565b604051610aaa91906150fb565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad59190614bb0565b6126a7565b005b348015610ae857600080fd5b50610b036004803603810190610afe9190614aff565b612759565b604051610b1091906150fb565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190614bb0565b612778565b005b348015610b4e57600080fd5b50610b696004803603810190610b649190614bb0565b61282a565b005b348015610b7757600080fd5b50610b80612913565b604051610b8d9190615313565b60405180910390f35b348015610ba257600080fd5b50610bab612919565b604051610bb89190615012565b60405180910390f35b348015610bcd57600080fd5b50610bd661293f565b604051610be39190615313565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e91906149e6565b612945565b604051610c2091906150fb565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b91906149e6565b612965565b005b348015610c5e57600080fd5b50610c67612a3e565b604051610c749190615313565b60405180910390f35b348015610c8957600080fd5b50610c92612a44565b604051610c9f91906150fb565b60405180910390f35b348015610cb457600080fd5b50610cbd612a57565b604051610cca9190615313565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf59190614a38565b612a5d565b604051610d079190615313565b60405180910390f35b348015610d1c57600080fd5b50610d25612ae4565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614c02565b612bf2565b005b348015610d5c57600080fd5b50610d776004803603810190610d729190614bb0565b612c91565b005b348015610d8557600080fd5b50610da06004803603810190610d9b9190614ac3565b612d43565b005b348015610dae57600080fd5b50610db7612e33565b604051610dc49190615313565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def9190614c02565b612e39565b005b348015610e0257600080fd5b50610e1d6004803603810190610e1891906149e6565b612ed8565b005b348015610e2b57600080fd5b50610e466004803603810190610e419190614aff565b61309a565b005b348015610e5457600080fd5b50610e5d6131c1565b604051610e6a9190615313565b60405180910390f35b348015610e7f57600080fd5b50610e9a6004803603810190610e959190614ac3565b6131c7565b005b348015610ea857600080fd5b50610eb16132b7565b604051610ebe91906150fb565b60405180910390f35b348015610ed357600080fd5b50610edc6132ca565b604051610ee9919061502d565b60405180910390f35b348015610efe57600080fd5b50610f196004803603810190610f1491906149e6565b6132f0565b005b606060018054610f2a90615618565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5690615618565b8015610fa35780601f10610f7857610100808354040283529160200191610fa3565b820191906000526020600020905b815481529060010190602001808311610f8657829003601f168201915b5050505050905090565b610fb56134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990615293565b60405180910390fd5b82601081905550816011819055508060128190555061108260125461107460115460105461348e90919063ffffffff16565b61348e90919063ffffffff16565b60158190555060196013546110979190615489565b60155411156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d2906152b3565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006111186111116134ec565b84846134f4565b6001905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b61115a6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90615293565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611227600f54611219600e54600d5461348e90919063ffffffff16565b61348e90919063ffffffff16565b601481905550601960135461123c9190615489565b6014541115611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790615153565b60405180910390fd5b505050565b61128d6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190615293565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113888484846136bf565b5061144a846113956134ec565b61144585604051806060016040528060288152602001615ae860289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113fb6134ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b6134f4565b600190509392505050565b61145d6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190615293565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115a46115597f00000000000000000000000000000000000000000000000000000000000000006121fa565b6115966115857f00000000000000000000000000000000000000000000000000000000000000006121fa565b601654613d5690919063ffffffff16565b613d5690919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116696115cd6134ec565b8461166485600760006115de6134ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b6134f4565b6001905092915050565b61167b6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90615293565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b600860009054906101000a900460ff1681565b6117606134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490615293565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60096020528060005260406000206000915054906101000a900460ff1681565b60006118616134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590615293565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561193957600080fd5b505afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190614a0f565b6040518363ffffffff1660e01b8152600401611a28929190615048565b60206040518083038186803b158015611a4057600080fd5b505afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614a0f565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c39578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611af557600080fd5b505afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d9190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8f57600080fd5b505afa158015611ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc79190614a0f565b6040518363ffffffff1660e01b8152600401611be4929190615048565b602060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c369190614a0f565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d436134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790615293565b60405180910390fd5b6000339050828290508585905014611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490615273565b60405180910390fd5b600080600090505b84849050811015611e9057848482818110611e69577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e7b9190615433565b91508080611e889061564a565b915050611e25565b5080611e9b836121fa565b1015611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390615193565b60405180910390fd5b611f2e81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5690919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156121f15761205d858583818110611fbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600660008a8a86818110611fff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061201491906149e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b6006600089898581811061209a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120af91906149e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612126577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061213b91906149e6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106121c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356040516121d69190615313565b60405180910390a380806121e99061564a565b915050611f74565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61224b6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf90615293565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60195481565b60155481565b6123d86134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90615293565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461253190615618565b80601f016020809104026020016040519081016040528092919081815260200182805461255d90615618565b80156125aa5780601f1061257f576101008083540402835291602001916125aa565b820191906000526020600020905b81548152906001019060200180831161258d57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061269d6125e76134ec565b8461269885604051806060016040528060258152602001615b1060259139600760006126116134ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b6134f4565b6001905092915050565b6126af6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273390615293565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061276d6127666134ec565b84846136bf565b506001905092915050565b6127806134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280490615293565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b6128326134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b690615293565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161290891906150fb565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61296d6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190615293565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612aec6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090615293565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b9f90614ffd565b60006040518083038185875af1925050503d8060008114612bdc576040519150601f19603f3d011682016040523d82523d6000602084013e612be1565b606091505b5050905080612bef57600080fd5b50565b612bfa6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e90615293565b60405180910390fd5b8060188190555050565b612c996134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1d90615293565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b612d4b6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcf90615293565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b612e416134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec590615293565b60405180910390fd5b8060198190555050565b612ee06134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6490615293565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd4906151b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6130a26134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461312f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312690615293565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161316a929190615071565b602060405180830381600087803b15801561318457600080fd5b505af1158015613198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bc9190614bd9565b505050565b60135481565b6131cf6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461325c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325390615293565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6132f86134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337c90615293565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156133dc576000905061343e565b600082846133ea91906154ba565b90508284826133f99190615489565b14613439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343090615253565b60405180910390fd5b809150505b92915050565b600061348683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613da0565b905092915050565b600080828461349d9190615433565b9050838110156134e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d9906151f3565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355b906152f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135cb906151d3565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516136b29190615313565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613727906152d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379790615173565b60405180910390fd5b601b60149054906101000a900460ff16156137c7576137c0848484613e03565b9050613ceb565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561386b5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138835750601b60189054906101000a900460ff165b156138ce576018548211156138cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c490615233565b60405180910390fd5b5b60006138d9306121fa565b9050600060175482101590508080156138ff5750601b60149054906101000a900460ff16155b80156139555750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561396d5750601b60159054906101000a900460ff165b1561399757601b60169054906101000a900460ff161561398d5760175491505b61399682613fd6565b5b613a20846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b065750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b1a57613b158787876142a1565b613b1c565b845b9050601b60179054906101000a900460ff168015613b845750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613be957601954613ba782613b99896121fa565b61348e90919063ffffffff16565b1115613be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdf90615213565b60405180910390fd5b5b613c3b81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cdb9190615313565b60405180910390a3600193505050505b9392505050565b6000838311158290613d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d319190615131565b60405180910390fd5b5060008385613d499190615514565b9050809150509392505050565b6000613d9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613cf2565b905092915050565b60008083118290613de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dde9190615131565b60405180910390fd5b5060008385613df69190615489565b9050809150509392505050565b6000613e8e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2382600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fc39190615313565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff021916908315150217905550600061400a60155460145461348e90919063ffffffff16565b90506000614025601054600d5461348e90919063ffffffff16565b90506000614040601154600e5461348e90919063ffffffff16565b9050600061407c600261406e86614060878a6133c990919063ffffffff16565b61344490919063ffffffff16565b61344490919063ffffffff16565b905060006140938287613d5690919063ffffffff16565b905060004790506140a3826144c8565b60006140b88247613d5690919063ffffffff16565b905060006140e26140d360028961344490919063ffffffff16565b89613d5690919063ffffffff16565b9050600061411e6002614110846141028c886133c990919063ffffffff16565b61344490919063ffffffff16565b61344490919063ffffffff16565b90506000614147836141398a876133c990919063ffffffff16565b61344490919063ffffffff16565b90506000614170826141628588613d5690919063ffffffff16565b613d5690919063ffffffff16565b905060008211156141e557600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156141e3573d6000803e3d6000fd5b505b600081111561425857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614256573d6000803e3d6000fd5b505b6000831180156142685750600088115b156142785761427788846147c5565b5b50505050505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614329576143226064614314601454866133c990919063ffffffff16565b61344490919063ffffffff16565b90506143a7565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143a6576143a36064614395601554866133c990919063ffffffff16565b61344490919063ffffffff16565b90505b5b60008111156144ab5761440281600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144a29190615313565b60405180910390a35b6144be8184613d5690919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561450b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156145395781602001602082028036833780820191505090505b5090503081600081518110614577577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561461957600080fd5b505afa15801561462d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146519190614a0f565b8160018151811061468b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506146f230601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846134f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161475695949392919061535e565b600060405180830381600087803b15801561477057600080fd5b505af1158015614784573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516147b992919061532e565b60405180910390a15050565b6147f230601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846134f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161487b9695949392919061509a565b6060604051808303818588803b15801561489457600080fd5b505af11580156148a8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148cd9190614c7a565b5050505050565b6000813590506148e381615aa2565b92915050565b6000815190506148f881615aa2565b92915050565b60008083601f84011261491057600080fd5b8235905067ffffffffffffffff81111561492957600080fd5b60208301915083602082028301111561494157600080fd5b9250929050565b60008083601f84011261495a57600080fd5b8235905067ffffffffffffffff81111561497357600080fd5b60208301915083602082028301111561498b57600080fd5b9250929050565b6000813590506149a181615ab9565b92915050565b6000815190506149b681615ab9565b92915050565b6000813590506149cb81615ad0565b92915050565b6000815190506149e081615ad0565b92915050565b6000602082840312156149f857600080fd5b6000614a06848285016148d4565b91505092915050565b600060208284031215614a2157600080fd5b6000614a2f848285016148e9565b91505092915050565b60008060408385031215614a4b57600080fd5b6000614a59858286016148d4565b9250506020614a6a858286016148d4565b9150509250929050565b600080600060608486031215614a8957600080fd5b6000614a97868287016148d4565b9350506020614aa8868287016148d4565b9250506040614ab9868287016149bc565b9150509250925092565b60008060408385031215614ad657600080fd5b6000614ae4858286016148d4565b9250506020614af585828601614992565b9150509250929050565b60008060408385031215614b1257600080fd5b6000614b20858286016148d4565b9250506020614b31858286016149bc565b9150509250929050565b60008060008060408587031215614b5157600080fd5b600085013567ffffffffffffffff811115614b6b57600080fd5b614b77878288016148fe565b9450945050602085013567ffffffffffffffff811115614b9657600080fd5b614ba287828801614948565b925092505092959194509250565b600060208284031215614bc257600080fd5b6000614bd084828501614992565b91505092915050565b600060208284031215614beb57600080fd5b6000614bf9848285016149a7565b91505092915050565b600060208284031215614c1457600080fd5b6000614c22848285016149bc565b91505092915050565b600080600060608486031215614c4057600080fd5b6000614c4e868287016149bc565b9350506020614c5f868287016149bc565b9250506040614c70868287016149bc565b9150509250925092565b600080600060608486031215614c8f57600080fd5b6000614c9d868287016149d1565b9350506020614cae868287016149d1565b9250506040614cbf868287016149d1565b9150509250925092565b6000614cd58383614cf0565b60208301905092915050565b614cea8161555a565b82525050565b614cf981615548565b82525050565b614d0881615548565b82525050565b6000614d19826153e3565b614d238185615406565b9350614d2e836153d3565b8060005b83811015614d5f578151614d468882614cc9565b9750614d51836153f9565b925050600181019050614d32565b5085935050505092915050565b614d758161556c565b82525050565b614d84816155af565b82525050565b614d93816155d3565b82525050565b6000614da4826153ee565b614dae8185615422565b9350614dbe8185602086016155e5565b614dc781615720565b840191505092915050565b6000614ddf601c83615422565b9150614dea82615731565b602082019050919050565b6000614e02602383615422565b9150614e0d8261575a565b604082019050919050565b6000614e25601b83615422565b9150614e30826157a9565b602082019050919050565b6000614e48602683615422565b9150614e53826157d2565b604082019050919050565b6000614e6b602283615422565b9150614e7682615821565b604082019050919050565b6000614e8e601b83615422565b9150614e9982615870565b602082019050919050565b6000614eb1602583615422565b9150614ebc82615899565b604082019050919050565b6000614ed4602883615422565b9150614edf826158e8565b604082019050919050565b6000614ef7602183615422565b9150614f0282615937565b604082019050919050565b6000614f1a601683615422565b9150614f2582615986565b602082019050919050565b6000614f3d602083615422565b9150614f48826159af565b602082019050919050565b6000614f60601d83615422565b9150614f6b826159d8565b602082019050919050565b6000614f83602583615422565b9150614f8e82615a01565b604082019050919050565b6000614fa6600083615417565b9150614fb182615a50565b600082019050919050565b6000614fc9602483615422565b9150614fd482615a53565b604082019050919050565b614fe881615598565b82525050565b614ff7816155a2565b82525050565b600061500882614f99565b9150819050919050565b60006020820190506150276000830184614cff565b92915050565b60006020820190506150426000830184614ce1565b92915050565b600060408201905061505d6000830185614cff565b61506a6020830184614cff565b9392505050565b60006040820190506150866000830185614cff565b6150936020830184614fdf565b9392505050565b600060c0820190506150af6000830189614cff565b6150bc6020830188614fdf565b6150c96040830187614d8a565b6150d66060830186614d8a565b6150e36080830185614cff565b6150f060a0830184614fdf565b979650505050505050565b60006020820190506151106000830184614d6c565b92915050565b600060208201905061512b6000830184614d7b565b92915050565b6000602082019050818103600083015261514b8184614d99565b905092915050565b6000602082019050818103600083015261516c81614dd2565b9050919050565b6000602082019050818103600083015261518c81614df5565b9050919050565b600060208201905081810360008301526151ac81614e18565b9050919050565b600060208201905081810360008301526151cc81614e3b565b9050919050565b600060208201905081810360008301526151ec81614e5e565b9050919050565b6000602082019050818103600083015261520c81614e81565b9050919050565b6000602082019050818103600083015261522c81614ea4565b9050919050565b6000602082019050818103600083015261524c81614ec7565b9050919050565b6000602082019050818103600083015261526c81614eea565b9050919050565b6000602082019050818103600083015261528c81614f0d565b9050919050565b600060208201905081810360008301526152ac81614f30565b9050919050565b600060208201905081810360008301526152cc81614f53565b9050919050565b600060208201905081810360008301526152ec81614f76565b9050919050565b6000602082019050818103600083015261530c81614fbc565b9050919050565b60006020820190506153286000830184614fdf565b92915050565b60006040820190506153436000830185614fdf565b81810360208301526153558184614d0e565b90509392505050565b600060a0820190506153736000830188614fdf565b6153806020830187614d8a565b81810360408301526153928186614d0e565b90506153a16060830185614cff565b6153ae6080830184614fdf565b9695505050505050565b60006020820190506153cd6000830184614fee565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061543e82615598565b915061544983615598565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561547e5761547d615693565b5b828201905092915050565b600061549482615598565b915061549f83615598565b9250826154af576154ae6156c2565b5b828204905092915050565b60006154c582615598565b91506154d083615598565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561550957615508615693565b5b828202905092915050565b600061551f82615598565b915061552a83615598565b92508282101561553d5761553c615693565b5b828203905092915050565b600061555382615578565b9050919050565b600061556582615578565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006155ba826155c1565b9050919050565b60006155cc82615578565b9050919050565b60006155de82615598565b9050919050565b60005b838110156156035780820151818401526020810190506155e8565b83811115615612576000848401525b50505050565b6000600282049050600182168061563057607f821691505b60208210811415615644576156436156f1565b5b50919050565b600061565582615598565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561568857615687615693565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615aab81615548565b8114615ab657600080fd5b50565b615ac28161556c565b8114615acd57600080fd5b50565b615ad981615598565b8114615ae457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a0b2eb930e7c7a2871a51b8fe076c6f47ab6459bf20b9f60b429981d907f146a64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103c75760003560e01c806388790a68116101f2578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e73578063f872858a14610e9c578063f8f6329014610ec7578063fb4b8e6c14610ef2576103ce565b8063f1d5f51714610dcd578063f2fde38b14610df6578063f455444614610e1f578063f680f79914610e48576103ce565b8063ec28438a116100dc578063ec28438a14610d27578063ee828db314610d50578063ef422a1814610d79578063f0cd1dac14610da2576103ce565b8063da00097d14610c7d578063dc44b6a014610ca8578063dd62ed3e14610cd3578063e6b2603b14610d10576103ce565b8063c2e5ec0411610185578063c860795211610154578063c860795214610bc1578063c867d60b14610bec578063c9c9afc514610c29578063d2d7ad8314610c52576103ce565b8063c2e5ec0414610b19578063c49b9a8014610b42578063c5d2418914610b6b578063c816841b14610b96576103ce565b806398e944c8116101c157806398e944c814610a4b578063a457c2d714610a76578063a5d69d1f14610ab3578063a9059cbb14610adc576103ce565b806388790a681461098d5780638b42507f146109b85780638da5cb5b146109f557806395d89b4114610a20576103ce565b80633ecad271116102e257806370a0823111610275578063807c2d9c11610244578063807c2d9c146108e357806382eefb431461090e578063844d591c146109395780638526148514610962576103ce565b806370a0823114610839578063715018a61461087657806375f0a8741461088d5780637d1db4a5146108b8576103ce565b80635194f9bf116102b15780635194f9bf1461076b5780635342acb4146107965780635881f3ef146107d35780636724348214610810576103ce565b80633ecad271146106af5780634a74bb02146106ec5780634ada218b146107175780634cb80fd514610742576103ce565b806323555d571161035a5780632b112e49116103295780632b112e49146105f3578063313ce5671461061e57806339509351146106495780633b97084a14610686576103ce565b806323555d571461053757806323b872dd146105625780632563ae831461059f57806327c8f835146105c8576103ce565b80631694505e116103965780631694505e1461048f57806318160ddd146104ba5780631870517a146104e55780632198cf6c1461050e576103ce565b806306fdde03146103d357806308733214146103fe5780630930907b14610427578063095ea7b314610452576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610f1b565b6040516103f59190615131565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190614c2b565b610fad565b005b34801561043357600080fd5b5061043c6110e0565b6040516104499190615012565b60405180910390f35b34801561045e57600080fd5b5061047960048036038101906104749190614aff565b611104565b60405161048691906150fb565b60405180910390f35b34801561049b57600080fd5b506104a4611122565b6040516104b19190615116565b60405180910390f35b3480156104c657600080fd5b506104cf611148565b6040516104dc9190615313565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190614c2b565b611152565b005b34801561051a57600080fd5b5061053560048036038101906105309190614ac3565b611285565b005b34801561054357600080fd5b5061054c611375565b6040516105599190615313565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190614a74565b61137b565b60405161059691906150fb565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190614bb0565b611455565b005b3480156105d457600080fd5b506105dd611507565b6040516105ea9190615012565b60405180910390f35b3480156105ff57600080fd5b5061060861152b565b6040516106159190615313565b60405180910390f35b34801561062a57600080fd5b506106336115a9565b60405161064091906153b8565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190614aff565b6115c0565b60405161067d91906150fb565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190614c02565b611673565b005b3480156106bb57600080fd5b506106d660048036038101906106d191906149e6565b611712565b6040516106e391906150fb565b60405180910390f35b3480156106f857600080fd5b50610701611732565b60405161070e91906150fb565b60405180910390f35b34801561072357600080fd5b5061072c611745565b60405161073991906150fb565b60405180910390f35b34801561074e57600080fd5b50610769600480360381019061076491906149e6565b611758565b005b34801561077757600080fd5b50610780611831565b60405161078d9190615313565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906149e6565b611837565b6040516107ca91906150fb565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f591906149e6565b611857565b6040516108079190615012565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614b3b565b611d3b565b005b34801561084557600080fd5b50610860600480360381019061085b91906149e6565b6121fa565b60405161086d9190615313565b60405180910390f35b34801561088257600080fd5b5061088b612243565b005b34801561089957600080fd5b506108a2612398565b6040516108af919061502d565b60405180910390f35b3480156108c457600080fd5b506108cd6123be565b6040516108da9190615313565b60405180910390f35b3480156108ef57600080fd5b506108f86123c4565b6040516109059190615313565b60405180910390f35b34801561091a57600080fd5b506109236123ca565b6040516109309190615313565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614ac3565b6123d0565b005b34801561096e57600080fd5b506109776124c0565b60405161098491906150fb565b60405180910390f35b34801561099957600080fd5b506109a26124d3565b6040516109af9190615313565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da91906149e6565b6124d9565b6040516109ec91906150fb565b60405180910390f35b348015610a0157600080fd5b50610a0a6124f9565b604051610a179190615012565b60405180910390f35b348015610a2c57600080fd5b50610a35612522565b604051610a429190615131565b60405180910390f35b348015610a5757600080fd5b50610a606125b4565b604051610a6d9190615012565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a989190614aff565b6125da565b604051610aaa91906150fb565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad59190614bb0565b6126a7565b005b348015610ae857600080fd5b50610b036004803603810190610afe9190614aff565b612759565b604051610b1091906150fb565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190614bb0565b612778565b005b348015610b4e57600080fd5b50610b696004803603810190610b649190614bb0565b61282a565b005b348015610b7757600080fd5b50610b80612913565b604051610b8d9190615313565b60405180910390f35b348015610ba257600080fd5b50610bab612919565b604051610bb89190615012565b60405180910390f35b348015610bcd57600080fd5b50610bd661293f565b604051610be39190615313565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e91906149e6565b612945565b604051610c2091906150fb565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b91906149e6565b612965565b005b348015610c5e57600080fd5b50610c67612a3e565b604051610c749190615313565b60405180910390f35b348015610c8957600080fd5b50610c92612a44565b604051610c9f91906150fb565b60405180910390f35b348015610cb457600080fd5b50610cbd612a57565b604051610cca9190615313565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf59190614a38565b612a5d565b604051610d079190615313565b60405180910390f35b348015610d1c57600080fd5b50610d25612ae4565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614c02565b612bf2565b005b348015610d5c57600080fd5b50610d776004803603810190610d729190614bb0565b612c91565b005b348015610d8557600080fd5b50610da06004803603810190610d9b9190614ac3565b612d43565b005b348015610dae57600080fd5b50610db7612e33565b604051610dc49190615313565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def9190614c02565b612e39565b005b348015610e0257600080fd5b50610e1d6004803603810190610e1891906149e6565b612ed8565b005b348015610e2b57600080fd5b50610e466004803603810190610e419190614aff565b61309a565b005b348015610e5457600080fd5b50610e5d6131c1565b604051610e6a9190615313565b60405180910390f35b348015610e7f57600080fd5b50610e9a6004803603810190610e959190614ac3565b6131c7565b005b348015610ea857600080fd5b50610eb16132b7565b604051610ebe91906150fb565b60405180910390f35b348015610ed357600080fd5b50610edc6132ca565b604051610ee9919061502d565b60405180910390f35b348015610efe57600080fd5b50610f196004803603810190610f1491906149e6565b6132f0565b005b606060018054610f2a90615618565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5690615618565b8015610fa35780601f10610f7857610100808354040283529160200191610fa3565b820191906000526020600020905b815481529060010190602001808311610f8657829003601f168201915b5050505050905090565b610fb56134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990615293565b60405180910390fd5b82601081905550816011819055508060128190555061108260125461107460115460105461348e90919063ffffffff16565b61348e90919063ffffffff16565b60158190555060196013546110979190615489565b60155411156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d2906152b3565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006111186111116134ec565b84846134f4565b6001905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b61115a6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90615293565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611227600f54611219600e54600d5461348e90919063ffffffff16565b61348e90919063ffffffff16565b601481905550601960135461123c9190615489565b6014541115611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790615153565b60405180910390fd5b505050565b61128d6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190615293565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60006113888484846136bf565b5061144a846113956134ec565b61144585604051806060016040528060288152602001615ae860289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113fb6134ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b6134f4565b600190509392505050565b61145d6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190615293565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115a46115597f00000000000000000000000000000000000000000000000000000000000000006121fa565b6115966115857f000000000000000000000000000000000000000000000000000000000000dead6121fa565b601654613d5690919063ffffffff16565b613d5690919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116696115cd6134ec565b8461166485600760006115de6134ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b6134f4565b6001905092915050565b61167b6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90615293565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b600860009054906101000a900460ff1681565b6117606134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490615293565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60096020528060005260406000206000915054906101000a900460ff1681565b60006118616134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590615293565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561193957600080fd5b505afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190614a0f565b6040518363ffffffff1660e01b8152600401611a28929190615048565b60206040518083038186803b158015611a4057600080fd5b505afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614a0f565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c39578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611af557600080fd5b505afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d9190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8f57600080fd5b505afa158015611ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc79190614a0f565b6040518363ffffffff1660e01b8152600401611be4929190615048565b602060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c369190614a0f565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611d436134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790615293565b60405180910390fd5b6000339050828290508585905014611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490615273565b60405180910390fd5b600080600090505b84849050811015611e9057848482818110611e69577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e7b9190615433565b91508080611e889061564a565b915050611e25565b5080611e9b836121fa565b1015611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390615193565b60405180910390fd5b611f2e81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5690919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156121f15761205d858583818110611fbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600660008a8a86818110611fff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061201491906149e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b6006600089898581811061209a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120af91906149e6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612126577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061213b91906149e6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106121c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356040516121d69190615313565b60405180910390a380806121e99061564a565b915050611f74565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61224b6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf90615293565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60195481565b60155481565b6123d86134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90615293565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461253190615618565b80601f016020809104026020016040519081016040528092919081815260200182805461255d90615618565b80156125aa5780601f1061257f576101008083540402835291602001916125aa565b820191906000526020600020905b81548152906001019060200180831161258d57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061269d6125e76134ec565b8461269885604051806060016040528060258152602001615b1060259139600760006126116134ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b6134f4565b6001905092915050565b6126af6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273390615293565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061276d6127666134ec565b84846136bf565b506001905092915050565b6127806134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280490615293565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b6128326134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b690615293565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161290891906150fb565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61296d6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f190615293565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612aec6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090615293565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b9f90614ffd565b60006040518083038185875af1925050503d8060008114612bdc576040519150601f19603f3d011682016040523d82523d6000602084013e612be1565b606091505b5050905080612bef57600080fd5b50565b612bfa6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7e90615293565b60405180910390fd5b8060188190555050565b612c996134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1d90615293565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b612d4b6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcf90615293565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b612e416134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec590615293565b60405180910390fd5b8060198190555050565b612ee06134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6490615293565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd4906151b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6130a26134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461312f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312690615293565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161316a929190615071565b602060405180830381600087803b15801561318457600080fd5b505af1158015613198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bc9190614bd9565b505050565b60135481565b6131cf6134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461325c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325390615293565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6132f86134ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337c90615293565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156133dc576000905061343e565b600082846133ea91906154ba565b90508284826133f99190615489565b14613439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343090615253565b60405180910390fd5b809150505b92915050565b600061348683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613da0565b905092915050565b600080828461349d9190615433565b9050838110156134e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d9906151f3565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355b906152f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135cb906151d3565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516136b29190615313565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613727906152d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379790615173565b60405180910390fd5b601b60149054906101000a900460ff16156137c7576137c0848484613e03565b9050613ceb565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561386b5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138835750601b60189054906101000a900460ff165b156138ce576018548211156138cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c490615233565b60405180910390fd5b5b60006138d9306121fa565b9050600060175482101590508080156138ff5750601b60149054906101000a900460ff16155b80156139555750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561396d5750601b60159054906101000a900460ff165b1561399757601b60169054906101000a900460ff161561398d5760175491505b61399682613fd6565b5b613a20846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b065750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b1a57613b158787876142a1565b613b1c565b845b9050601b60179054906101000a900460ff168015613b845750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613be957601954613ba782613b99896121fa565b61348e90919063ffffffff16565b1115613be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdf90615213565b60405180910390fd5b5b613c3b81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cdb9190615313565b60405180910390a3600193505050505b9392505050565b6000838311158290613d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d319190615131565b60405180910390fd5b5060008385613d499190615514565b9050809150509392505050565b6000613d9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613cf2565b905092915050565b60008083118290613de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dde9190615131565b60405180910390fd5b5060008385613df69190615489565b9050809150509392505050565b6000613e8e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf29092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2382600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fc39190615313565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff021916908315150217905550600061400a60155460145461348e90919063ffffffff16565b90506000614025601054600d5461348e90919063ffffffff16565b90506000614040601154600e5461348e90919063ffffffff16565b9050600061407c600261406e86614060878a6133c990919063ffffffff16565b61344490919063ffffffff16565b61344490919063ffffffff16565b905060006140938287613d5690919063ffffffff16565b905060004790506140a3826144c8565b60006140b88247613d5690919063ffffffff16565b905060006140e26140d360028961344490919063ffffffff16565b89613d5690919063ffffffff16565b9050600061411e6002614110846141028c886133c990919063ffffffff16565b61344490919063ffffffff16565b61344490919063ffffffff16565b90506000614147836141398a876133c990919063ffffffff16565b61344490919063ffffffff16565b90506000614170826141628588613d5690919063ffffffff16565b613d5690919063ffffffff16565b905060008211156141e557600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156141e3573d6000803e3d6000fd5b505b600081111561425857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614256573d6000803e3d6000fd5b505b6000831180156142685750600088115b156142785761427788846147c5565b5b50505050505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614329576143226064614314601454866133c990919063ffffffff16565b61344490919063ffffffff16565b90506143a7565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143a6576143a36064614395601554866133c990919063ffffffff16565b61344490919063ffffffff16565b90505b5b60008111156144ab5761440281600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461348e90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144a29190615313565b60405180910390a35b6144be8184613d5690919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561450b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156145395781602001602082028036833780820191505090505b5090503081600081518110614577577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561461957600080fd5b505afa15801561462d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146519190614a0f565b8160018151811061468b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506146f230601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846134f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161475695949392919061535e565b600060405180830381600087803b15801561477057600080fd5b505af1158015614784573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516147b992919061532e565b60405180910390a15050565b6147f230601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846134f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161487b9695949392919061509a565b6060604051808303818588803b15801561489457600080fd5b505af11580156148a8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148cd9190614c7a565b5050505050565b6000813590506148e381615aa2565b92915050565b6000815190506148f881615aa2565b92915050565b60008083601f84011261491057600080fd5b8235905067ffffffffffffffff81111561492957600080fd5b60208301915083602082028301111561494157600080fd5b9250929050565b60008083601f84011261495a57600080fd5b8235905067ffffffffffffffff81111561497357600080fd5b60208301915083602082028301111561498b57600080fd5b9250929050565b6000813590506149a181615ab9565b92915050565b6000815190506149b681615ab9565b92915050565b6000813590506149cb81615ad0565b92915050565b6000815190506149e081615ad0565b92915050565b6000602082840312156149f857600080fd5b6000614a06848285016148d4565b91505092915050565b600060208284031215614a2157600080fd5b6000614a2f848285016148e9565b91505092915050565b60008060408385031215614a4b57600080fd5b6000614a59858286016148d4565b9250506020614a6a858286016148d4565b9150509250929050565b600080600060608486031215614a8957600080fd5b6000614a97868287016148d4565b9350506020614aa8868287016148d4565b9250506040614ab9868287016149bc565b9150509250925092565b60008060408385031215614ad657600080fd5b6000614ae4858286016148d4565b9250506020614af585828601614992565b9150509250929050565b60008060408385031215614b1257600080fd5b6000614b20858286016148d4565b9250506020614b31858286016149bc565b9150509250929050565b60008060008060408587031215614b5157600080fd5b600085013567ffffffffffffffff811115614b6b57600080fd5b614b77878288016148fe565b9450945050602085013567ffffffffffffffff811115614b9657600080fd5b614ba287828801614948565b925092505092959194509250565b600060208284031215614bc257600080fd5b6000614bd084828501614992565b91505092915050565b600060208284031215614beb57600080fd5b6000614bf9848285016149a7565b91505092915050565b600060208284031215614c1457600080fd5b6000614c22848285016149bc565b91505092915050565b600080600060608486031215614c4057600080fd5b6000614c4e868287016149bc565b9350506020614c5f868287016149bc565b9250506040614c70868287016149bc565b9150509250925092565b600080600060608486031215614c8f57600080fd5b6000614c9d868287016149d1565b9350506020614cae868287016149d1565b9250506040614cbf868287016149d1565b9150509250925092565b6000614cd58383614cf0565b60208301905092915050565b614cea8161555a565b82525050565b614cf981615548565b82525050565b614d0881615548565b82525050565b6000614d19826153e3565b614d238185615406565b9350614d2e836153d3565b8060005b83811015614d5f578151614d468882614cc9565b9750614d51836153f9565b925050600181019050614d32565b5085935050505092915050565b614d758161556c565b82525050565b614d84816155af565b82525050565b614d93816155d3565b82525050565b6000614da4826153ee565b614dae8185615422565b9350614dbe8185602086016155e5565b614dc781615720565b840191505092915050565b6000614ddf601c83615422565b9150614dea82615731565b602082019050919050565b6000614e02602383615422565b9150614e0d8261575a565b604082019050919050565b6000614e25601b83615422565b9150614e30826157a9565b602082019050919050565b6000614e48602683615422565b9150614e53826157d2565b604082019050919050565b6000614e6b602283615422565b9150614e7682615821565b604082019050919050565b6000614e8e601b83615422565b9150614e9982615870565b602082019050919050565b6000614eb1602583615422565b9150614ebc82615899565b604082019050919050565b6000614ed4602883615422565b9150614edf826158e8565b604082019050919050565b6000614ef7602183615422565b9150614f0282615937565b604082019050919050565b6000614f1a601683615422565b9150614f2582615986565b602082019050919050565b6000614f3d602083615422565b9150614f48826159af565b602082019050919050565b6000614f60601d83615422565b9150614f6b826159d8565b602082019050919050565b6000614f83602583615422565b9150614f8e82615a01565b604082019050919050565b6000614fa6600083615417565b9150614fb182615a50565b600082019050919050565b6000614fc9602483615422565b9150614fd482615a53565b604082019050919050565b614fe881615598565b82525050565b614ff7816155a2565b82525050565b600061500882614f99565b9150819050919050565b60006020820190506150276000830184614cff565b92915050565b60006020820190506150426000830184614ce1565b92915050565b600060408201905061505d6000830185614cff565b61506a6020830184614cff565b9392505050565b60006040820190506150866000830185614cff565b6150936020830184614fdf565b9392505050565b600060c0820190506150af6000830189614cff565b6150bc6020830188614fdf565b6150c96040830187614d8a565b6150d66060830186614d8a565b6150e36080830185614cff565b6150f060a0830184614fdf565b979650505050505050565b60006020820190506151106000830184614d6c565b92915050565b600060208201905061512b6000830184614d7b565b92915050565b6000602082019050818103600083015261514b8184614d99565b905092915050565b6000602082019050818103600083015261516c81614dd2565b9050919050565b6000602082019050818103600083015261518c81614df5565b9050919050565b600060208201905081810360008301526151ac81614e18565b9050919050565b600060208201905081810360008301526151cc81614e3b565b9050919050565b600060208201905081810360008301526151ec81614e5e565b9050919050565b6000602082019050818103600083015261520c81614e81565b9050919050565b6000602082019050818103600083015261522c81614ea4565b9050919050565b6000602082019050818103600083015261524c81614ec7565b9050919050565b6000602082019050818103600083015261526c81614eea565b9050919050565b6000602082019050818103600083015261528c81614f0d565b9050919050565b600060208201905081810360008301526152ac81614f30565b9050919050565b600060208201905081810360008301526152cc81614f53565b9050919050565b600060208201905081810360008301526152ec81614f76565b9050919050565b6000602082019050818103600083015261530c81614fbc565b9050919050565b60006020820190506153286000830184614fdf565b92915050565b60006040820190506153436000830185614fdf565b81810360208301526153558184614d0e565b90509392505050565b600060a0820190506153736000830188614fdf565b6153806020830187614d8a565b81810360408301526153928186614d0e565b90506153a16060830185614cff565b6153ae6080830184614fdf565b9695505050505050565b60006020820190506153cd6000830184614fee565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061543e82615598565b915061544983615598565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561547e5761547d615693565b5b828201905092915050565b600061549482615598565b915061549f83615598565b9250826154af576154ae6156c2565b5b828204905092915050565b60006154c582615598565b91506154d083615598565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561550957615508615693565b5b828202905092915050565b600061551f82615598565b915061552a83615598565b92508282101561553d5761553c615693565b5b828203905092915050565b600061555382615578565b9050919050565b600061556582615578565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006155ba826155c1565b9050919050565b60006155cc82615578565b9050919050565b60006155de82615598565b9050919050565b60005b838110156156035780820151818401526020810190506155e8565b83811115615612576000848401525b50505050565b6000600282049050600182168061563057607f821691505b60208210811415615644576156436156f1565b5b50919050565b600061565582615598565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561568857615687615693565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615aab81615548565b8114615ab657600080fd5b50565b615ac28161556c565b8114615acd57600080fd5b50565b615ad981615598565b8114615ae457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a0b2eb930e7c7a2871a51b8fe076c6f47ab6459bf20b9f60b429981d907f146a64736f6c63430008040033

Deployed Bytecode Sourcemap

11556:17051:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15756:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20924:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12096:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16922:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13312:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16033:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20521:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17855:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12716:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21612:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18232:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12008:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19333:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15942:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16419:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18463:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12405:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13429:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12313:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18595:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12851:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12348:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19765:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27899:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16141:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3233:230;;;;;;;;;;;;;:::i;:::-;;11765:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13166:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13238:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12973:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17436:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13572:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12764:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12574:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3008:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15847:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11963:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16645:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19196:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21437:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15642:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19017:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12673:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13360:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12807:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12515:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18735:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13077:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13476:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12631:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16268:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24074:154;;;;;;;;;;;;;:::i;:::-;;18113:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17998:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17573:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12934:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18353:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3471:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23927:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12896:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17716:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13530:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11864:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18877:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15756:83;15793:13;15826:5;15819:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15756:83;:::o;20924:405::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21046:10:::1;21026:17;:30;;;;21087:10;21067:17;:30;;;;21128:10;21108:17;:30;;;;21170:63;21215:17;;21170:40;21192:17;;21170;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;21149:18;:84;;;;21284:2;21275:8;;:11;;;;:::i;:::-;21252:18;;:35;;21244:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20924:405:::0;;;:::o;12096:81::-;;;:::o;16922:161::-;16997:4;17014:39;17023:12;:10;:12::i;:::-;17037:7;17046:6;17014:8;:39::i;:::-;17071:4;17064:11;;16922:161;;;;:::o;13312:41::-;;;;;;;;;;;;;:::o;16033:100::-;16086:7;16113:12;;16106:19;;16033:100;:::o;20521:395::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20641:10:::1;20622:16;:29;;;;20681:10;20662:16;:29;;;;20721:10;20702:16;:29;;;;20762:60;20805:16;;20762:38;20783:16;;20762;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20742:17;:80;;;;20872:2;20863:8;;:11;;;;:::i;:::-;20841:17;;:34;;20833:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20521:395:::0;;;:::o;17855:135::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17976:6:::1;17946:19;:27;17966:6;17946:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17855:135:::0;;:::o;12716:35::-;;;;:::o;21612:313::-;21710:4;21727:36;21737:6;21745:9;21756:6;21727:9;:36::i;:::-;;21774:121;21783:6;21791:12;:10;:12::i;:::-;21805:89;21843:6;21805:89;;;;;;;;;;;;;;;;;:11;:19;21817:6;21805:19;;;;;;;;;;;;;;;:33;21825:12;:10;:12::i;:::-;21805:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21774:8;:121::i;:::-;21913:4;21906:11;;21612:313;;;;;:::o;18232:113::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18329:8:::1;18310:16;;:27;;;;;;;;;;;;;;;;;;18232:113:::0;:::o;12008:81::-;;;:::o;19333:156::-;19386:7;19413:68;19458:22;19468:11;19458:9;:22::i;:::-;19413:40;19430:22;19440:11;19430:9;:22::i;:::-;19413:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19406:75;;19333:156;:::o;15942:83::-;15983:5;16008:9;;;;;;;;;;;16001:16;;15942:83;:::o;16419:218::-;16507:4;16524:83;16533:12;:10;:12::i;:::-;16547:7;16556:50;16595:10;16556:11;:25;16568:12;:10;:12::i;:::-;16556:25;;;;;;;;;;;;;;;:34;16582:7;16556:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16524:8;:83::i;:::-;16625:4;16618:11;;16419:218;;;;:::o;18463:124::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18571:8:::1;18545:23;:34;;;;18463:124:::0;:::o;12405:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13429:40::-;;;;;;;;;;;;;:::o;12313:26::-;;;;;;;;;;;;;:::o;18595:132::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18708:10:::1;18682:15;;:37;;;;;;;;;;;;;;;;;;18595:132:::0;:::o;12851:36::-;;;;:::o;12348:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19765:748::-;19845:22;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19882:35:::1;19939:16;19882:74;;20005:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19987:53;;;20049:4;20056:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19987:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19970:110;;20122:1;20096:28;;:14;:28;;;20093:225;;;20210:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20192:74;;;20275:4;20282:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20192:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20175:131;;20093:225;20344:14;20330:11;;:28;;;;;;;;;;;;;;;;;;20410:16;20392:15;;:34;;;;;;;;;;;;;;;;;;20501:4;20464:12;:34;20485:11;;;;;;;;;;;20464:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3212:1;19765:748:::0;;;:::o;27899:697::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27999:15:::1;28017:10;27999:28;;28065:7;;:14;;28046:8;;:15;;:33;28038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28116:15;28146:6:::0;28155:1:::1;28146:10;;28142:92;28162:7;;:14;;28158:1;:18;28142:92;;;28212:7;;28220:1;28212:10;;;;;;;;;;;;;;;;;;;;;28198:24;;;;;:::i;:::-;;;28178:3;;;;;:::i;:::-;;;;28142:92;;;;28274:10;28252:18;28262:7;28252:9;:18::i;:::-;:32;;28244:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28347:34;28370:10;28347:9;:18;28357:7;28347:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;28326:9;:18;28336:7;28326:18;;;;;;;;;;;;;;;:55;;;;28397:6;28393:194;28413:8;;:15;;28409:1;:19;28393:194;;;28475:38;28502:7;;28510:1;28502:10;;;;;;;;;;;;;;;;;;;;;28475:9;:22;28485:8;;28494:1;28485:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28475:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28450:9;:22;28460:8;;28469:1;28460:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28450:22;;;;;;;;;;;;;;;:63;;;;28551:8;;28560:1;28551:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28533:42;;28542:7;28533:42;;;28564:7;;28572:1;28564:10;;;;;;;;;;;;;;;;;;;;;28533:42;;;;;;:::i;:::-;;;;;;;;28430:3;;;;;:::i;:::-;;;;28393:194;;;;3212:1;;27899:697:::0;;;;:::o;16141:119::-;16207:7;16234:9;:18;16244:7;16234:18;;;;;;;;;;;;;;;;16227:25;;16141:119;;;:::o;3233:230::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3340:42:::1;3303:81;;3324:6;::::0;::::1;;;;;;;;3303:81;;;;;;;;;;;;3412:42;3395:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3233:230::o:0;11765:92::-;;;;;;;;;;;;;:::o;13166:59::-;;;;:::o;13238:58::-;;;;:::o;12973:33::-;;;;:::o;17436:129::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17549:8:::1;17525:12;:21;17538:7;17525:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17436:129:::0;;:::o;13572:41::-;;;;;;;;;;;;;:::o;12764:36::-;;;;:::o;12574:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3008:79::-;3046:7;3073:6;;;;;;;;;;;3066:13;;3008:79;:::o;15847:87::-;15886:13;15919:7;15912:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15847:87;:::o;11963:32::-;;;;;;;;;;;;;:::o;16645:269::-;16738:4;16755:129;16764:12;:10;:12::i;:::-;16778:7;16787:96;16826:15;16787:96;;;;;;;;;;;;;;;;;:11;:25;16799:12;:10;:12::i;:::-;16787:25;;;;;;;;;;;;;;;:34;16813:7;16787:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16755:8;:129::i;:::-;16902:4;16895:11;;16645:269;;;;:::o;19196:125::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19305:8:::1;19277:25;;:36;;;;;;;;;;;;;;;;;;19196:125:::0;:::o;21437:167::-;21515:4;21532:42;21542:12;:10;:12::i;:::-;21556:9;21567:6;21532:9;:42::i;:::-;;21592:4;21585:11;;21437:167;;;;:::o;15642:106::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15730:8:::1;15713:14;;:25;;;;;;;;;;;;;;;;;;15642:106:::0;:::o;19017:171::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19118:8:::1;19094:21;;:32;;;;;;;;;;;;;;;;;;19142:38;19171:8;19142:38;;;;;;:::i;:::-;;;;;;;;19017:171:::0;:::o;12673:36::-;;;;:::o;13360:26::-;;;;;;;;;;;;;:::o;12807:37::-;;;;:::o;12515:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18735:134::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18850:10:::1;18822:17;;:39;;;;;;;;;;;;;;;;;;18735:134:::0;:::o;13077:69::-;;;;:::o;13476:45::-;;;;;;;;;;;;;:::o;12631:35::-;;;;:::o;16268:143::-;16349:7;16376:11;:18;16388:5;16376:18;;;;;;;;;;;;;;;:27;16395:7;16376:27;;;;;;;;;;;;;;;;16369:34;;16268:143;;;;:::o;24074:154::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24128:7:::1;24148:10;24140:24;;24172:21;24140:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24127:71;;;24217:2;24209:11;;;::::0;::::1;;3212:1;24074:154::o:0;18113:111::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18205:11:::1;18190:12;:26;;;;18113:111:::0;:::o;17998:107::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18090:7:::1;18065:22;;:32;;;;;;;;;;;;;;;;;;17998:107:::0;:::o;17573:135::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17692:8:::1;17663:17;:26;17681:7;17663:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17573:135:::0;;:::o;12934:32::-;;;;:::o;18353:102::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18439:8:::1;18425:10;:22;;;;18353:102:::0;:::o;3471:244::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3580:1:::1;3560:22;;:8;:22;;;;3552:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3670:8;3641:38;;3662:6;::::0;::::1;;;;;;;;3641:38;;;;;;;;;;;;3699:8;3690:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3471:244:::0;:::o;23927:139::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24022:6:::1;24015:23;;;24039:10;24050:7;24015:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23927:139:::0;;:::o;12896:29::-;;;;:::o;17716:127::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17829:6:::1;17803:15;:23;17819:6;17803:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17716:127:::0;;:::o;13530:35::-;;;;;;;;;;;;;:::o;11864:92::-;;;;;;;;;;;;;:::o;18877:132::-;3152:12;:10;:12::i;:::-;3142:22;;:6;;;;;;;;;;:22;;;3134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18990:10:::1;18964:15;;:37;;;;;;;;;;;;;;;;;;18877:132:::0;:::o;1693:250::-;1751:7;1780:1;1775;:6;1771:47;;;1805:1;1798:8;;;;1771:47;1830:9;1846:1;1842;:5;;;;:::i;:::-;1830:17;;1875:1;1870;1866;:5;;;;:::i;:::-;:10;1858:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1934:1;1927:8;;;1693:250;;;;;:::o;1951:132::-;2009:7;2036:39;2040:1;2043;2036:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2029:46;;1951:132;;;;:::o;1160:181::-;1218:7;1238:9;1254:1;1250;:5;;;;:::i;:::-;1238:17;;1279:1;1274;:6;;1266:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1332:1;1325:8;;;1160:181;;;;:::o;218:115::-;271:15;314:10;299:26;;218:115;:::o;17091:337::-;17201:1;17184:19;;:5;:19;;;;17176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17282:1;17263:21;;:7;:21;;;;17255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17366:6;17336:11;:18;17348:5;17336:18;;;;;;;;;;;;;;;:27;17355:7;17336:27;;;;;;;;;;;;;;;:36;;;;17404:7;17388:32;;17397:5;17388:32;;;17413:6;17388:32;;;;;;:::i;:::-;;;;;;;;17091:337;;;:::o;21933:1986::-;22020:4;22065:1;22047:20;;:6;:20;;;;22039:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22149:1;22128:23;;:9;:23;;;;22120:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22403:16;;;;;;;;;;;22400:1502;;;22453:41;22468:6;22476:9;22487:6;22453:14;:41::i;:::-;22446:48;;;;22400:1502;22552:15;:23;22568:6;22552:23;;;;;;;;;;;;;;;;;;;;;;;;;22551:24;:55;;;;;22580:15;:26;22596:9;22580:26;;;;;;;;;;;;;;;;;;;;;;;;;22579:27;22551:55;:81;;;;;22610:22;;;;;;;;;;;22551:81;22548:196;;;22671:12;;22661:6;:22;;22653:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22548:196;22760:28;22791:24;22809:4;22791:9;:24::i;:::-;22760:55;;22830:28;22885:23;;22861:20;:47;;22830:78;;22941:23;:44;;;;;22969:16;;;;;;;;;;;22968:17;22941:44;:69;;;;;22990:12;:20;23003:6;22990:20;;;;;;;;;;;;;;;;;;;;;;;;;22989:21;22941:69;:94;;;;;23014:21;;;;;;;;;;;22941:94;22937:305;;;23073:25;;;;;;;;;;;23070:97;;;23144:23;;23121:46;;23070:97;23186:36;23201:20;23186:14;:36::i;:::-;22937:305;23278:53;23300:6;23278:53;;;;;;;;;;;;;;;;;:9;:17;23288:6;23278:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23258:9;:17;23268:6;23258:17;;;;;;;;;;;;;;;:73;;;;23348:19;23371:17;:25;23389:6;23371:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;23400:17;:28;23418:9;23400:28;;;;;;;;;;;;;;;;;;;;;;;;;23371:57;23370:148;;23484:34;23492:6;23500:9;23511:6;23484:7;:34::i;:::-;23370:148;;;23475:6;23370:148;23348:170;;23538:16;;;;;;;;;;;:51;;;;;23559:19;:30;23579:9;23559:30;;;;;;;;;;;;;;;;;;;;;;;;;23558:31;23538:51;23535:191;;;23659:10;;23618:37;23643:11;23618:20;23628:9;23618;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23610:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23535:191;23765:37;23790:11;23765:9;:20;23775:9;23765:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23742:9;:20;23752:9;23742:20;;;;;;;;;;;;;;;:60;;;;23841:9;23824:40;;23833:6;23824:40;;;23852:11;23824:40;;;;;;:::i;:::-;;;;;;;;23886:4;23879:11;;;;;21933:1986;;;;;;:::o;1493:192::-;1579:7;1612:1;1607;:6;;1615:12;1599:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1639:9;1655:1;1651;:5;;;;:::i;:::-;1639:17;;1676:1;1669:8;;;1493:192;;;;;:::o;1349:136::-;1407:7;1434:43;1438:1;1441;1434:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1427:50;;1349:136;;;;:::o;2091:278::-;2177:7;2209:1;2205;:5;2212:12;2197:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2236:9;2252:1;2248;:5;;;;:::i;:::-;2236:17;;2360:1;2353:8;;;2091:278;;;;;:::o;24236:330::-;24329:4;24366:53;24388:6;24366:53;;;;;;;;;;;;;;;;;:9;:17;24376:6;24366:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24346:9;:17;24356:6;24346:17;;;;;;;;;;;;;;;:73;;;;24453:32;24478:6;24453:9;:20;24463:9;24453:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24430:9;:20;24440:9;24430:20;;;;;;;;;;;;;;;:55;;;;24518:9;24501:35;;24510:6;24501:35;;;24529:6;24501:35;;;;;;:::i;:::-;;;;;;;;24554:4;24547:11;;24236:330;;;;;:::o;24574:1449::-;14057:4;14038:16;;:23;;;;;;;;;;;;;;;;;;24648:19:::1;24670:41;24692:18;;24670:17;;:21;;:41;;;;:::i;:::-;24648:63;;24724:22;24749:39;24770:17;;24749:16;;:20;;:39;;;;:::i;:::-;24724:64;;24799:22;24824:39;24845:17;;24824:16;;:20;;:39;;;;:::i;:::-;24799:64;;24962:18;24983:51;25032:1;24983:44;25015:11;24983:27;24995:14;24983:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24962:72;;25045:20;25068:23;25080:10;25068:7;:11;;:23;;;;:::i;:::-;25045:46;;25104:22;25130:21;25104:47;;25162:30;25179:12;25162:16;:30::i;:::-;25203:23;25230:41;25256:14;25230:21;:25;;:41;;;;:::i;:::-;25203:68;;25284:19;25306:38;25322:21;25341:1;25322:14;:18;;:21;;;;:::i;:::-;25306:11;:15;;:38;;;;:::i;:::-;25284:60;;25357:26;25386:59;25443:1;25386:52;25426:11;25386:35;25406:14;25386:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;25357:88;;25456:26;25485:52;25525:11;25485:35;25505:14;25485:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25456:81;;25548:26;25577:63;25621:18;25577:39;25597:18;25577:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25548:92;;25677:1;25656:18;:22;25653:107;;;25703:15;;;;;;;;;;;25695:33;;:53;25729:18;25695:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25653:107;25796:1;25775:18;:22;25772:107;;;25822:15;;;;;;;;;;;25814:33;;:53;25848:18;25814:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25772:107;25924:1;25903:18;:22;:40;;;;;25942:1;25929:10;:14;25903:40;25900:116;;;25960:44;25973:10;25985:18;25960:12;:44::i;:::-;25900:116;14072:1;;;;;;;;;;;14103:5:::0;14084:16;;:24;;;;;;;;;;;;;;;;;;24574:1449;:::o;27240:622::-;27326:7;27356:17;27376:1;27356:21;;27401:12;:20;27414:6;27401:20;;;;;;;;;;;;;;;;;;;;;;;;;27398:223;;;27450:38;27484:3;27450:29;27461:17;;27450:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27438:50;;27398:223;;;27518:12;:23;27531:9;27518:23;;;;;;;;;;;;;;;;;;;;;;;;;27515:106;;;27570:39;27605:3;27570:30;27581:18;;27570:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27558:51;;27515:106;27398:223;27656:1;27644:9;:13;27641:173;;;27701:39;27730:9;27701;:24;27719:4;27701:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27674:9;:24;27692:4;27674:24;;;;;;;;;;;;;;;:66;;;;27785:4;27760:42;;27769:6;27760:42;;;27792:9;27760:42;;;;;;:::i;:::-;;;;;;;;27641:173;27833:21;27844:9;27833:6;:10;;:21;;;;:::i;:::-;27826:28;;;27240:622;;;;;:::o;26035:666::-;26161:21;26199:1;26185:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26161:40;;26230:4;26212;26217:1;26212:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26256:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26246:4;26251:1;26246:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;26291:62;26308:4;26323:15;;;;;;;;;;;26341:11;26291:8;:62::i;:::-;26392:15;;;;;;;;;;;:66;;;26473:11;26499:1;26543:4;26570;26606:15;26392:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26658:35;26675:11;26688:4;26658:35;;;;;;;:::i;:::-;;;;;;;;26035:666;;:::o;26709:523::-;26857:62;26874:4;26889:15;;;;;;;;;;;26907:11;26857:8;:62::i;:::-;26962:15;;;;;;;;;;;:31;;;27001:9;27034:4;27054:11;27080:1;27123;27166:17;;;;;;;;;;;27198:15;26962:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26709:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;708:367::-;781:8;791:6;841:3;834:4;826:6;822:17;818:27;808:2;;859:1;856;849:12;808:2;895:6;882:20;872:30;;925:18;917:6;914:30;911:2;;;957:1;954;947:12;911:2;994:4;986:6;982:17;970:29;;1048:3;1040:4;1032:6;1028:17;1018:8;1014:32;1011:41;1008:2;;;1065:1;1062;1055:12;1008:2;798:277;;;;;:::o;1081:133::-;1124:5;1162:6;1149:20;1140:29;;1178:30;1202:5;1178:30;:::i;:::-;1130:84;;;;:::o;1220:137::-;1274:5;1305:6;1299:13;1290:22;;1321:30;1345:5;1321:30;:::i;:::-;1280:77;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1657:262::-;1716:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:2;;;1781:1;1778;1771:12;1733:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1723:196;;;;:::o;1925:284::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2060:1;2057;2050:12;2012:2;2103:1;2128:64;2184:7;2175:6;2164:9;2160:22;2128:64;:::i;:::-;2118:74;;2074:128;2002:207;;;;:::o;2215:407::-;2283:6;2291;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2526:2;2552:53;2597:7;2588:6;2577:9;2573:22;2552:53;:::i;:::-;2542:63;;2497:118;2298:324;;;;;:::o;2628:552::-;2705:6;2713;2721;2770:2;2758:9;2749:7;2745:23;2741:32;2738:2;;;2786:1;2783;2776:12;2738:2;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2728:452;;;;;:::o;3186:401::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:2;;;3324:1;3321;3314:12;3276:2;3367:1;3392:53;3437:7;3428:6;3417:9;3413:22;3392:53;:::i;:::-;3382:63;;3338:117;3494:2;3520:50;3562:7;3553:6;3542:9;3538:22;3520:50;:::i;:::-;3510:60;;3465:115;3266:321;;;;;:::o;3593:407::-;3661:6;3669;3718:2;3706:9;3697:7;3693:23;3689:32;3686:2;;;3734:1;3731;3724:12;3686:2;3777:1;3802:53;3847:7;3838:6;3827:9;3823:22;3802:53;:::i;:::-;3792:63;;3748:117;3904:2;3930:53;3975:7;3966:6;3955:9;3951:22;3930:53;:::i;:::-;3920:63;;3875:118;3676:324;;;;;:::o;4006:733::-;4128:6;4136;4144;4152;4201:2;4189:9;4180:7;4176:23;4172:32;4169:2;;;4217:1;4214;4207:12;4169:2;4288:1;4277:9;4273:17;4260:31;4318:18;4310:6;4307:30;4304:2;;;4350:1;4347;4340:12;4304:2;4386:80;4458:7;4449:6;4438:9;4434:22;4386:80;:::i;:::-;4368:98;;;;4231:245;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4642:80;4714:7;4705:6;4694:9;4690:22;4642:80;:::i;:::-;4624:98;;;;4486:246;4159:580;;;;;;;:::o;4745:256::-;4801:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:2;;;4866:1;4863;4856:12;4818:2;4909:1;4934:50;4976:7;4967:6;4956:9;4952:22;4934:50;:::i;:::-;4924:60;;4880:114;4808:193;;;;:::o;5007:278::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;5139:1;5136;5129:12;5091:2;5182:1;5207:61;5260:7;5251:6;5240:9;5236:22;5207:61;:::i;:::-;5197:71;;5153:125;5081:204;;;;:::o;5291:262::-;5350:6;5399:2;5387:9;5378:7;5374:23;5370:32;5367:2;;;5415:1;5412;5405:12;5367:2;5458:1;5483:53;5528:7;5519:6;5508:9;5504:22;5483:53;:::i;:::-;5473:63;;5429:117;5357:196;;;;:::o;5559:552::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:2;;;5717:1;5714;5707:12;5669:2;5760:1;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5731:117;5887:2;5913:53;5958:7;5949:6;5938:9;5934:22;5913:53;:::i;:::-;5903:63;;5858:118;6015:2;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5986:118;5659:452;;;;;:::o;6117:596::-;6205:6;6213;6221;6270:2;6258:9;6249:7;6245:23;6241:32;6238:2;;;6286:1;6283;6276:12;6238:2;6329:1;6354:64;6410:7;6401:6;6390:9;6386:22;6354:64;:::i;:::-;6344:74;;6300:128;6467:2;6493:64;6549:7;6540:6;6529:9;6525:22;6493:64;:::i;:::-;6483:74;;6438:129;6606:2;6632:64;6688:7;6679:6;6668:9;6664:22;6632:64;:::i;:::-;6622:74;;6577:129;6228:485;;;;;:::o;6719:179::-;6788:10;6809:46;6851:3;6843:6;6809:46;:::i;:::-;6887:4;6882:3;6878:14;6864:28;;6799:99;;;;:::o;6904:142::-;7007:32;7033:5;7007:32;:::i;:::-;7002:3;6995:45;6985:61;;:::o;7052:108::-;7129:24;7147:5;7129:24;:::i;:::-;7124:3;7117:37;7107:53;;:::o;7166:118::-;7253:24;7271:5;7253:24;:::i;:::-;7248:3;7241:37;7231:53;;:::o;7320:732::-;7439:3;7468:54;7516:5;7468:54;:::i;:::-;7538:86;7617:6;7612:3;7538:86;:::i;:::-;7531:93;;7648:56;7698:5;7648:56;:::i;:::-;7727:7;7758:1;7743:284;7768:6;7765:1;7762:13;7743:284;;;7844:6;7838:13;7871:63;7930:3;7915:13;7871:63;:::i;:::-;7864:70;;7957:60;8010:6;7957:60;:::i;:::-;7947:70;;7803:224;7790:1;7787;7783:9;7778:14;;7743:284;;;7747:14;8043:3;8036:10;;7444:608;;;;;;;:::o;8058:109::-;8139:21;8154:5;8139:21;:::i;:::-;8134:3;8127:34;8117:50;;:::o;8173:185::-;8287:64;8345:5;8287:64;:::i;:::-;8282:3;8275:77;8265:93;;:::o;8364:147::-;8459:45;8498:5;8459:45;:::i;:::-;8454:3;8447:58;8437:74;;:::o;8517:364::-;8605:3;8633:39;8666:5;8633:39;:::i;:::-;8688:71;8752:6;8747:3;8688:71;:::i;:::-;8681:78;;8768:52;8813:6;8808:3;8801:4;8794:5;8790:16;8768:52;:::i;:::-;8845:29;8867:6;8845:29;:::i;:::-;8840:3;8836:39;8829:46;;8609:272;;;;;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;9033:220;;;:::o;9259:366::-;9401:3;9422:67;9486:2;9481:3;9422:67;:::i;:::-;9415:74;;9498:93;9587:3;9498:93;:::i;:::-;9616:2;9611:3;9607:12;9600:19;;9405:220;;;:::o;9631:366::-;9773:3;9794:67;9858:2;9853:3;9794:67;:::i;:::-;9787:74;;9870:93;9959:3;9870:93;:::i;:::-;9988:2;9983:3;9979:12;9972:19;;9777:220;;;:::o;10003:366::-;10145:3;10166:67;10230:2;10225:3;10166:67;:::i;:::-;10159:74;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10149:220;;;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10521:220;;;:::o;10747:366::-;10889:3;10910:67;10974:2;10969:3;10910:67;:::i;:::-;10903:74;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10893:220;;;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11265:220;;;:::o;11491:366::-;11633:3;11654:67;11718:2;11713:3;11654:67;:::i;:::-;11647:74;;11730:93;11819:3;11730:93;:::i;:::-;11848:2;11843:3;11839:12;11832:19;;11637:220;;;:::o;11863:366::-;12005:3;12026:67;12090:2;12085:3;12026:67;:::i;:::-;12019:74;;12102:93;12191:3;12102:93;:::i;:::-;12220:2;12215:3;12211:12;12204:19;;12009:220;;;:::o;12235:366::-;12377:3;12398:67;12462:2;12457:3;12398:67;:::i;:::-;12391:74;;12474:93;12563:3;12474:93;:::i;:::-;12592:2;12587:3;12583:12;12576:19;;12381:220;;;:::o;12607:366::-;12749:3;12770:67;12834:2;12829:3;12770:67;:::i;:::-;12763:74;;12846:93;12935:3;12846:93;:::i;:::-;12964:2;12959:3;12955:12;12948:19;;12753:220;;;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;13125:220;;;:::o;13351:366::-;13493:3;13514:67;13578:2;13573:3;13514:67;:::i;:::-;13507:74;;13590:93;13679:3;13590:93;:::i;:::-;13708:2;13703:3;13699:12;13692:19;;13497:220;;;:::o;13723:398::-;13882:3;13903:83;13984:1;13979:3;13903:83;:::i;:::-;13896:90;;13995:93;14084:3;13995:93;:::i;:::-;14113:1;14108:3;14104:11;14097:18;;13886:235;;;:::o;14127:366::-;14269:3;14290:67;14354:2;14349:3;14290:67;:::i;:::-;14283:74;;14366:93;14455:3;14366:93;:::i;:::-;14484:2;14479:3;14475:12;14468:19;;14273:220;;;:::o;14499:118::-;14586:24;14604:5;14586:24;:::i;:::-;14581:3;14574:37;14564:53;;:::o;14623:112::-;14706:22;14722:5;14706:22;:::i;:::-;14701:3;14694:35;14684:51;;:::o;14741:379::-;14925:3;14947:147;15090:3;14947:147;:::i;:::-;14940:154;;15111:3;15104:10;;14929:191;;;:::o;15126:222::-;15219:4;15257:2;15246:9;15242:18;15234:26;;15270:71;15338:1;15327:9;15323:17;15314:6;15270:71;:::i;:::-;15224:124;;;;:::o;15354:254::-;15463:4;15501:2;15490:9;15486:18;15478:26;;15514:87;15598:1;15587:9;15583:17;15574:6;15514:87;:::i;:::-;15468:140;;;;:::o;15614:332::-;15735:4;15773:2;15762:9;15758:18;15750:26;;15786:71;15854:1;15843:9;15839:17;15830:6;15786:71;:::i;:::-;15867:72;15935:2;15924:9;15920:18;15911:6;15867:72;:::i;:::-;15740:206;;;;;:::o;15952:332::-;16073:4;16111:2;16100:9;16096:18;16088:26;;16124:71;16192:1;16181:9;16177:17;16168:6;16124:71;:::i;:::-;16205:72;16273:2;16262:9;16258:18;16249:6;16205:72;:::i;:::-;16078:206;;;;;:::o;16290:807::-;16539:4;16577:3;16566:9;16562:19;16554:27;;16591:71;16659:1;16648:9;16644:17;16635:6;16591:71;:::i;:::-;16672:72;16740:2;16729:9;16725:18;16716:6;16672:72;:::i;:::-;16754:80;16830:2;16819:9;16815:18;16806:6;16754:80;:::i;:::-;16844;16920:2;16909:9;16905:18;16896:6;16844:80;:::i;:::-;16934:73;17002:3;16991:9;16987:19;16978:6;16934:73;:::i;:::-;17017;17085:3;17074:9;17070:19;17061:6;17017:73;:::i;:::-;16544:553;;;;;;;;;:::o;17103:210::-;17190:4;17228:2;17217:9;17213:18;17205:26;;17241:65;17303:1;17292:9;17288:17;17279:6;17241:65;:::i;:::-;17195:118;;;;:::o;17319:276::-;17439:4;17477:2;17466:9;17462:18;17454:26;;17490:98;17585:1;17574:9;17570:17;17561:6;17490:98;:::i;:::-;17444:151;;;;:::o;17601:313::-;17714:4;17752:2;17741:9;17737:18;17729:26;;17801:9;17795:4;17791:20;17787:1;17776:9;17772:17;17765:47;17829:78;17902:4;17893:6;17829:78;:::i;:::-;17821:86;;17719:195;;;;:::o;17920:419::-;18086:4;18124:2;18113:9;18109:18;18101:26;;18173:9;18167:4;18163:20;18159:1;18148:9;18144:17;18137:47;18201:131;18327:4;18201:131;:::i;:::-;18193:139;;18091:248;;;:::o;18345:419::-;18511:4;18549:2;18538:9;18534:18;18526:26;;18598:9;18592:4;18588:20;18584:1;18573:9;18569:17;18562:47;18626:131;18752:4;18626:131;:::i;:::-;18618:139;;18516:248;;;:::o;18770:419::-;18936:4;18974:2;18963:9;18959:18;18951:26;;19023:9;19017:4;19013:20;19009:1;18998:9;18994:17;18987:47;19051:131;19177:4;19051:131;:::i;:::-;19043:139;;18941:248;;;:::o;19195:419::-;19361:4;19399:2;19388:9;19384:18;19376:26;;19448:9;19442:4;19438:20;19434:1;19423:9;19419:17;19412:47;19476:131;19602:4;19476:131;:::i;:::-;19468:139;;19366:248;;;:::o;19620:419::-;19786:4;19824:2;19813:9;19809:18;19801:26;;19873:9;19867:4;19863:20;19859:1;19848:9;19844:17;19837:47;19901:131;20027:4;19901:131;:::i;:::-;19893:139;;19791:248;;;:::o;20045:419::-;20211:4;20249:2;20238:9;20234:18;20226:26;;20298:9;20292:4;20288:20;20284:1;20273:9;20269:17;20262:47;20326:131;20452:4;20326:131;:::i;:::-;20318:139;;20216:248;;;:::o;20470:419::-;20636:4;20674:2;20663:9;20659:18;20651:26;;20723:9;20717:4;20713:20;20709:1;20698:9;20694:17;20687:47;20751:131;20877:4;20751:131;:::i;:::-;20743:139;;20641:248;;;:::o;20895:419::-;21061:4;21099:2;21088:9;21084:18;21076:26;;21148:9;21142:4;21138:20;21134:1;21123:9;21119:17;21112:47;21176:131;21302:4;21176:131;:::i;:::-;21168:139;;21066:248;;;:::o;21320:419::-;21486:4;21524:2;21513:9;21509:18;21501:26;;21573:9;21567:4;21563:20;21559:1;21548:9;21544:17;21537:47;21601:131;21727:4;21601:131;:::i;:::-;21593:139;;21491:248;;;:::o;21745:419::-;21911:4;21949:2;21938:9;21934:18;21926:26;;21998:9;21992:4;21988:20;21984:1;21973:9;21969:17;21962:47;22026:131;22152:4;22026:131;:::i;:::-;22018:139;;21916:248;;;:::o;22170:419::-;22336:4;22374:2;22363:9;22359:18;22351:26;;22423:9;22417:4;22413:20;22409:1;22398:9;22394:17;22387:47;22451:131;22577:4;22451:131;:::i;:::-;22443:139;;22341:248;;;:::o;22595:419::-;22761:4;22799:2;22788:9;22784:18;22776:26;;22848:9;22842:4;22838:20;22834:1;22823:9;22819:17;22812:47;22876:131;23002:4;22876:131;:::i;:::-;22868:139;;22766:248;;;:::o;23020:419::-;23186:4;23224:2;23213:9;23209:18;23201:26;;23273:9;23267:4;23263:20;23259:1;23248:9;23244:17;23237:47;23301:131;23427:4;23301:131;:::i;:::-;23293:139;;23191:248;;;:::o;23445:419::-;23611:4;23649:2;23638:9;23634:18;23626:26;;23698:9;23692:4;23688:20;23684:1;23673:9;23669:17;23662:47;23726:131;23852:4;23726:131;:::i;:::-;23718:139;;23616:248;;;:::o;23870:222::-;23963:4;24001:2;23990:9;23986:18;23978:26;;24014:71;24082:1;24071:9;24067:17;24058:6;24014:71;:::i;:::-;23968:124;;;;:::o;24098:483::-;24269:4;24307:2;24296:9;24292:18;24284:26;;24320:71;24388:1;24377:9;24373:17;24364:6;24320:71;:::i;:::-;24438:9;24432:4;24428:20;24423:2;24412:9;24408:18;24401:48;24466:108;24569:4;24560:6;24466:108;:::i;:::-;24458:116;;24274:307;;;;;:::o;24587:831::-;24850:4;24888:3;24877:9;24873:19;24865:27;;24902:71;24970:1;24959:9;24955:17;24946:6;24902:71;:::i;:::-;24983:80;25059:2;25048:9;25044:18;25035:6;24983:80;:::i;:::-;25110:9;25104:4;25100:20;25095:2;25084:9;25080:18;25073:48;25138:108;25241:4;25232:6;25138:108;:::i;:::-;25130:116;;25256:72;25324:2;25313:9;25309:18;25300:6;25256:72;:::i;:::-;25338:73;25406:3;25395:9;25391:19;25382:6;25338:73;:::i;:::-;24855:563;;;;;;;;:::o;25424:214::-;25513:4;25551:2;25540:9;25536:18;25528:26;;25564:67;25628:1;25617:9;25613:17;25604:6;25564:67;:::i;:::-;25518:120;;;;:::o;25644:132::-;25711:4;25734:3;25726:11;;25764:4;25759:3;25755:14;25747:22;;25716:60;;;:::o;25782:114::-;25849:6;25883:5;25877:12;25867:22;;25856:40;;;:::o;25902:99::-;25954:6;25988:5;25982:12;25972:22;;25961:40;;;:::o;26007:113::-;26077:4;26109;26104:3;26100:14;26092:22;;26082:38;;;:::o;26126:184::-;26225:11;26259:6;26254:3;26247:19;26299:4;26294:3;26290:14;26275:29;;26237:73;;;;:::o;26316:147::-;26417:11;26454:3;26439:18;;26429:34;;;;:::o;26469:169::-;26553:11;26587:6;26582:3;26575:19;26627:4;26622:3;26618:14;26603:29;;26565:73;;;;:::o;26644:305::-;26684:3;26703:20;26721:1;26703:20;:::i;:::-;26698:25;;26737:20;26755:1;26737:20;:::i;:::-;26732:25;;26891:1;26823:66;26819:74;26816:1;26813:81;26810:2;;;26897:18;;:::i;:::-;26810:2;26941:1;26938;26934:9;26927:16;;26688:261;;;;:::o;26955:185::-;26995:1;27012:20;27030:1;27012:20;:::i;:::-;27007:25;;27046:20;27064:1;27046:20;:::i;:::-;27041:25;;27085:1;27075:2;;27090:18;;:::i;:::-;27075:2;27132:1;27129;27125:9;27120:14;;26997:143;;;;:::o;27146:348::-;27186:7;27209:20;27227:1;27209:20;:::i;:::-;27204:25;;27243:20;27261:1;27243:20;:::i;:::-;27238:25;;27431:1;27363:66;27359:74;27356:1;27353:81;27348:1;27341:9;27334:17;27330:105;27327:2;;;27438:18;;:::i;:::-;27327:2;27486:1;27483;27479:9;27468:20;;27194:300;;;;:::o;27500:191::-;27540:4;27560:20;27578:1;27560:20;:::i;:::-;27555:25;;27594:20;27612:1;27594:20;:::i;:::-;27589:25;;27633:1;27630;27627:8;27624:2;;;27638:18;;:::i;:::-;27624:2;27683:1;27680;27676:9;27668:17;;27545:146;;;;:::o;27697:96::-;27734:7;27763:24;27781:5;27763:24;:::i;:::-;27752:35;;27742:51;;;:::o;27799:104::-;27844:7;27873:24;27891:5;27873:24;:::i;:::-;27862:35;;27852:51;;;:::o;27909:90::-;27943:7;27986:5;27979:13;27972:21;27961:32;;27951:48;;;:::o;28005:126::-;28042:7;28082:42;28075:5;28071:54;28060:65;;28050:81;;;:::o;28137:77::-;28174:7;28203:5;28192:16;;28182:32;;;:::o;28220:86::-;28255:7;28295:4;28288:5;28284:16;28273:27;;28263:43;;;:::o;28312:180::-;28389:9;28422:64;28480:5;28422:64;:::i;:::-;28409:77;;28399:93;;;:::o;28498:140::-;28575:9;28608:24;28626:5;28608:24;:::i;:::-;28595:37;;28585:53;;;:::o;28644:121::-;28702:9;28735:24;28753:5;28735:24;:::i;:::-;28722:37;;28712:53;;;:::o;28771:307::-;28839:1;28849:113;28863:6;28860:1;28857:13;28849:113;;;28948:1;28943:3;28939:11;28933:18;28929:1;28924:3;28920:11;28913:39;28885:2;28882:1;28878:10;28873:15;;28849:113;;;28980:6;28977:1;28974:13;28971:2;;;29060:1;29051:6;29046:3;29042:16;29035:27;28971:2;28820:258;;;;:::o;29084:320::-;29128:6;29165:1;29159:4;29155:12;29145:22;;29212:1;29206:4;29202:12;29233:18;29223:2;;29289:4;29281:6;29277:17;29267:27;;29223:2;29351;29343:6;29340:14;29320:18;29317:38;29314:2;;;29370:18;;:::i;:::-;29314:2;29135:269;;;;:::o;29410:233::-;29449:3;29472:24;29490:5;29472:24;:::i;:::-;29463:33;;29518:66;29511:5;29508:77;29505:2;;;29588:18;;:::i;:::-;29505:2;29635:1;29628:5;29624:13;29617:20;;29453:190;;;:::o;29649:180::-;29697:77;29694:1;29687:88;29794:4;29791:1;29784:15;29818:4;29815:1;29808:15;29835:180;29883:77;29880:1;29873:88;29980:4;29977:1;29970:15;30004:4;30001:1;29994:15;30021:180;30069:77;30066:1;30059:88;30166:4;30163:1;30156:15;30190:4;30187:1;30180:15;30207:102;30248:6;30299:2;30295:7;30290:2;30283:5;30279:14;30275:28;30265:38;;30255:54;;;:::o;30315:178::-;30455:30;30451:1;30443:6;30439:14;30432:54;30421:72;:::o;30499:222::-;30639:34;30635:1;30627:6;30623:14;30616:58;30708:5;30703:2;30695:6;30691:15;30684:30;30605:116;:::o;30727:177::-;30867:29;30863:1;30855:6;30851:14;30844:53;30833:71;:::o;30910:225::-;31050:34;31046:1;31038:6;31034:14;31027:58;31119:8;31114:2;31106:6;31102:15;31095:33;31016:119;:::o;31141:221::-;31281:34;31277:1;31269:6;31265:14;31258:58;31350:4;31345:2;31337:6;31333:15;31326:29;31247:115;:::o;31368:177::-;31508:29;31504:1;31496:6;31492:14;31485:53;31474:71;:::o;31551:224::-;31691:34;31687:1;31679:6;31675:14;31668:58;31760:7;31755:2;31747:6;31743:15;31736:32;31657:118;:::o;31781:227::-;31921:34;31917:1;31909:6;31905:14;31898:58;31990:10;31985:2;31977:6;31973:15;31966:35;31887:121;:::o;32014:220::-;32154:34;32150:1;32142:6;32138:14;32131:58;32223:3;32218:2;32210:6;32206:15;32199:28;32120:114;:::o;32240:172::-;32380:24;32376:1;32368:6;32364:14;32357:48;32346:66;:::o;32418:182::-;32558:34;32554:1;32546:6;32542:14;32535:58;32524:76;:::o;32606:179::-;32746:31;32742:1;32734:6;32730:14;32723:55;32712:73;:::o;32791:224::-;32931:34;32927:1;32919:6;32915:14;32908:58;33000:7;32995:2;32987:6;32983:15;32976:32;32897:118;:::o;33021:114::-;33127:8;:::o;33141:223::-;33281:34;33277:1;33269:6;33265:14;33258:58;33350:6;33345:2;33337:6;33333:15;33326:31;33247:117;:::o;33370:122::-;33443:24;33461:5;33443:24;:::i;:::-;33436:5;33433:35;33423:2;;33482:1;33479;33472:12;33423:2;33413:79;:::o;33498:116::-;33568:21;33583:5;33568:21;:::i;:::-;33561:5;33558:32;33548:2;;33604:1;33601;33594:12;33548:2;33538:76;:::o;33620:122::-;33693:24;33711:5;33693:24;:::i;:::-;33686:5;33683:35;33673:2;;33732:1;33729;33722:12;33673:2;33663:79;:::o

Swarm Source

ipfs://a0b2eb930e7c7a2871a51b8fe076c6f47ab6459bf20b9f60b429981d907f146a

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.