ETH Price: $2,640.96 (-0.02%)

Contract

0xFF00FF60c56A23E49E4Ec89EF62A78BF00ab792b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer209995282024-10-19 12:10:472 hrs ago1729339847IN
0xFF00FF60...F00ab792b
0 ETH0.000929089.33680505
Transfer209995192024-10-19 12:08:592 hrs ago1729339739IN
0xFF00FF60...F00ab792b
0 ETH0.000934169.38785074
Set Max Tx Amoun...209995152024-10-19 12:08:112 hrs ago1729339691IN
0xFF00FF60...F00ab792b
0 ETH0.000275729.50732134
Set Wallet Limit209995112024-10-19 12:07:232 hrs ago1729339643IN
0xFF00FF60...F00ab792b
0 ETH0.00027949.63434007
Transfer209994422024-10-19 11:53:352 hrs ago1729338815IN
0xFF00FF60...F00ab792b
0 ETH0.000919719.24264902
Approve209924462024-10-18 12:27:4725 hrs ago1729254467IN
0xFF00FF60...F00ab792b
0 ETH0.0015236232.21186772
Approve209924452024-10-18 12:27:3525 hrs ago1729254455IN
0xFF00FF60...F00ab792b
0 ETH0.001668935.28346007
Approve209924452024-10-18 12:27:3525 hrs ago1729254455IN
0xFF00FF60...F00ab792b
0 ETH0.001668935.28346007
Approve209924452024-10-18 12:27:3525 hrs ago1729254455IN
0xFF00FF60...F00ab792b
0 ETH0.001668935.28346007
Approve209924442024-10-18 12:27:2325 hrs ago1729254443IN
0xFF00FF60...F00ab792b
0 ETH0.0015257132.25614911
Approve209924442024-10-18 12:27:2325 hrs ago1729254443IN
0xFF00FF60...F00ab792b
0 ETH0.0015257132.25614911
Approve209924442024-10-18 12:27:2325 hrs ago1729254443IN
0xFF00FF60...F00ab792b
0 ETH0.0015257132.25614911
Approve209924442024-10-18 12:27:2325 hrs ago1729254443IN
0xFF00FF60...F00ab792b
0 ETH0.0015257132.25614911
Approve209924442024-10-18 12:27:2325 hrs ago1729254443IN
0xFF00FF60...F00ab792b
0 ETH0.0015257132.25614911
Approve209924382024-10-18 12:26:1125 hrs ago1729254371IN
0xFF00FF60...F00ab792b
0 ETH0.0014868331.61065995
Set Trading Enab...209924332024-10-18 12:25:1125 hrs ago1729254311IN
0xFF00FF60...F00ab792b
0 ETH0.0014387431.24107202

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
209707002024-10-15 11:34:474 days ago1728992087  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Fuchsia

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-15
*/

/** 

  █████▒█    ██  ▄████▄   ██░ ██   ██████  ██▓ ▄▄▄      
▓██   ▒ ██  ▓██▒▒██▀ ▀█  ▓██░ ██▒▒██    ▒ ▓██▒▒████▄    
▒████ ░▓██  ▒██░▒▓█    ▄ ▒██▀▀██░░ ▓██▄   ▒██▒▒██  ▀█▄  
░▓█▒  ░▓▓█  ░██░▒▓▓▄ ▄██▒░▓█ ░██   ▒   ██▒░██░░██▄▄▄▄██ 
░▒█░   ▒▒█████▓ ▒ ▓███▀ ░░▓█▒░██▓▒██████▒▒░██░ ▓█   ▓██▒
 ▒ ░   ░▒▓▒ ▒ ▒ ░ ░▒ ▒  ░ ▒ ░░▒░▒▒ ▒▓▒ ▒ ░░▓   ▒▒   ▓▒█░
 ░     ░░▒░ ░ ░   ░  ▒    ▒ ░▒░ ░░ ░▒  ░ ░ ▒ ░  ▒   ▒▒ ░
 ░ ░    ░░░ ░ ░ ░         ░  ░░ ░░  ░  ░   ▒ ░  ░   ▒   
          ░     ░ ░       ░  ░  ░      ░   ░        ░  ░
                ░                                       

*/

// 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 = 0x6B8b7564B0b952bC052A9a2aa8Aaa12A99023Bc2;
        _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 Fuchsia is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Fuchsia";
    string private _symbol = "FUCH";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x6B8b7564B0b952bC052A9a2aa8Aaa12A99023Bc2);
    address payable public DeveloperWallet = payable(0x6B8b7564B0b952bC052A9a2aa8Aaa12A99023Bc2);
    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 = 0;
    uint256 public _buyMarketingFee = 15;
    uint256 public _buyDeveloperFee = 0;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 20;
    uint256 public _sellDeveloperFee = 0;

    uint256 public feeUnits = 100;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 777000777 * 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[DeveloperWallet] = _totalSupply;
        emit Transfer(address(0), DeveloperWallet, _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"}]

60c06040526040518060400160405280600781526020017f4675636873696100000000000000000000000000000000000000000000000000815250600190816200004a9190620012a1565b506040518060400160405280600481526020017f465543480000000000000000000000000000000000000000000000000000000081525060029081620000919190620012a1565b506012600360006101000a81548160ff021916908360ff160217905550736b8b7564b0b952bc052a9a2aa8aaa12a99023bc2600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736b8b7564b0b952bc052a9a2aa8aaa12a99023bc2600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506000600d55600f600e556000600f556000601055601460115560006012556064601355600360009054906101000a900460ff16600a62000202919062001518565b632e50174962000213919062001569565b6016556200024d606462000239600160165462000e5e60201b6200327a1790919060201c565b62000ee160201b620032f41790919060201c565b60175562000287606462000273600260165462000e5e60201b6200327a1790919060201c565b62000ee160201b620032f41790919060201c565b601855620002c16064620002ad600260165462000e5e60201b6200327a1790919060201c565b62000ee160201b620032f41790919060201c565b6019556001601b60156101000a81548160ff0219169083151502179055506000601b60166101000a81548160ff0219169083151502179055506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff0219169083151502179055503480156200033d57600080fd5b506000736b8b7564b0b952bc052a9a2aa8aaa12a99023bc29050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000458573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047e91906200161e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050c91906200161e565b6040518363ffffffff1660e01b81526004016200052b92919062001661565b6020604051808303816000875af11580156200054b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057191906200161e565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000620006ad62000f3360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200086062000f3360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600062000a8d62000f3360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c63600f5462000c4f600e54600d5462000f5c60201b6200333e1790919060201c565b62000f5c60201b6200333e1790919060201c565b60148190555062000ca260125462000c8e60115460105462000f5c60201b6200333e1790919060201c565b62000f5c60201b6200333e1790919060201c565b6015819055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165460066000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405162000e4f91906200169f565b60405180910390a3506200191b565b600080830362000e72576000905062000edb565b6000828462000e82919062001569565b905082848262000e939190620016eb565b1462000ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ecd90620017aa565b60405180910390fd5b809150505b92915050565b600062000f2b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fbf60201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f6d9190620017cc565b90508381101562000fb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fac9062001857565b60405180910390fd5b8091505092915050565b6000808311829062001009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010009190620018f7565b60405180910390fd5b50600083856200101a9190620016eb565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010a957607f821691505b602082108103620010bf57620010be62001061565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620011297fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620010ea565b620011358683620010ea565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620011826200117c62001176846200114d565b62001157565b6200114d565b9050919050565b6000819050919050565b6200119e8362001161565b620011b6620011ad8262001189565b848454620010f7565b825550505050565b600090565b620011cd620011be565b620011da81848462001193565b505050565b5b818110156200120257620011f6600082620011c3565b600181019050620011e0565b5050565b601f82111562001251576200121b81620010c5565b6200122684620010da565b8101602085101562001236578190505b6200124e6200124585620010da565b830182620011df565b50505b505050565b600082821c905092915050565b6000620012766000198460080262001256565b1980831691505092915050565b600062001291838362001263565b9150826002028217905092915050565b620012ac8262001027565b67ffffffffffffffff811115620012c857620012c762001032565b5b620012d4825462001090565b620012e182828562001206565b600060209050601f83116001811462001319576000841562001304578287015190505b62001310858262001283565b86555062001380565b601f1984166200132986620010c5565b60005b8281101562001353578489015182556001820191506020850194506020810190506200132c565b868310156200137357848901516200136f601f89168262001263565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200141657808604811115620013ee57620013ed62001388565b5b6001851615620013fe5780820291505b80810290506200140e85620013b7565b9450620013ce565b94509492505050565b60008262001431576001905062001504565b8162001441576000905062001504565b81600181146200145a576002811462001465576200149b565b600191505062001504565b60ff8411156200147a576200147962001388565b5b8360020a91508482111562001494576200149362001388565b5b5062001504565b5060208310610133831016604e8410600b8410161715620014d55782820a905083811115620014cf57620014ce62001388565b5b62001504565b620014e48484846001620013c4565b92509050818404811115620014fe57620014fd62001388565b5b81810290505b9392505050565b600060ff82169050919050565b600062001525826200114d565b915062001532836200150b565b9250620015617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200141f565b905092915050565b600062001576826200114d565b915062001583836200114d565b925082820262001593816200114d565b91508282048414831517620015ad57620015ac62001388565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620015e682620015b9565b9050919050565b620015f881620015d9565b81146200160457600080fd5b50565b6000815190506200161881620015ed565b92915050565b600060208284031215620016375762001636620015b4565b5b6000620016478482850162001607565b91505092915050565b6200165b81620015d9565b82525050565b600060408201905062001678600083018562001650565b62001687602083018462001650565b9392505050565b62001699816200114d565b82525050565b6000602082019050620016b660008301846200168e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620016f8826200114d565b915062001705836200114d565b925082620017185762001717620016bc565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006200179260218362001723565b91506200179f8262001734565b604082019050919050565b60006020820190508181036000830152620017c58162001783565b9050919050565b6000620017d9826200114d565b9150620017e6836200114d565b925082820190508082111562001801576200180062001388565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200183f601b8362001723565b91506200184c8262001807565b602082019050919050565b60006020820190508181036000830152620018728162001830565b9050919050565b60005b83811015620018995780820151818401526020810190506200187c565b60008484015250505050565b6000601f19601f8301169050919050565b6000620018c38262001027565b620018cf818562001723565b9350620018e181856020860162001879565b620018ec81620018a5565b840191505092915050565b60006020820190508181036000830152620019138184620018b6565b905092915050565b60805160a051615a4e6200194f600039600081816110e2015261153501526000818161150901526115610152615a4e6000f3fe6080604052600436106103c75760003560e01c806388790a68116101f2578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e73578063f872858a14610e9c578063f8f6329014610ec7578063fb4b8e6c14610ef2576103ce565b8063f1d5f51714610dcd578063f2fde38b14610df6578063f455444614610e1f578063f680f79914610e48576103ce565b8063ec28438a116100dc578063ec28438a14610d27578063ee828db314610d50578063ef422a1814610d79578063f0cd1dac14610da2576103ce565b8063da00097d14610c7d578063dc44b6a014610ca8578063dd62ed3e14610cd3578063e6b2603b14610d10576103ce565b8063c2e5ec0411610185578063c860795211610154578063c860795214610bc1578063c867d60b14610bec578063c9c9afc514610c29578063d2d7ad8314610c52576103ce565b8063c2e5ec0414610b19578063c49b9a8014610b42578063c5d2418914610b6b578063c816841b14610b96576103ce565b806398e944c8116101c157806398e944c814610a4b578063a457c2d714610a76578063a5d69d1f14610ab3578063a9059cbb14610adc576103ce565b806388790a681461098d5780638b42507f146109b85780638da5cb5b146109f557806395d89b4114610a20576103ce565b80633ecad271116102e257806370a0823111610275578063807c2d9c11610244578063807c2d9c146108e357806382eefb431461090e578063844d591c146109395780638526148514610962576103ce565b806370a0823114610839578063715018a61461087657806375f0a8741461088d5780637d1db4a5146108b8576103ce565b80635194f9bf116102b15780635194f9bf1461076b5780635342acb4146107965780635881f3ef146107d35780636724348214610810576103ce565b80633ecad271146106af5780634a74bb02146106ec5780634ada218b146107175780634cb80fd514610742576103ce565b806323555d571161035a5780632b112e49116103295780632b112e49146105f3578063313ce5671461061e57806339509351146106495780633b97084a14610686576103ce565b806323555d571461053757806323b872dd146105625780632563ae831461059f57806327c8f835146105c8576103ce565b80631694505e116103965780631694505e1461048f57806318160ddd146104ba5780631870517a146104e55780632198cf6c1461050e576103ce565b806306fdde03146103d357806308733214146103fe5780630930907b14610427578063095ea7b314610452576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610f1b565b6040516103f59190614780565b60405180910390f35b34801561040a57600080fd5b50610425600480360381019061042091906147e2565b610fad565b005b34801561043357600080fd5b5061043c6110e0565b6040516104499190614876565b60405180910390f35b34801561045e57600080fd5b50610479600480360381019061047491906148bd565b611104565b6040516104869190614918565b60405180910390f35b34801561049b57600080fd5b506104a4611122565b6040516104b19190614992565b60405180910390f35b3480156104c657600080fd5b506104cf611148565b6040516104dc91906149bc565b60405180910390f35b3480156104f157600080fd5b5061050c600480360381019061050791906147e2565b611152565b005b34801561051a57600080fd5b5061053560048036038101906105309190614a03565b611285565b005b34801561054357600080fd5b5061054c611375565b60405161055991906149bc565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190614a43565b61137b565b6040516105969190614918565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190614a96565b611455565b005b3480156105d457600080fd5b506105dd611507565b6040516105ea9190614876565b60405180910390f35b3480156105ff57600080fd5b5061060861152b565b60405161061591906149bc565b60405180910390f35b34801561062a57600080fd5b506106336115a9565b6040516106409190614adf565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b91906148bd565b6115c0565b60405161067d9190614918565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190614afa565b611673565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614b27565b611712565b6040516106e39190614918565b60405180910390f35b3480156106f857600080fd5b50610701611732565b60405161070e9190614918565b60405180910390f35b34801561072357600080fd5b5061072c611745565b6040516107399190614918565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614b27565b611758565b005b34801561077757600080fd5b50610780611831565b60405161078d91906149bc565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b89190614b27565b611837565b6040516107ca9190614918565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190614b27565b611857565b6040516108079190614876565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614c0f565b611ce0565b005b34801561084557600080fd5b50610860600480360381019061085b9190614b27565b6120bb565b60405161086d91906149bc565b60405180910390f35b34801561088257600080fd5b5061088b612104565b005b34801561089957600080fd5b506108a2612259565b6040516108af9190614cb1565b60405180910390f35b3480156108c457600080fd5b506108cd61227f565b6040516108da91906149bc565b60405180910390f35b3480156108ef57600080fd5b506108f8612285565b60405161090591906149bc565b60405180910390f35b34801561091a57600080fd5b5061092361228b565b60405161093091906149bc565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614a03565b612291565b005b34801561096e57600080fd5b50610977612381565b6040516109849190614918565b60405180910390f35b34801561099957600080fd5b506109a2612394565b6040516109af91906149bc565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190614b27565b61239a565b6040516109ec9190614918565b60405180910390f35b348015610a0157600080fd5b50610a0a6123ba565b604051610a179190614876565b60405180910390f35b348015610a2c57600080fd5b50610a356123e3565b604051610a429190614780565b60405180910390f35b348015610a5757600080fd5b50610a60612475565b604051610a6d9190614876565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a9891906148bd565b61249b565b604051610aaa9190614918565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad59190614a96565b612568565b005b348015610ae857600080fd5b50610b036004803603810190610afe91906148bd565b61261a565b604051610b109190614918565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190614a96565b612639565b005b348015610b4e57600080fd5b50610b696004803603810190610b649190614a96565b6126eb565b005b348015610b7757600080fd5b50610b806127d4565b604051610b8d91906149bc565b60405180910390f35b348015610ba257600080fd5b50610bab6127da565b604051610bb89190614876565b60405180910390f35b348015610bcd57600080fd5b50610bd6612800565b604051610be391906149bc565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e9190614b27565b612806565b604051610c209190614918565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b9190614b27565b612826565b005b348015610c5e57600080fd5b50610c676128ff565b604051610c7491906149bc565b60405180910390f35b348015610c8957600080fd5b50610c92612905565b604051610c9f9190614918565b60405180910390f35b348015610cb457600080fd5b50610cbd612918565b604051610cca91906149bc565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf59190614ccc565b61291e565b604051610d0791906149bc565b60405180910390f35b348015610d1c57600080fd5b50610d256129a5565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614afa565b612ab3565b005b348015610d5c57600080fd5b50610d776004803603810190610d729190614a96565b612b52565b005b348015610d8557600080fd5b50610da06004803603810190610d9b9190614a03565b612c04565b005b348015610dae57600080fd5b50610db7612cf4565b604051610dc491906149bc565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def9190614afa565b612cfa565b005b348015610e0257600080fd5b50610e1d6004803603810190610e189190614b27565b612d99565b005b348015610e2b57600080fd5b50610e466004803603810190610e4191906148bd565b612f5a565b005b348015610e5457600080fd5b50610e5d613072565b604051610e6a91906149bc565b60405180910390f35b348015610e7f57600080fd5b50610e9a6004803603810190610e959190614a03565b613078565b005b348015610ea857600080fd5b50610eb1613168565b604051610ebe9190614918565b60405180910390f35b348015610ed357600080fd5b50610edc61317b565b604051610ee99190614cb1565b60405180910390f35b348015610efe57600080fd5b50610f196004803603810190610f149190614b27565b6131a1565b005b606060018054610f2a90614d3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5690614d3b565b8015610fa35780601f10610f7857610100808354040283529160200191610fa3565b820191906000526020600020905b815481529060010190602001808311610f8657829003601f168201915b5050505050905090565b610fb561339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614db8565b60405180910390fd5b82601081905550816011819055508060128190555061108260125461107460115460105461333e90919063ffffffff16565b61333e90919063ffffffff16565b60158190555060196013546110979190614e36565b60155411156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290614eb3565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061111861111161339c565b84846133a4565b6001905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b61115a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90614db8565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611227600f54611219600e54600d5461333e90919063ffffffff16565b61333e90919063ffffffff16565b601481905550601960135461123c9190614e36565b6014541115611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790614f1f565b60405180910390fd5b505050565b61128d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190614db8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600061138884848461356d565b5061144a8461139561339c565b611445856040518060600160405280602881526020016159cc60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113fb61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b600190509392505050565b61145d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190614db8565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115a46115597f00000000000000000000000000000000000000000000000000000000000000006120bb565b6115966115857f00000000000000000000000000000000000000000000000000000000000000006120bb565b601654613c0290919063ffffffff16565b613c0290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116696115cd61339c565b8461166485600760006115de61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b6133a4565b6001905092915050565b61167b61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90614db8565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b600860009054906101000a900460ff1681565b61176061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490614db8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60096020528060005260406000206000915054906101000a900460ff1681565b600061186161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614db8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119629190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed9190614f54565b6040518363ffffffff1660e01b8152600401611a0a929190614f81565b602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190614f54565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bde578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af09190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7b9190614f54565b6040518363ffffffff1660e01b8152600401611b98929190614f81565b6020604051808303816000875af1158015611bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdb9190614f54565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611ce861339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614db8565b60405180910390fd5b6000339050828290508585905014611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990614ff6565b60405180910390fd5b600080600090505b84849050811015611e0f57848482818110611de857611de7615016565b5b9050602002013582611dfa9190615045565b91508080611e0790615079565b915050611dca565b5080611e1a836120bb565b1015611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061510d565b60405180910390fd5b611ead81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c0290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b257611f90858583818110611f1457611f13615016565b5b90506020020135600660008a8a86818110611f3257611f31615016565b5b9050602002016020810190611f479190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b60066000898985818110611fa757611fa6615016565b5b9050602002016020810190611fbc9190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061200d5761200c615016565b5b90506020020160208101906120229190614b27565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061208357612082615016565b5b9050602002013560405161209791906149bc565b60405180910390a380806120aa90615079565b915050611ef3565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61210c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219090614db8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60195481565b60155481565b61229961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614db8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f290614d3b565b80601f016020809104026020016040519081016040528092919081815260200182805461241e90614d3b565b801561246b5780601f106124405761010080835404028352916020019161246b565b820191906000526020600020905b81548152906001019060200180831161244e57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061255e6124a861339c565b84612559856040518060600160405280602581526020016159f460259139600760006124d261339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b6001905092915050565b61257061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490614db8565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061262e61262761339c565b848461356d565b506001905092915050565b61264161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614db8565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b6126f361339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277790614db8565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127c99190614918565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61282e61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290614db8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129ad61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190614db8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a609061515e565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b5050905080612ab057600080fd5b50565b612abb61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614db8565b60405180910390fd5b8060188190555050565b612b5a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bde90614db8565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b612c0c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9090614db8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b612d0261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8690614db8565b60405180910390fd5b8060198190555050565b612da161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2590614db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e94906151e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f6261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe690614db8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161302a929190615205565b6020604051808303816000875af1158015613049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306d9190615243565b505050565b60135481565b61308061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461310d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310490614db8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6131a961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322d90614db8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361328c57600090506132ee565b6000828461329a9190615270565b90508284826132a99190614e36565b146132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090615324565b60405180910390fd5b809150505b92915050565b600061333683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c4c565b905092915050565b600080828461334d9190615045565b905083811015613392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338990615390565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340a90615422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613479906154b4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161356091906149bc565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d490615546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361364c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613643906155d8565b60405180910390fd5b601b60149054906101000a900460ff16156136735761366c848484613caf565b9050613b97565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137175750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561372f5750601b60189054906101000a900460ff165b1561377a57601854821115613779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137709061566a565b60405180910390fd5b5b6000613785306120bb565b9050600060175482101590508080156137ab5750601b60149054906101000a900460ff16155b80156138015750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138195750601b60159054906101000a900460ff165b1561384357601b60169054906101000a900460ff16156138395760175491505b61384282613e82565b5b6138cc846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139b25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139c6576139c187878761414d565b6139c8565b845b9050601b60179054906101000a900460ff168015613a305750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9557601954613a5382613a45896120bb565b61333e90919063ffffffff16565b1115613a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8b906156fc565b60405180910390fd5b5b613ae781600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b8791906149bc565b60405180910390a3600193505050505b9392505050565b6000838311158290613be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdd9190614780565b60405180910390fd5b5060008385613bf5919061571c565b9050809150509392505050565b6000613c4483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b905092915050565b60008083118290613c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8a9190614780565b60405180910390fd5b5060008385613ca29190614e36565b9050809150509392505050565b6000613d3a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dcf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e6f91906149bc565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000613eb660155460145461333e90919063ffffffff16565b90506000613ed1601054600d5461333e90919063ffffffff16565b90506000613eec601154600e5461333e90919063ffffffff16565b90506000613f286002613f1a86613f0c878a61327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613f3f8287613c0290919063ffffffff16565b90506000479050613f4f82614374565b6000613f648247613c0290919063ffffffff16565b90506000613f8e613f7f6002896132f490919063ffffffff16565b89613c0290919063ffffffff16565b90506000613fca6002613fbc84613fae8c8861327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613ff383613fe58a8761327a90919063ffffffff16565b6132f490919063ffffffff16565b9050600061401c8261400e8588613c0290919063ffffffff16565b613c0290919063ffffffff16565b9050600082111561409157600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561408f573d6000803e3d6000fd5b505b600081111561410457600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614102573d6000803e3d6000fd5b505b6000831180156141145750600088115b156141245761412388846145f0565b5b50505050505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d5576141ce60646141c06014548661327a90919063ffffffff16565b6132f490919063ffffffff16565b9050614253565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142525761424f60646142416015548661327a90919063ffffffff16565b6132f490919063ffffffff16565b90505b5b6000811115614357576142ae81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161434e91906149bc565b60405180910390a35b61436a8184613c0290919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561439157614390615750565b5b6040519080825280602002602001820160405280156143bf5781602001602082028036833780820191505090505b50905030816000815181106143d7576143d6615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561447e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a29190614f54565b816001815181106144b6576144b5615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061451d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614581959493929190615878565b600060405180830381600087803b15801561459b57600080fd5b505af11580156145af573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145e49291906158d2565b60405180910390a15050565b61461d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016146a696959493929190615902565b60606040518083038185885af11580156146c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146e99190615978565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561472a57808201518184015260208101905061470f565b60008484015250505050565b6000601f19601f8301169050919050565b6000614752826146f0565b61475c81856146fb565b935061476c81856020860161470c565b61477581614736565b840191505092915050565b6000602082019050818103600083015261479a8184614747565b905092915050565b600080fd5b600080fd5b6000819050919050565b6147bf816147ac565b81146147ca57600080fd5b50565b6000813590506147dc816147b6565b92915050565b6000806000606084860312156147fb576147fa6147a2565b5b6000614809868287016147cd565b935050602061481a868287016147cd565b925050604061482b868287016147cd565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061486082614835565b9050919050565b61487081614855565b82525050565b600060208201905061488b6000830184614867565b92915050565b61489a81614855565b81146148a557600080fd5b50565b6000813590506148b781614891565b92915050565b600080604083850312156148d4576148d36147a2565b5b60006148e2858286016148a8565b92505060206148f3858286016147cd565b9150509250929050565b60008115159050919050565b614912816148fd565b82525050565b600060208201905061492d6000830184614909565b92915050565b6000819050919050565b600061495861495361494e84614835565b614933565b614835565b9050919050565b600061496a8261493d565b9050919050565b600061497c8261495f565b9050919050565b61498c81614971565b82525050565b60006020820190506149a76000830184614983565b92915050565b6149b6816147ac565b82525050565b60006020820190506149d160008301846149ad565b92915050565b6149e0816148fd565b81146149eb57600080fd5b50565b6000813590506149fd816149d7565b92915050565b60008060408385031215614a1a57614a196147a2565b5b6000614a28858286016148a8565b9250506020614a39858286016149ee565b9150509250929050565b600080600060608486031215614a5c57614a5b6147a2565b5b6000614a6a868287016148a8565b9350506020614a7b868287016148a8565b9250506040614a8c868287016147cd565b9150509250925092565b600060208284031215614aac57614aab6147a2565b5b6000614aba848285016149ee565b91505092915050565b600060ff82169050919050565b614ad981614ac3565b82525050565b6000602082019050614af46000830184614ad0565b92915050565b600060208284031215614b1057614b0f6147a2565b5b6000614b1e848285016147cd565b91505092915050565b600060208284031215614b3d57614b3c6147a2565b5b6000614b4b848285016148a8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614b7957614b78614b54565b5b8235905067ffffffffffffffff811115614b9657614b95614b59565b5b602083019150836020820283011115614bb257614bb1614b5e565b5b9250929050565b60008083601f840112614bcf57614bce614b54565b5b8235905067ffffffffffffffff811115614bec57614beb614b59565b5b602083019150836020820283011115614c0857614c07614b5e565b5b9250929050565b60008060008060408587031215614c2957614c286147a2565b5b600085013567ffffffffffffffff811115614c4757614c466147a7565b5b614c5387828801614b63565b9450945050602085013567ffffffffffffffff811115614c7657614c756147a7565b5b614c8287828801614bb9565b925092505092959194509250565b6000614c9b82614835565b9050919050565b614cab81614c90565b82525050565b6000602082019050614cc66000830184614ca2565b92915050565b60008060408385031215614ce357614ce26147a2565b5b6000614cf1858286016148a8565b9250506020614d02858286016148a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d5357607f821691505b602082108103614d6657614d65614d0c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614da26020836146fb565b9150614dad82614d6c565b602082019050919050565b60006020820190508181036000830152614dd181614d95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e41826147ac565b9150614e4c836147ac565b925082614e5c57614e5b614dd8565b5b828204905092915050565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b6000614e9d601d836146fb565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b6000614f09601c836146fb565b9150614f1482614ed3565b602082019050919050565b60006020820190508181036000830152614f3881614efc565b9050919050565b600081519050614f4e81614891565b92915050565b600060208284031215614f6a57614f696147a2565b5b6000614f7884828501614f3f565b91505092915050565b6000604082019050614f966000830185614867565b614fa36020830184614867565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614fe06016836146fb565b9150614feb82614faa565b602082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000615050826147ac565b915061505b836147ac565b925082820190508082111561507357615072614e07565b5b92915050565b6000615084826147ac565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150b6576150b5614e07565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b60006150f7601b836146fb565b9150615102826150c1565b602082019050919050565b60006020820190508181036000830152615126816150ea565b9050919050565b600081905092915050565b50565b600061514860008361512d565b915061515382615138565b600082019050919050565b60006151698261513b565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151cf6026836146fb565b91506151da82615173565b604082019050919050565b600060208201905081810360008301526151fe816151c2565b9050919050565b600060408201905061521a6000830185614867565b61522760208301846149ad565b9392505050565b60008151905061523d816149d7565b92915050565b600060208284031215615259576152586147a2565b5b60006152678482850161522e565b91505092915050565b600061527b826147ac565b9150615286836147ac565b9250828202615294816147ac565b915082820484148315176152ab576152aa614e07565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061530e6021836146fb565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061537a601b836146fb565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061540c6024836146fb565b9150615417826153b0565b604082019050919050565b6000602082019050818103600083015261543b816153ff565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061549e6022836146fb565b91506154a982615442565b604082019050919050565b600060208201905081810360008301526154cd81615491565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006155306025836146fb565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155c26023836146fb565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156546028836146fb565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006156e66025836146fb565b91506156f18261568a565b604082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b6000615727826147ac565b9150615732836147ac565b925082820390508181111561574a57615749614e07565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006157a461579f61579a8461577f565b614933565b6147ac565b9050919050565b6157b481615789565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157ef81614855565b82525050565b600061580183836157e6565b60208301905092915050565b6000602082019050919050565b6000615825826157ba565b61582f81856157c5565b935061583a836157d6565b8060005b8381101561586b57815161585288826157f5565b975061585d8361580d565b92505060018101905061583e565b5085935050505092915050565b600060a08201905061588d60008301886149ad565b61589a60208301876157ab565b81810360408301526158ac818661581a565b90506158bb6060830185614867565b6158c860808301846149ad565b9695505050505050565b60006040820190506158e760008301856149ad565b81810360208301526158f9818461581a565b90509392505050565b600060c0820190506159176000830189614867565b61592460208301886149ad565b61593160408301876157ab565b61593e60608301866157ab565b61594b6080830185614867565b61595860a08301846149ad565b979650505050505050565b600081519050615972816147b6565b92915050565b600080600060608486031215615991576159906147a2565b5b600061599f86828701615963565b93505060206159b086828701615963565b92505060406159c186828701615963565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d75f95d65c9a09c6d5cc3ce3afc1426283f0ba925abcf8839c7307206e9fef964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103c75760003560e01c806388790a68116101f2578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e73578063f872858a14610e9c578063f8f6329014610ec7578063fb4b8e6c14610ef2576103ce565b8063f1d5f51714610dcd578063f2fde38b14610df6578063f455444614610e1f578063f680f79914610e48576103ce565b8063ec28438a116100dc578063ec28438a14610d27578063ee828db314610d50578063ef422a1814610d79578063f0cd1dac14610da2576103ce565b8063da00097d14610c7d578063dc44b6a014610ca8578063dd62ed3e14610cd3578063e6b2603b14610d10576103ce565b8063c2e5ec0411610185578063c860795211610154578063c860795214610bc1578063c867d60b14610bec578063c9c9afc514610c29578063d2d7ad8314610c52576103ce565b8063c2e5ec0414610b19578063c49b9a8014610b42578063c5d2418914610b6b578063c816841b14610b96576103ce565b806398e944c8116101c157806398e944c814610a4b578063a457c2d714610a76578063a5d69d1f14610ab3578063a9059cbb14610adc576103ce565b806388790a681461098d5780638b42507f146109b85780638da5cb5b146109f557806395d89b4114610a20576103ce565b80633ecad271116102e257806370a0823111610275578063807c2d9c11610244578063807c2d9c146108e357806382eefb431461090e578063844d591c146109395780638526148514610962576103ce565b806370a0823114610839578063715018a61461087657806375f0a8741461088d5780637d1db4a5146108b8576103ce565b80635194f9bf116102b15780635194f9bf1461076b5780635342acb4146107965780635881f3ef146107d35780636724348214610810576103ce565b80633ecad271146106af5780634a74bb02146106ec5780634ada218b146107175780634cb80fd514610742576103ce565b806323555d571161035a5780632b112e49116103295780632b112e49146105f3578063313ce5671461061e57806339509351146106495780633b97084a14610686576103ce565b806323555d571461053757806323b872dd146105625780632563ae831461059f57806327c8f835146105c8576103ce565b80631694505e116103965780631694505e1461048f57806318160ddd146104ba5780631870517a146104e55780632198cf6c1461050e576103ce565b806306fdde03146103d357806308733214146103fe5780630930907b14610427578063095ea7b314610452576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610f1b565b6040516103f59190614780565b60405180910390f35b34801561040a57600080fd5b50610425600480360381019061042091906147e2565b610fad565b005b34801561043357600080fd5b5061043c6110e0565b6040516104499190614876565b60405180910390f35b34801561045e57600080fd5b50610479600480360381019061047491906148bd565b611104565b6040516104869190614918565b60405180910390f35b34801561049b57600080fd5b506104a4611122565b6040516104b19190614992565b60405180910390f35b3480156104c657600080fd5b506104cf611148565b6040516104dc91906149bc565b60405180910390f35b3480156104f157600080fd5b5061050c600480360381019061050791906147e2565b611152565b005b34801561051a57600080fd5b5061053560048036038101906105309190614a03565b611285565b005b34801561054357600080fd5b5061054c611375565b60405161055991906149bc565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190614a43565b61137b565b6040516105969190614918565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190614a96565b611455565b005b3480156105d457600080fd5b506105dd611507565b6040516105ea9190614876565b60405180910390f35b3480156105ff57600080fd5b5061060861152b565b60405161061591906149bc565b60405180910390f35b34801561062a57600080fd5b506106336115a9565b6040516106409190614adf565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b91906148bd565b6115c0565b60405161067d9190614918565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190614afa565b611673565b005b3480156106bb57600080fd5b506106d660048036038101906106d19190614b27565b611712565b6040516106e39190614918565b60405180910390f35b3480156106f857600080fd5b50610701611732565b60405161070e9190614918565b60405180910390f35b34801561072357600080fd5b5061072c611745565b6040516107399190614918565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614b27565b611758565b005b34801561077757600080fd5b50610780611831565b60405161078d91906149bc565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b89190614b27565b611837565b6040516107ca9190614918565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190614b27565b611857565b6040516108079190614876565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614c0f565b611ce0565b005b34801561084557600080fd5b50610860600480360381019061085b9190614b27565b6120bb565b60405161086d91906149bc565b60405180910390f35b34801561088257600080fd5b5061088b612104565b005b34801561089957600080fd5b506108a2612259565b6040516108af9190614cb1565b60405180910390f35b3480156108c457600080fd5b506108cd61227f565b6040516108da91906149bc565b60405180910390f35b3480156108ef57600080fd5b506108f8612285565b60405161090591906149bc565b60405180910390f35b34801561091a57600080fd5b5061092361228b565b60405161093091906149bc565b60405180910390f35b34801561094557600080fd5b50610960600480360381019061095b9190614a03565b612291565b005b34801561096e57600080fd5b50610977612381565b6040516109849190614918565b60405180910390f35b34801561099957600080fd5b506109a2612394565b6040516109af91906149bc565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190614b27565b61239a565b6040516109ec9190614918565b60405180910390f35b348015610a0157600080fd5b50610a0a6123ba565b604051610a179190614876565b60405180910390f35b348015610a2c57600080fd5b50610a356123e3565b604051610a429190614780565b60405180910390f35b348015610a5757600080fd5b50610a60612475565b604051610a6d9190614876565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a9891906148bd565b61249b565b604051610aaa9190614918565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad59190614a96565b612568565b005b348015610ae857600080fd5b50610b036004803603810190610afe91906148bd565b61261a565b604051610b109190614918565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190614a96565b612639565b005b348015610b4e57600080fd5b50610b696004803603810190610b649190614a96565b6126eb565b005b348015610b7757600080fd5b50610b806127d4565b604051610b8d91906149bc565b60405180910390f35b348015610ba257600080fd5b50610bab6127da565b604051610bb89190614876565b60405180910390f35b348015610bcd57600080fd5b50610bd6612800565b604051610be391906149bc565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e9190614b27565b612806565b604051610c209190614918565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b9190614b27565b612826565b005b348015610c5e57600080fd5b50610c676128ff565b604051610c7491906149bc565b60405180910390f35b348015610c8957600080fd5b50610c92612905565b604051610c9f9190614918565b60405180910390f35b348015610cb457600080fd5b50610cbd612918565b604051610cca91906149bc565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf59190614ccc565b61291e565b604051610d0791906149bc565b60405180910390f35b348015610d1c57600080fd5b50610d256129a5565b005b348015610d3357600080fd5b50610d4e6004803603810190610d499190614afa565b612ab3565b005b348015610d5c57600080fd5b50610d776004803603810190610d729190614a96565b612b52565b005b348015610d8557600080fd5b50610da06004803603810190610d9b9190614a03565b612c04565b005b348015610dae57600080fd5b50610db7612cf4565b604051610dc491906149bc565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def9190614afa565b612cfa565b005b348015610e0257600080fd5b50610e1d6004803603810190610e189190614b27565b612d99565b005b348015610e2b57600080fd5b50610e466004803603810190610e4191906148bd565b612f5a565b005b348015610e5457600080fd5b50610e5d613072565b604051610e6a91906149bc565b60405180910390f35b348015610e7f57600080fd5b50610e9a6004803603810190610e959190614a03565b613078565b005b348015610ea857600080fd5b50610eb1613168565b604051610ebe9190614918565b60405180910390f35b348015610ed357600080fd5b50610edc61317b565b604051610ee99190614cb1565b60405180910390f35b348015610efe57600080fd5b50610f196004803603810190610f149190614b27565b6131a1565b005b606060018054610f2a90614d3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5690614d3b565b8015610fa35780601f10610f7857610100808354040283529160200191610fa3565b820191906000526020600020905b815481529060010190602001808311610f8657829003601f168201915b5050505050905090565b610fb561339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614db8565b60405180910390fd5b82601081905550816011819055508060128190555061108260125461107460115460105461333e90919063ffffffff16565b61333e90919063ffffffff16565b60158190555060196013546110979190614e36565b60155411156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290614eb3565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061111861111161339c565b84846133a4565b6001905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b61115a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90614db8565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611227600f54611219600e54600d5461333e90919063ffffffff16565b61333e90919063ffffffff16565b601481905550601960135461123c9190614e36565b6014541115611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790614f1f565b60405180910390fd5b505050565b61128d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190614db8565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600061138884848461356d565b5061144a8461139561339c565b611445856040518060600160405280602881526020016159cc60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113fb61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b600190509392505050565b61145d61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190614db8565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115a46115597f00000000000000000000000000000000000000000000000000000000000000006120bb565b6115966115857f000000000000000000000000000000000000000000000000000000000000dead6120bb565b601654613c0290919063ffffffff16565b613c0290919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116696115cd61339c565b8461166485600760006115de61339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b6133a4565b6001905092915050565b61167b61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90614db8565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b600860009054906101000a900460ff1681565b61176061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490614db8565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60096020528060005260406000206000915054906101000a900460ff1681565b600061186161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614db8565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119629190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed9190614f54565b6040518363ffffffff1660e01b8152600401611a0a929190614f81565b602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190614f54565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bde578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af09190614f54565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7b9190614f54565b6040518363ffffffff1660e01b8152600401611b98929190614f81565b6020604051808303816000875af1158015611bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdb9190614f54565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611ce861339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614db8565b60405180910390fd5b6000339050828290508585905014611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990614ff6565b60405180910390fd5b600080600090505b84849050811015611e0f57848482818110611de857611de7615016565b5b9050602002013582611dfa9190615045565b91508080611e0790615079565b915050611dca565b5080611e1a836120bb565b1015611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061510d565b60405180910390fd5b611ead81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c0290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b257611f90858583818110611f1457611f13615016565b5b90506020020135600660008a8a86818110611f3257611f31615016565b5b9050602002016020810190611f479190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b60066000898985818110611fa757611fa6615016565b5b9050602002016020810190611fbc9190614b27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086868281811061200d5761200c615016565b5b90506020020160208101906120229190614b27565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061208357612082615016565b5b9050602002013560405161209791906149bc565b60405180910390a380806120aa90615079565b915050611ef3565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61210c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219090614db8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60195481565b60155481565b61229961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614db8565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b60105481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f290614d3b565b80601f016020809104026020016040519081016040528092919081815260200182805461241e90614d3b565b801561246b5780601f106124405761010080835404028352916020019161246b565b820191906000526020600020905b81548152906001019060200180831161244e57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061255e6124a861339c565b84612559856040518060600160405280602581526020016159f460259139600760006124d261339c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b6133a4565b6001905092915050565b61257061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490614db8565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061262e61262761339c565b848461356d565b506001905092915050565b61264161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614db8565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555050565b6126f361339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277790614db8565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127c99190614918565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61282e61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290614db8565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60175481565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129ad61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190614db8565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a609061515e565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b5050905080612ab057600080fd5b50565b612abb61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90614db8565b60405180910390fd5b8060188190555050565b612b5a61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bde90614db8565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b612c0c61339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9090614db8565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b612d0261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8690614db8565b60405180910390fd5b8060198190555050565b612da161339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2590614db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e94906151e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f6261339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe690614db8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161302a929190615205565b6020604051808303816000875af1158015613049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306d9190615243565b505050565b60135481565b61308061339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461310d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310490614db8565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6131a961339c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322d90614db8565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361328c57600090506132ee565b6000828461329a9190615270565b90508284826132a99190614e36565b146132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090615324565b60405180910390fd5b809150505b92915050565b600061333683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c4c565b905092915050565b600080828461334d9190615045565b905083811015613392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338990615390565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340a90615422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613479906154b4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161356091906149bc565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d490615546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361364c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613643906155d8565b60405180910390fd5b601b60149054906101000a900460ff16156136735761366c848484613caf565b9050613b97565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137175750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561372f5750601b60189054906101000a900460ff165b1561377a57601854821115613779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137709061566a565b60405180910390fd5b5b6000613785306120bb565b9050600060175482101590508080156137ab5750601b60149054906101000a900460ff16155b80156138015750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138195750601b60159054906101000a900460ff165b1561384357601b60169054906101000a900460ff16156138395760175491505b61384282613e82565b5b6138cc846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139b25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139c6576139c187878761414d565b6139c8565b845b9050601b60179054906101000a900460ff168015613a305750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9557601954613a5382613a45896120bb565b61333e90919063ffffffff16565b1115613a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8b906156fc565b60405180910390fd5b5b613ae781600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b8791906149bc565b60405180910390a3600193505050505b9392505050565b6000838311158290613be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdd9190614780565b60405180910390fd5b5060008385613bf5919061571c565b9050809150509392505050565b6000613c4483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b9e565b905092915050565b60008083118290613c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8a9190614780565b60405180910390fd5b5060008385613ca29190614e36565b9050809150509392505050565b6000613d3a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dcf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e6f91906149bc565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000613eb660155460145461333e90919063ffffffff16565b90506000613ed1601054600d5461333e90919063ffffffff16565b90506000613eec601154600e5461333e90919063ffffffff16565b90506000613f286002613f1a86613f0c878a61327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613f3f8287613c0290919063ffffffff16565b90506000479050613f4f82614374565b6000613f648247613c0290919063ffffffff16565b90506000613f8e613f7f6002896132f490919063ffffffff16565b89613c0290919063ffffffff16565b90506000613fca6002613fbc84613fae8c8861327a90919063ffffffff16565b6132f490919063ffffffff16565b6132f490919063ffffffff16565b90506000613ff383613fe58a8761327a90919063ffffffff16565b6132f490919063ffffffff16565b9050600061401c8261400e8588613c0290919063ffffffff16565b613c0290919063ffffffff16565b9050600082111561409157600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561408f573d6000803e3d6000fd5b505b600081111561410457600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614102573d6000803e3d6000fd5b505b6000831180156141145750600088115b156141245761412388846145f0565b5b50505050505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d5576141ce60646141c06014548661327a90919063ffffffff16565b6132f490919063ffffffff16565b9050614253565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142525761424f60646142416015548661327a90919063ffffffff16565b6132f490919063ffffffff16565b90505b5b6000811115614357576142ae81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333e90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161434e91906149bc565b60405180910390a35b61436a8184613c0290919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561439157614390615750565b5b6040519080825280602002602001820160405280156143bf5781602001602082028036833780820191505090505b50905030816000815181106143d7576143d6615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561447e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a29190614f54565b816001815181106144b6576144b5615016565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061451d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614581959493929190615878565b600060405180830381600087803b15801561459b57600080fd5b505af11580156145af573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145e49291906158d2565b60405180910390a15050565b61461d30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133a4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016146a696959493929190615902565b60606040518083038185885af11580156146c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146e99190615978565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561472a57808201518184015260208101905061470f565b60008484015250505050565b6000601f19601f8301169050919050565b6000614752826146f0565b61475c81856146fb565b935061476c81856020860161470c565b61477581614736565b840191505092915050565b6000602082019050818103600083015261479a8184614747565b905092915050565b600080fd5b600080fd5b6000819050919050565b6147bf816147ac565b81146147ca57600080fd5b50565b6000813590506147dc816147b6565b92915050565b6000806000606084860312156147fb576147fa6147a2565b5b6000614809868287016147cd565b935050602061481a868287016147cd565b925050604061482b868287016147cd565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061486082614835565b9050919050565b61487081614855565b82525050565b600060208201905061488b6000830184614867565b92915050565b61489a81614855565b81146148a557600080fd5b50565b6000813590506148b781614891565b92915050565b600080604083850312156148d4576148d36147a2565b5b60006148e2858286016148a8565b92505060206148f3858286016147cd565b9150509250929050565b60008115159050919050565b614912816148fd565b82525050565b600060208201905061492d6000830184614909565b92915050565b6000819050919050565b600061495861495361494e84614835565b614933565b614835565b9050919050565b600061496a8261493d565b9050919050565b600061497c8261495f565b9050919050565b61498c81614971565b82525050565b60006020820190506149a76000830184614983565b92915050565b6149b6816147ac565b82525050565b60006020820190506149d160008301846149ad565b92915050565b6149e0816148fd565b81146149eb57600080fd5b50565b6000813590506149fd816149d7565b92915050565b60008060408385031215614a1a57614a196147a2565b5b6000614a28858286016148a8565b9250506020614a39858286016149ee565b9150509250929050565b600080600060608486031215614a5c57614a5b6147a2565b5b6000614a6a868287016148a8565b9350506020614a7b868287016148a8565b9250506040614a8c868287016147cd565b9150509250925092565b600060208284031215614aac57614aab6147a2565b5b6000614aba848285016149ee565b91505092915050565b600060ff82169050919050565b614ad981614ac3565b82525050565b6000602082019050614af46000830184614ad0565b92915050565b600060208284031215614b1057614b0f6147a2565b5b6000614b1e848285016147cd565b91505092915050565b600060208284031215614b3d57614b3c6147a2565b5b6000614b4b848285016148a8565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614b7957614b78614b54565b5b8235905067ffffffffffffffff811115614b9657614b95614b59565b5b602083019150836020820283011115614bb257614bb1614b5e565b5b9250929050565b60008083601f840112614bcf57614bce614b54565b5b8235905067ffffffffffffffff811115614bec57614beb614b59565b5b602083019150836020820283011115614c0857614c07614b5e565b5b9250929050565b60008060008060408587031215614c2957614c286147a2565b5b600085013567ffffffffffffffff811115614c4757614c466147a7565b5b614c5387828801614b63565b9450945050602085013567ffffffffffffffff811115614c7657614c756147a7565b5b614c8287828801614bb9565b925092505092959194509250565b6000614c9b82614835565b9050919050565b614cab81614c90565b82525050565b6000602082019050614cc66000830184614ca2565b92915050565b60008060408385031215614ce357614ce26147a2565b5b6000614cf1858286016148a8565b9250506020614d02858286016148a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d5357607f821691505b602082108103614d6657614d65614d0c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614da26020836146fb565b9150614dad82614d6c565b602082019050919050565b60006020820190508181036000830152614dd181614d95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614e41826147ac565b9150614e4c836147ac565b925082614e5c57614e5b614dd8565b5b828204905092915050565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b6000614e9d601d836146fb565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b6000614f09601c836146fb565b9150614f1482614ed3565b602082019050919050565b60006020820190508181036000830152614f3881614efc565b9050919050565b600081519050614f4e81614891565b92915050565b600060208284031215614f6a57614f696147a2565b5b6000614f7884828501614f3f565b91505092915050565b6000604082019050614f966000830185614867565b614fa36020830184614867565b9392505050565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b6000614fe06016836146fb565b9150614feb82614faa565b602082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000615050826147ac565b915061505b836147ac565b925082820190508082111561507357615072614e07565b5b92915050565b6000615084826147ac565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150b6576150b5614e07565b5b600182019050919050565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b60006150f7601b836146fb565b9150615102826150c1565b602082019050919050565b60006020820190508181036000830152615126816150ea565b9050919050565b600081905092915050565b50565b600061514860008361512d565b915061515382615138565b600082019050919050565b60006151698261513b565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151cf6026836146fb565b91506151da82615173565b604082019050919050565b600060208201905081810360008301526151fe816151c2565b9050919050565b600060408201905061521a6000830185614867565b61522760208301846149ad565b9392505050565b60008151905061523d816149d7565b92915050565b600060208284031215615259576152586147a2565b5b60006152678482850161522e565b91505092915050565b600061527b826147ac565b9150615286836147ac565b9250828202615294816147ac565b915082820484148315176152ab576152aa614e07565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061530e6021836146fb565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061537a601b836146fb565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061540c6024836146fb565b9150615417826153b0565b604082019050919050565b6000602082019050818103600083015261543b816153ff565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061549e6022836146fb565b91506154a982615442565b604082019050919050565b600060208201905081810360008301526154cd81615491565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006155306025836146fb565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155c26023836146fb565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156546028836146fb565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006156e66025836146fb565b91506156f18261568a565b604082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b6000615727826147ac565b9150615732836147ac565b925082820390508181111561574a57615749614e07565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006157a461579f61579a8461577f565b614933565b6147ac565b9050919050565b6157b481615789565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157ef81614855565b82525050565b600061580183836157e6565b60208301905092915050565b6000602082019050919050565b6000615825826157ba565b61582f81856157c5565b935061583a836157d6565b8060005b8381101561586b57815161585288826157f5565b975061585d8361580d565b92505060018101905061583e565b5085935050505092915050565b600060a08201905061588d60008301886149ad565b61589a60208301876157ab565b81810360408301526158ac818661581a565b90506158bb6060830185614867565b6158c860808301846149ad565b9695505050505050565b60006040820190506158e760008301856149ad565b81810360208301526158f9818461581a565b90509392505050565b600060c0820190506159176000830189614867565b61592460208301886149ad565b61593160408301876157ab565b61593e60608301866157ab565b61594b6080830185614867565b61595860a08301846149ad565b979650505050505050565b600081519050615972816147b6565b92915050565b600080600060608486031215615991576159906147a2565b5b600061599f86828701615963565b93505060206159b086828701615963565b92505060406159c186828701615963565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d75f95d65c9a09c6d5cc3ce3afc1426283f0ba925abcf8839c7307206e9fef964736f6c63430008110033

Deployed Bytecode Sourcemap

12633:17062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16844:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22012:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13175:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18010:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14394:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17121:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21609:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18943:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13795:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22700:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19320:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13087:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20421:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17030:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17507:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19551:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13484:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14511:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13392:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19683:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13930:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13427:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20853:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28987:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17229:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4310:230;;;;;;;;;;;;;:::i;:::-;;12844:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14248:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14320:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14052:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18524:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14654:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13843:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13653:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4085:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16935:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13042:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17733:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20284:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22525:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16730:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20105:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13752:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14442:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13886:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13594:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19823:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14159:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14558:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13710:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17356:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25162:154;;;;;;;;;;;;;:::i;:::-;;19201:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19086:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18661:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14013:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19441:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4548:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25015:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13975:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18804:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14612:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12943:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19965:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16844:83;16881:13;16914:5;16907:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16844:83;:::o;22012:405::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22134:10:::1;22114:17;:30;;;;22175:10;22155:17;:30;;;;22216:10;22196:17;:30;;;;22258:63;22303:17;;22258:40;22280:17;;22258;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;22237:18;:84;;;;22372:2;22363:8;;:11;;;;:::i;:::-;22340:18;;:35;;22332:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22012:405:::0;;;:::o;13175:81::-;;;:::o;18010:161::-;18085:4;18102:39;18111:12;:10;:12::i;:::-;18125:7;18134:6;18102:8;:39::i;:::-;18159:4;18152:11;;18010:161;;;;:::o;14394:41::-;;;;;;;;;;;;;:::o;17121:100::-;17174:7;17201:12;;17194:19;;17121:100;:::o;21609:395::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21729:10:::1;21710:16;:29;;;;21769:10;21750:16;:29;;;;21809:10;21790:16;:29;;;;21850:60;21893:16;;21850:38;21871:16;;21850;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;21830:17;:80;;;;21960:2;21951:8;;:11;;;;:::i;:::-;21929:17;;:34;;21921:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21609:395:::0;;;:::o;18943:135::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19064:6:::1;19034:19;:27;19054:6;19034:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18943:135:::0;;:::o;13795:35::-;;;;:::o;22700:313::-;22798:4;22815:36;22825:6;22833:9;22844:6;22815:9;:36::i;:::-;;22862:121;22871:6;22879:12;:10;:12::i;:::-;22893:89;22931:6;22893:89;;;;;;;;;;;;;;;;;:11;:19;22905:6;22893:19;;;;;;;;;;;;;;;:33;22913:12;:10;:12::i;:::-;22893:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22862:8;:121::i;:::-;23001:4;22994:11;;22700:313;;;;;:::o;19320:113::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19417:8:::1;19398:16;;:27;;;;;;;;;;;;;;;;;;19320:113:::0;:::o;13087:81::-;;;:::o;20421:156::-;20474:7;20501:68;20546:22;20556:11;20546:9;:22::i;:::-;20501:40;20518:22;20528:11;20518:9;:22::i;:::-;20501:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;20494:75;;20421:156;:::o;17030:83::-;17071:5;17096:9;;;;;;;;;;;17089:16;;17030:83;:::o;17507:218::-;17595:4;17612:83;17621:12;:10;:12::i;:::-;17635:7;17644:50;17683:10;17644:11;:25;17656:12;:10;:12::i;:::-;17644:25;;;;;;;;;;;;;;;:34;17670:7;17644:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17612:8;:83::i;:::-;17713:4;17706:11;;17507:218;;;;:::o;19551:124::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19659:8:::1;19633:23;:34;;;;19551:124:::0;:::o;13484:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;14511:40::-;;;;;;;;;;;;;:::o;13392:26::-;;;;;;;;;;;;;:::o;19683:132::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19796:10:::1;19770:15;;:37;;;;;;;;;;;;;;;;;;19683:132:::0;:::o;13930:36::-;;;;:::o;13427:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;20853:748::-;20933:22;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20970:35:::1;21027:16;20970:74;;21093:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21075:53;;;21137:4;21144:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21075:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21058:110;;21210:1;21184:28;;:14;:28;;::::0;21181:225:::1;;21298:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21280:74;;;21363:4;21370:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21280:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21263:131;;21181:225;21432:14;21418:11;;:28;;;;;;;;;;;;;;;;;;21498:16;21480:15;;:34;;;;;;;;;;;;;;;;;;21589:4;21552:12;:34;21573:11;;;;;;;;;;;21552:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20957:644;20853:748:::0;;;:::o;28987:697::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29087:15:::1;29105:10;29087:28;;29153:7;;:14;;29134:8;;:15;;:33;29126:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29204:15;29234:6:::0;29243:1:::1;29234:10;;29230:92;29250:7;;:14;;29246:1;:18;29230:92;;;29300:7;;29308:1;29300:10;;;;;;;:::i;:::-;;;;;;;;29286:24;;;;;:::i;:::-;;;29266:3;;;;;:::i;:::-;;;;29230:92;;;;29362:10;29340:18;29350:7;29340:9;:18::i;:::-;:32;;29332:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;29435:34;29458:10;29435:9;:18;29445:7;29435:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;29414:9;:18;29424:7;29414:18;;;;;;;;;;;;;;;:55;;;;29485:6;29481:194;29501:8;;:15;;29497:1;:19;29481:194;;;29563:38;29590:7;;29598:1;29590:10;;;;;;;:::i;:::-;;;;;;;;29563:9;:22;29573:8;;29582:1;29573:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29563:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;29538:9;:22;29548:8;;29557:1;29548:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29538:22;;;;;;;;;;;;;;;:63;;;;29639:8;;29648:1;29639:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29621:42;;29630:7;29621:42;;;29652:7;;29660:1;29652:10;;;;;;;:::i;:::-;;;;;;;;29621:42;;;;;;:::i;:::-;;;;;;;;29518:3;;;;;:::i;:::-;;;;29481:194;;;;29076:608;;28987:697:::0;;;;:::o;17229:119::-;17295:7;17322:9;:18;17332:7;17322:18;;;;;;;;;;;;;;;;17315:25;;17229:119;;;:::o;4310:230::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4417:42:::1;4380:81;;4401:6;::::0;::::1;;;;;;;;4380:81;;;;;;;;;;;;4489:42;4472:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;4310:230::o:0;12844:92::-;;;;;;;;;;;;;:::o;14248:59::-;;;;:::o;14320:58::-;;;;:::o;14052:33::-;;;;:::o;18524:129::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18637:8:::1;18613:12;:21;18626:7;18613:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18524:129:::0;;:::o;14654:41::-;;;;;;;;;;;;;:::o;13843:36::-;;;;:::o;13653:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4085:79::-;4123:7;4150:6;;;;;;;;;;;4143:13;;4085:79;:::o;16935:87::-;16974:13;17007:7;17000:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16935:87;:::o;13042:32::-;;;;;;;;;;;;;:::o;17733:269::-;17826:4;17843:129;17852:12;:10;:12::i;:::-;17866:7;17875:96;17914:15;17875:96;;;;;;;;;;;;;;;;;:11;:25;17887:12;:10;:12::i;:::-;17875:25;;;;;;;;;;;;;;;:34;17901:7;17875:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17843:8;:129::i;:::-;17990:4;17983:11;;17733:269;;;;:::o;20284:125::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20393:8:::1;20365:25;;:36;;;;;;;;;;;;;;;;;;20284:125:::0;:::o;22525:167::-;22603:4;22620:42;22630:12;:10;:12::i;:::-;22644:9;22655:6;22620:9;:42::i;:::-;;22680:4;22673:11;;22525:167;;;;:::o;16730:106::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16818:8:::1;16801:14;;:25;;;;;;;;;;;;;;;;;;16730:106:::0;:::o;20105:171::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20206:8:::1;20182:21;;:32;;;;;;;;;;;;;;;;;;20230:38;20259:8;20230:38;;;;;;:::i;:::-;;;;;;;;20105:171:::0;:::o;13752:36::-;;;;:::o;14442:26::-;;;;;;;;;;;;;:::o;13886:37::-;;;;:::o;13594:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;19823:134::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19938:10:::1;19910:17;;:39;;;;;;;;;;;;;;;;;;19823:134:::0;:::o;14159:69::-;;;;:::o;14558:45::-;;;;;;;;;;;;;:::o;13710:35::-;;;;:::o;17356:143::-;17437:7;17464:11;:18;17476:5;17464:18;;;;;;;;;;;;;;;:27;17483:7;17464:27;;;;;;;;;;;;;;;;17457:34;;17356:143;;;;:::o;25162:154::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25216:7:::1;25236:10;25228:24;;25260:21;25228:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25215:71;;;25305:2;25297:11;;;::::0;::::1;;25204:112;25162:154::o:0;19201:111::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19293:11:::1;19278:12;:26;;;;19201:111:::0;:::o;19086:107::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19178:7:::1;19153:22;;:32;;;;;;;;;;;;;;;;;;19086:107:::0;:::o;18661:135::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18780:8:::1;18751:17;:26;18769:7;18751:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18661:135:::0;;:::o;14013:32::-;;;;:::o;19441:102::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19527:8:::1;19513:10;:22;;;;19441:102:::0;:::o;4548:244::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4657:1:::1;4637:22;;:8;:22;;::::0;4629:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4747:8;4718:38;;4739:6;::::0;::::1;;;;;;;;4718:38;;;;;;;;;;;;4776:8;4767:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4548:244:::0;:::o;25015:139::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25110:6:::1;25103:23;;;25127:10;25138:7;25103:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25015:139:::0;;:::o;13975:29::-;;;;:::o;18804:127::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18917:6:::1;18891:15;:23;18907:6;18891:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18804:127:::0;;:::o;14612:35::-;;;;;;;;;;;;;:::o;12943:92::-;;;;;;;;;;;;;:::o;19965:132::-;4229:12;:10;:12::i;:::-;4219:22;;:6;;;;;;;;;;:22;;;4211:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20078:10:::1;20052:15;;:37;;;;;;;;;;;;;;;;;;19965:132:::0;:::o;2740:250::-;2798:7;2827:1;2822;:6;2818:47;;2852:1;2845:8;;;;2818:47;2877:9;2893:1;2889;:5;;;;:::i;:::-;2877:17;;2922:1;2917;2913;:5;;;;:::i;:::-;:10;2905:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2981:1;2974:8;;;2740:250;;;;;:::o;2998:132::-;3056:7;3083:39;3087:1;3090;3083:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3076:46;;2998:132;;;;:::o;2207:181::-;2265:7;2285:9;2301:1;2297;:5;;;;:::i;:::-;2285:17;;2326:1;2321;:6;;2313:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2379:1;2372:8;;;2207:181;;;;:::o;1265:115::-;1318:15;1361:10;1346:26;;1265:115;:::o;18179:337::-;18289:1;18272:19;;:5;:19;;;18264:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18370:1;18351:21;;:7;:21;;;18343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18454:6;18424:11;:18;18436:5;18424:18;;;;;;;;;;;;;;;:27;18443:7;18424:27;;;;;;;;;;;;;;;:36;;;;18492:7;18476:32;;18485:5;18476:32;;;18501:6;18476:32;;;;;;:::i;:::-;;;;;;;;18179:337;;;:::o;23021:1986::-;23108:4;23153:1;23135:20;;:6;:20;;;23127:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23237:1;23216:23;;:9;:23;;;23208:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23491:16;;;;;;;;;;;23488:1502;;;23541:41;23556:6;23564:9;23575:6;23541:14;:41::i;:::-;23534:48;;;;23488:1502;23640:15;:23;23656:6;23640:23;;;;;;;;;;;;;;;;;;;;;;;;;23639:24;:55;;;;;23668:15;:26;23684:9;23668:26;;;;;;;;;;;;;;;;;;;;;;;;;23667:27;23639:55;:81;;;;;23698:22;;;;;;;;;;;23639:81;23636:196;;;23759:12;;23749:6;:22;;23741:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23636:196;23848:28;23879:24;23897:4;23879:9;:24::i;:::-;23848:55;;23918:28;23973:23;;23949:20;:47;;23918:78;;24029:23;:44;;;;;24057:16;;;;;;;;;;;24056:17;24029:44;:69;;;;;24078:12;:20;24091:6;24078:20;;;;;;;;;;;;;;;;;;;;;;;;;24077:21;24029:69;:94;;;;;24102:21;;;;;;;;;;;24029:94;24025:305;;;24161:25;;;;;;;;;;;24158:97;;;24232:23;;24209:46;;24158:97;24274:36;24289:20;24274:14;:36::i;:::-;24025:305;24366:53;24388:6;24366:53;;;;;;;;;;;;;;;;;:9;:17;24376:6;24366:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24346:9;:17;24356:6;24346:17;;;;;;;;;;;;;;;:73;;;;24436:19;24459:17;:25;24477:6;24459:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;24488:17;:28;24506:9;24488:28;;;;;;;;;;;;;;;;;;;;;;;;;24459:57;24458:148;;24572:34;24580:6;24588:9;24599:6;24572:7;:34::i;:::-;24458:148;;;24563:6;24458:148;24436:170;;24626:16;;;;;;;;;;;:51;;;;;24647:19;:30;24667:9;24647:30;;;;;;;;;;;;;;;;;;;;;;;;;24646:31;24626:51;24623:191;;;24747:10;;24706:37;24731:11;24706:20;24716:9;24706;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;24698:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24623:191;24853:37;24878:11;24853:9;:20;24863:9;24853:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24830:9;:20;24840:9;24830:20;;;;;;;;;;;;;;;:60;;;;24929:9;24912:40;;24921:6;24912:40;;;24940:11;24912:40;;;;;;:::i;:::-;;;;;;;;24974:4;24967:11;;;;;23021:1986;;;;;;:::o;2540:192::-;2626:7;2659:1;2654;:6;;2662:12;2646:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2723:1;2716:8;;;2540:192;;;;;:::o;2396:136::-;2454:7;2481:43;2485:1;2488;2481:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2474:50;;2396:136;;;;:::o;3138:278::-;3224:7;3256:1;3252;:5;3259:12;3244:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3283:9;3299:1;3295;:5;;;;:::i;:::-;3283:17;;3407:1;3400:8;;;3138:278;;;;;:::o;25324:330::-;25417:4;25454:53;25476:6;25454:53;;;;;;;;;;;;;;;;;:9;:17;25464:6;25454:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25434:9;:17;25444:6;25434:17;;;;;;;;;;;;;;;:73;;;;25541:32;25566:6;25541:9;:20;25551:9;25541:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25518:9;:20;25528:9;25518:20;;;;;;;;;;;;;;;:55;;;;25606:9;25589:35;;25598:6;25589:35;;;25617:6;25589:35;;;;;;:::i;:::-;;;;;;;;25642:4;25635:11;;25324:330;;;;;:::o;25662:1449::-;15139:4;15120:16;;:23;;;;;;;;;;;;;;;;;;25736:19:::1;25758:41;25780:18;;25758:17;;:21;;:41;;;;:::i;:::-;25736:63;;25812:22;25837:39;25858:17;;25837:16;;:20;;:39;;;;:::i;:::-;25812:64;;25887:22;25912:39;25933:17;;25912:16;;:20;;:39;;;;:::i;:::-;25887:64;;26050:18;26071:51;26120:1;26071:44;26103:11;26071:27;26083:14;26071:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;26050:72;;26133:20;26156:23;26168:10;26156:7;:11;;:23;;;;:::i;:::-;26133:46;;26192:22;26218:21;26192:47;;26250:30;26267:12;26250:16;:30::i;:::-;26291:23;26318:41;26344:14;26318:21;:25;;:41;;;;:::i;:::-;26291:68;;26372:19;26394:38;26410:21;26429:1;26410:14;:18;;:21;;;;:::i;:::-;26394:11;:15;;:38;;;;:::i;:::-;26372:60;;26445:26;26474:59;26531:1;26474:52;26514:11;26474:35;26494:14;26474:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;26445:88;;26544:26;26573:52;26613:11;26573:35;26593:14;26573:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;26544:81;;26636:26;26665:63;26709:18;26665:39;26685:18;26665:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;26636:92;;26765:1;26744:18;:22;26741:107;;;26791:15;;;;;;;;;;;26783:33;;:53;26817:18;26783:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26741:107;26884:1;26863:18;:22;26860:107;;;26910:15;;;;;;;;;;;26902:33;;:53;26936:18;26902:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26860:107;27012:1;26991:18;:22;:40;;;;;27030:1;27017:10;:14;26991:40;26988:116;;;27048:44;27061:10;27073:18;27048:12;:44::i;:::-;26988:116;25723:1388;;;;;;;;;;;15185:5:::0;15166:16;;:24;;;;;;;;;;;;;;;;;;25662:1449;:::o;28328:622::-;28414:7;28444:17;28464:1;28444:21;;28489:12;:20;28502:6;28489:20;;;;;;;;;;;;;;;;;;;;;;;;;28486:223;;;28538:38;28572:3;28538:29;28549:17;;28538:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;28526:50;;28486:223;;;28606:12;:23;28619:9;28606:23;;;;;;;;;;;;;;;;;;;;;;;;;28603:106;;;28658:39;28693:3;28658:30;28669:18;;28658:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;28646:51;;28603:106;28486:223;28744:1;28732:9;:13;28729:173;;;28789:39;28818:9;28789;:24;28807:4;28789:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28762:9;:24;28780:4;28762:24;;;;;;;;;;;;;;;:66;;;;28873:4;28848:42;;28857:6;28848:42;;;28880:9;28848:42;;;;;;:::i;:::-;;;;;;;;28729:173;28921:21;28932:9;28921:6;:10;;:21;;;;:::i;:::-;28914:28;;;28328:622;;;;;:::o;27123:666::-;27249:21;27287:1;27273:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27249:40;;27318:4;27300;27305:1;27300:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27344:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27334:4;27339:1;27334:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27379:62;27396:4;27411:15;;;;;;;;;;;27429:11;27379:8;:62::i;:::-;27480:15;;;;;;;;;;;:66;;;27561:11;27587:1;27631:4;27658;27694:15;27480:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27746:35;27763:11;27776:4;27746:35;;;;;;;:::i;:::-;;;;;;;;27178:611;27123:666;:::o;27797:523::-;27945:62;27962:4;27977:15;;;;;;;;;;;27995:11;27945:8;:62::i;:::-;28050:15;;;;;;;;;;;:31;;;28089:9;28122:4;28142:11;28168:1;28211;28254:17;;;;;;;;;;;28286:15;28050:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27797:523;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:118::-;2978:24;2996:5;2978:24;:::i;:::-;2973:3;2966:37;2891:118;;:::o;3015:222::-;3108:4;3146:2;3135:9;3131:18;3123:26;;3159:71;3227:1;3216:9;3212:17;3203:6;3159:71;:::i;:::-;3015:222;;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:60::-;4451:3;4472:5;4465:12;;4423:60;;;:::o;4489:142::-;4539:9;4572:53;4590:34;4599:24;4617:5;4599:24;:::i;:::-;4590:34;:::i;:::-;4572:53;:::i;:::-;4559:66;;4489:142;;;:::o;4637:126::-;4687:9;4720:37;4751:5;4720:37;:::i;:::-;4707:50;;4637:126;;;:::o;4769:153::-;4846:9;4879:37;4910:5;4879:37;:::i;:::-;4866:50;;4769:153;;;:::o;4928:185::-;5042:64;5100:5;5042:64;:::i;:::-;5037:3;5030:77;4928:185;;:::o;5119:276::-;5239:4;5277:2;5266:9;5262:18;5254:26;;5290:98;5385:1;5374:9;5370:17;5361:6;5290:98;:::i;:::-;5119:276;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:116::-;5823:21;5838:5;5823:21;:::i;:::-;5816:5;5813:32;5803:60;;5859:1;5856;5849:12;5803:60;5753:116;:::o;5875:133::-;5918:5;5956:6;5943:20;5934:29;;5972:30;5996:5;5972:30;:::i;:::-;5875:133;;;;:::o;6014:468::-;6079:6;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:53;6332:7;6323:6;6312:9;6308:22;6287:53;:::i;:::-;6277:63;;6233:117;6389:2;6415:50;6457:7;6448:6;6437:9;6433:22;6415:50;:::i;:::-;6405:60;;6360:115;6014:468;;;;;:::o;6488:619::-;6565:6;6573;6581;6630:2;6618:9;6609:7;6605:23;6601:32;6598:119;;;6636:79;;:::i;:::-;6598:119;6756:1;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;:::i;:::-;6771:63;;6727:117;6883:2;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6854:118;7011:2;7037:53;7082:7;7073:6;7062:9;7058:22;7037:53;:::i;:::-;7027:63;;6982:118;6488:619;;;;;:::o;7113:323::-;7169:6;7218:2;7206:9;7197:7;7193:23;7189:32;7186:119;;;7224:79;;:::i;:::-;7186:119;7344:1;7369:50;7411:7;7402:6;7391:9;7387:22;7369:50;:::i;:::-;7359:60;;7315:114;7113:323;;;;:::o;7442:86::-;7477:7;7517:4;7510:5;7506:16;7495:27;;7442:86;;;:::o;7534:112::-;7617:22;7633:5;7617:22;:::i;:::-;7612:3;7605:35;7534:112;;:::o;7652:214::-;7741:4;7779:2;7768:9;7764:18;7756:26;;7792:67;7856:1;7845:9;7841:17;7832:6;7792:67;:::i;:::-;7652:214;;;;:::o;7872:329::-;7931:6;7980:2;7968:9;7959:7;7955:23;7951:32;7948:119;;;7986:79;;:::i;:::-;7948:119;8106:1;8131:53;8176:7;8167:6;8156:9;8152:22;8131:53;:::i;:::-;8121:63;;8077:117;7872:329;;;;:::o;8207:::-;8266:6;8315:2;8303:9;8294:7;8290:23;8286:32;8283:119;;;8321:79;;:::i;:::-;8283:119;8441:1;8466:53;8511:7;8502:6;8491:9;8487:22;8466:53;:::i;:::-;8456:63;;8412:117;8207:329;;;;:::o;8542:117::-;8651:1;8648;8641:12;8665:117;8774:1;8771;8764:12;8788:117;8897:1;8894;8887:12;8928:568;9001:8;9011:6;9061:3;9054:4;9046:6;9042:17;9038:27;9028:122;;9069:79;;:::i;:::-;9028:122;9182:6;9169:20;9159:30;;9212:18;9204:6;9201:30;9198:117;;;9234:79;;:::i;:::-;9198:117;9348:4;9340:6;9336:17;9324:29;;9402:3;9394:4;9386:6;9382:17;9372:8;9368:32;9365:41;9362:128;;;9409:79;;:::i;:::-;9362:128;8928:568;;;;;:::o;9519:::-;9592:8;9602:6;9652:3;9645:4;9637:6;9633:17;9629:27;9619:122;;9660:79;;:::i;:::-;9619:122;9773:6;9760:20;9750:30;;9803:18;9795:6;9792:30;9789:117;;;9825:79;;:::i;:::-;9789:117;9939:4;9931:6;9927:17;9915:29;;9993:3;9985:4;9977:6;9973:17;9963:8;9959:32;9956:41;9953:128;;;10000:79;;:::i;:::-;9953:128;9519:568;;;;;:::o;10093:934::-;10215:6;10223;10231;10239;10288:2;10276:9;10267:7;10263:23;10259:32;10256:119;;;10294:79;;:::i;:::-;10256:119;10442:1;10431:9;10427:17;10414:31;10472:18;10464:6;10461:30;10458:117;;;10494:79;;:::i;:::-;10458:117;10607:80;10679:7;10670:6;10659:9;10655:22;10607:80;:::i;:::-;10589:98;;;;10385:312;10764:2;10753:9;10749:18;10736:32;10795:18;10787:6;10784:30;10781:117;;;10817:79;;:::i;:::-;10781:117;10930:80;11002:7;10993:6;10982:9;10978:22;10930:80;:::i;:::-;10912:98;;;;10707:313;10093:934;;;;;;;:::o;11033:104::-;11078:7;11107:24;11125:5;11107:24;:::i;:::-;11096:35;;11033:104;;;:::o;11143:142::-;11246:32;11272:5;11246:32;:::i;:::-;11241:3;11234:45;11143:142;;:::o;11291:254::-;11400:4;11438:2;11427:9;11423:18;11415:26;;11451:87;11535:1;11524:9;11520:17;11511:6;11451:87;:::i;:::-;11291:254;;;;:::o;11551:474::-;11619:6;11627;11676:2;11664:9;11655:7;11651:23;11647:32;11644:119;;;11682:79;;:::i;:::-;11644:119;11802:1;11827:53;11872:7;11863:6;11852:9;11848:22;11827:53;:::i;:::-;11817:63;;11773:117;11929:2;11955:53;12000:7;11991:6;11980:9;11976:22;11955:53;:::i;:::-;11945:63;;11900:118;11551:474;;;;;:::o;12031:180::-;12079:77;12076:1;12069:88;12176:4;12173:1;12166:15;12200:4;12197:1;12190:15;12217:320;12261:6;12298:1;12292:4;12288:12;12278:22;;12345:1;12339:4;12335:12;12366:18;12356:81;;12422:4;12414:6;12410:17;12400:27;;12356:81;12484:2;12476:6;12473:14;12453:18;12450:38;12447:84;;12503:18;;:::i;:::-;12447:84;12268:269;12217:320;;;:::o;12543:182::-;12683:34;12679:1;12671:6;12667:14;12660:58;12543:182;:::o;12731:366::-;12873:3;12894:67;12958:2;12953:3;12894:67;:::i;:::-;12887:74;;12970:93;13059:3;12970:93;:::i;:::-;13088:2;13083:3;13079:12;13072:19;;12731:366;;;:::o;13103:419::-;13269:4;13307:2;13296:9;13292:18;13284:26;;13356:9;13350:4;13346:20;13342:1;13331:9;13327:17;13320:47;13384:131;13510:4;13384:131;:::i;:::-;13376:139;;13103:419;;;:::o;13528:180::-;13576:77;13573:1;13566:88;13673:4;13670:1;13663:15;13697:4;13694:1;13687:15;13714:180;13762:77;13759:1;13752:88;13859:4;13856:1;13849:15;13883:4;13880:1;13873:15;13900:185;13940:1;13957:20;13975:1;13957:20;:::i;:::-;13952:25;;13991:20;14009:1;13991:20;:::i;:::-;13986:25;;14030:1;14020:35;;14035:18;;:::i;:::-;14020:35;14077:1;14074;14070:9;14065:14;;13900:185;;;;:::o;14091:179::-;14231:31;14227:1;14219:6;14215:14;14208:55;14091:179;:::o;14276:366::-;14418:3;14439:67;14503:2;14498:3;14439:67;:::i;:::-;14432:74;;14515:93;14604:3;14515:93;:::i;:::-;14633:2;14628:3;14624:12;14617:19;;14276:366;;;:::o;14648:419::-;14814:4;14852:2;14841:9;14837:18;14829:26;;14901:9;14895:4;14891:20;14887:1;14876:9;14872:17;14865:47;14929:131;15055:4;14929:131;:::i;:::-;14921:139;;14648:419;;;:::o;15073:178::-;15213:30;15209:1;15201:6;15197:14;15190:54;15073:178;:::o;15257:366::-;15399:3;15420:67;15484:2;15479:3;15420:67;:::i;:::-;15413:74;;15496:93;15585:3;15496:93;:::i;:::-;15614:2;15609:3;15605:12;15598:19;;15257:366;;;:::o;15629:419::-;15795:4;15833:2;15822:9;15818:18;15810:26;;15882:9;15876:4;15872:20;15868:1;15857:9;15853:17;15846:47;15910:131;16036:4;15910:131;:::i;:::-;15902:139;;15629:419;;;:::o;16054:143::-;16111:5;16142:6;16136:13;16127:22;;16158:33;16185:5;16158:33;:::i;:::-;16054:143;;;;:::o;16203:351::-;16273:6;16322:2;16310:9;16301:7;16297:23;16293:32;16290:119;;;16328:79;;:::i;:::-;16290:119;16448:1;16473:64;16529:7;16520:6;16509:9;16505:22;16473:64;:::i;:::-;16463:74;;16419:128;16203:351;;;;:::o;16560:332::-;16681:4;16719:2;16708:9;16704:18;16696:26;;16732:71;16800:1;16789:9;16785:17;16776:6;16732:71;:::i;:::-;16813:72;16881:2;16870:9;16866:18;16857:6;16813:72;:::i;:::-;16560:332;;;;;:::o;16898:172::-;17038:24;17034:1;17026:6;17022:14;17015:48;16898:172;:::o;17076:366::-;17218:3;17239:67;17303:2;17298:3;17239:67;:::i;:::-;17232:74;;17315:93;17404:3;17315:93;:::i;:::-;17433:2;17428:3;17424:12;17417:19;;17076:366;;;:::o;17448:419::-;17614:4;17652:2;17641:9;17637:18;17629:26;;17701:9;17695:4;17691:20;17687:1;17676:9;17672:17;17665:47;17729:131;17855:4;17729:131;:::i;:::-;17721:139;;17448:419;;;:::o;17873:180::-;17921:77;17918:1;17911:88;18018:4;18015:1;18008:15;18042:4;18039:1;18032:15;18059:191;18099:3;18118:20;18136:1;18118:20;:::i;:::-;18113:25;;18152:20;18170:1;18152:20;:::i;:::-;18147:25;;18195:1;18192;18188:9;18181:16;;18216:3;18213:1;18210:10;18207:36;;;18223:18;;:::i;:::-;18207:36;18059:191;;;;:::o;18256:233::-;18295:3;18318:24;18336:5;18318:24;:::i;:::-;18309:33;;18364:66;18357:5;18354:77;18351:103;;18434:18;;:::i;:::-;18351:103;18481:1;18474:5;18470:13;18463:20;;18256:233;;;:::o;18495:177::-;18635:29;18631:1;18623:6;18619:14;18612:53;18495:177;:::o;18678:366::-;18820:3;18841:67;18905:2;18900:3;18841:67;:::i;:::-;18834:74;;18917:93;19006:3;18917:93;:::i;:::-;19035:2;19030:3;19026:12;19019:19;;18678:366;;;:::o;19050:419::-;19216:4;19254:2;19243:9;19239:18;19231:26;;19303:9;19297:4;19293:20;19289:1;19278:9;19274:17;19267:47;19331:131;19457:4;19331:131;:::i;:::-;19323:139;;19050:419;;;:::o;19475:147::-;19576:11;19613:3;19598:18;;19475:147;;;;:::o;19628:114::-;;:::o;19748:398::-;19907:3;19928:83;20009:1;20004:3;19928:83;:::i;:::-;19921:90;;20020:93;20109:3;20020:93;:::i;:::-;20138:1;20133:3;20129:11;20122:18;;19748:398;;;:::o;20152:379::-;20336:3;20358:147;20501:3;20358:147;:::i;:::-;20351:154;;20522:3;20515:10;;20152:379;;;:::o;20537:225::-;20677:34;20673:1;20665:6;20661:14;20654:58;20746:8;20741:2;20733:6;20729:15;20722:33;20537:225;:::o;20768:366::-;20910:3;20931:67;20995:2;20990:3;20931:67;:::i;:::-;20924:74;;21007:93;21096:3;21007:93;:::i;:::-;21125:2;21120:3;21116:12;21109:19;;20768:366;;;:::o;21140:419::-;21306:4;21344:2;21333:9;21329:18;21321:26;;21393:9;21387:4;21383:20;21379:1;21368:9;21364:17;21357:47;21421:131;21547:4;21421:131;:::i;:::-;21413:139;;21140:419;;;:::o;21565:332::-;21686:4;21724:2;21713:9;21709:18;21701:26;;21737:71;21805:1;21794:9;21790:17;21781:6;21737:71;:::i;:::-;21818:72;21886:2;21875:9;21871:18;21862:6;21818:72;:::i;:::-;21565:332;;;;;:::o;21903:137::-;21957:5;21988:6;21982:13;21973:22;;22004:30;22028:5;22004:30;:::i;:::-;21903:137;;;;:::o;22046:345::-;22113:6;22162:2;22150:9;22141:7;22137:23;22133:32;22130:119;;;22168:79;;:::i;:::-;22130:119;22288:1;22313:61;22366:7;22357:6;22346:9;22342:22;22313:61;:::i;:::-;22303:71;;22259:125;22046:345;;;;:::o;22397:410::-;22437:7;22460:20;22478:1;22460:20;:::i;:::-;22455:25;;22494:20;22512:1;22494:20;:::i;:::-;22489:25;;22549:1;22546;22542:9;22571:30;22589:11;22571:30;:::i;:::-;22560:41;;22750:1;22741:7;22737:15;22734:1;22731:22;22711:1;22704:9;22684:83;22661:139;;22780:18;;:::i;:::-;22661:139;22445:362;22397:410;;;;:::o;22813:220::-;22953:34;22949:1;22941:6;22937:14;22930:58;23022:3;23017:2;23009:6;23005:15;22998:28;22813:220;:::o;23039:366::-;23181:3;23202:67;23266:2;23261:3;23202:67;:::i;:::-;23195:74;;23278:93;23367:3;23278:93;:::i;:::-;23396:2;23391:3;23387:12;23380:19;;23039:366;;;:::o;23411:419::-;23577:4;23615:2;23604:9;23600:18;23592:26;;23664:9;23658:4;23654:20;23650:1;23639:9;23635:17;23628:47;23692:131;23818:4;23692:131;:::i;:::-;23684:139;;23411:419;;;:::o;23836:177::-;23976:29;23972:1;23964:6;23960:14;23953:53;23836:177;:::o;24019:366::-;24161:3;24182:67;24246:2;24241:3;24182:67;:::i;:::-;24175:74;;24258:93;24347:3;24258:93;:::i;:::-;24376:2;24371:3;24367:12;24360:19;;24019:366;;;:::o;24391:419::-;24557:4;24595:2;24584:9;24580:18;24572:26;;24644:9;24638:4;24634:20;24630:1;24619:9;24615:17;24608:47;24672:131;24798:4;24672:131;:::i;:::-;24664:139;;24391:419;;;:::o;24816:223::-;24956:34;24952:1;24944:6;24940:14;24933:58;25025:6;25020:2;25012:6;25008:15;25001:31;24816:223;:::o;25045:366::-;25187:3;25208:67;25272:2;25267:3;25208:67;:::i;:::-;25201:74;;25284:93;25373:3;25284:93;:::i;:::-;25402:2;25397:3;25393:12;25386:19;;25045:366;;;:::o;25417:419::-;25583:4;25621:2;25610:9;25606:18;25598:26;;25670:9;25664:4;25660:20;25656:1;25645:9;25641:17;25634:47;25698:131;25824:4;25698:131;:::i;:::-;25690:139;;25417:419;;;:::o;25842:221::-;25982:34;25978:1;25970:6;25966:14;25959:58;26051:4;26046:2;26038:6;26034:15;26027:29;25842:221;:::o;26069:366::-;26211:3;26232:67;26296:2;26291:3;26232:67;:::i;:::-;26225:74;;26308:93;26397:3;26308:93;:::i;:::-;26426:2;26421:3;26417:12;26410:19;;26069:366;;;:::o;26441:419::-;26607:4;26645:2;26634:9;26630:18;26622:26;;26694:9;26688:4;26684:20;26680:1;26669:9;26665:17;26658:47;26722:131;26848:4;26722:131;:::i;:::-;26714:139;;26441:419;;;:::o;26866:224::-;27006:34;27002:1;26994:6;26990:14;26983:58;27075:7;27070:2;27062:6;27058:15;27051:32;26866:224;:::o;27096:366::-;27238:3;27259:67;27323:2;27318:3;27259:67;:::i;:::-;27252:74;;27335:93;27424:3;27335:93;:::i;:::-;27453:2;27448:3;27444:12;27437:19;;27096:366;;;:::o;27468:419::-;27634:4;27672:2;27661:9;27657:18;27649:26;;27721:9;27715:4;27711:20;27707:1;27696:9;27692:17;27685:47;27749:131;27875:4;27749:131;:::i;:::-;27741:139;;27468:419;;;:::o;27893:222::-;28033:34;28029:1;28021:6;28017:14;28010:58;28102:5;28097:2;28089:6;28085:15;28078:30;27893:222;:::o;28121:366::-;28263:3;28284:67;28348:2;28343:3;28284:67;:::i;:::-;28277:74;;28360:93;28449:3;28360:93;:::i;:::-;28478:2;28473:3;28469:12;28462:19;;28121:366;;;:::o;28493:419::-;28659:4;28697:2;28686:9;28682:18;28674:26;;28746:9;28740:4;28736:20;28732:1;28721:9;28717:17;28710:47;28774:131;28900:4;28774:131;:::i;:::-;28766:139;;28493:419;;;:::o;28918:227::-;29058:34;29054:1;29046:6;29042:14;29035:58;29127:10;29122:2;29114:6;29110:15;29103:35;28918:227;:::o;29151:366::-;29293:3;29314:67;29378:2;29373:3;29314:67;:::i;:::-;29307:74;;29390:93;29479:3;29390:93;:::i;:::-;29508:2;29503:3;29499:12;29492:19;;29151:366;;;:::o;29523:419::-;29689:4;29727:2;29716:9;29712:18;29704:26;;29776:9;29770:4;29766:20;29762:1;29751:9;29747:17;29740:47;29804:131;29930:4;29804:131;:::i;:::-;29796:139;;29523:419;;;:::o;29948:224::-;30088:34;30084:1;30076:6;30072:14;30065:58;30157:7;30152:2;30144:6;30140:15;30133:32;29948:224;:::o;30178:366::-;30320:3;30341:67;30405:2;30400:3;30341:67;:::i;:::-;30334:74;;30417:93;30506:3;30417:93;:::i;:::-;30535:2;30530:3;30526:12;30519:19;;30178:366;;;:::o;30550:419::-;30716:4;30754:2;30743:9;30739:18;30731:26;;30803:9;30797:4;30793:20;30789:1;30778:9;30774:17;30767:47;30831:131;30957:4;30831:131;:::i;:::-;30823:139;;30550:419;;;:::o;30975:194::-;31015:4;31035:20;31053:1;31035:20;:::i;:::-;31030:25;;31069:20;31087:1;31069:20;:::i;:::-;31064:25;;31113:1;31110;31106:9;31098:17;;31137:1;31131:4;31128:11;31125:37;;;31142:18;;:::i;:::-;31125:37;30975:194;;;;:::o;31175:180::-;31223:77;31220:1;31213:88;31320:4;31317:1;31310:15;31344:4;31341:1;31334:15;31361:85;31406:7;31435:5;31424:16;;31361:85;;;:::o;31452:158::-;31510:9;31543:61;31561:42;31570:32;31596:5;31570:32;:::i;:::-;31561:42;:::i;:::-;31543:61;:::i;:::-;31530:74;;31452:158;;;:::o;31616:147::-;31711:45;31750:5;31711:45;:::i;:::-;31706:3;31699:58;31616:147;;:::o;31769:114::-;31836:6;31870:5;31864:12;31854:22;;31769:114;;;:::o;31889:184::-;31988:11;32022:6;32017:3;32010:19;32062:4;32057:3;32053:14;32038:29;;31889:184;;;;:::o;32079:132::-;32146:4;32169:3;32161:11;;32199:4;32194:3;32190:14;32182:22;;32079:132;;;:::o;32217:108::-;32294:24;32312:5;32294:24;:::i;:::-;32289:3;32282:37;32217:108;;:::o;32331:179::-;32400:10;32421:46;32463:3;32455:6;32421:46;:::i;:::-;32499:4;32494:3;32490:14;32476:28;;32331:179;;;;:::o;32516:113::-;32586:4;32618;32613:3;32609:14;32601:22;;32516:113;;;:::o;32665:732::-;32784:3;32813:54;32861:5;32813:54;:::i;:::-;32883:86;32962:6;32957:3;32883:86;:::i;:::-;32876:93;;32993:56;33043:5;32993:56;:::i;:::-;33072:7;33103:1;33088:284;33113:6;33110:1;33107:13;33088:284;;;33189:6;33183:13;33216:63;33275:3;33260:13;33216:63;:::i;:::-;33209:70;;33302:60;33355:6;33302:60;:::i;:::-;33292:70;;33148:224;33135:1;33132;33128:9;33123:14;;33088:284;;;33092:14;33388:3;33381:10;;32789:608;;;32665:732;;;;:::o;33403:831::-;33666:4;33704:3;33693:9;33689:19;33681:27;;33718:71;33786:1;33775:9;33771:17;33762:6;33718:71;:::i;:::-;33799:80;33875:2;33864:9;33860:18;33851:6;33799:80;:::i;:::-;33926:9;33920:4;33916:20;33911:2;33900:9;33896:18;33889:48;33954:108;34057:4;34048:6;33954:108;:::i;:::-;33946:116;;34072:72;34140:2;34129:9;34125:18;34116:6;34072:72;:::i;:::-;34154:73;34222:3;34211:9;34207:19;34198:6;34154:73;:::i;:::-;33403:831;;;;;;;;:::o;34240:483::-;34411:4;34449:2;34438:9;34434:18;34426:26;;34462:71;34530:1;34519:9;34515:17;34506:6;34462:71;:::i;:::-;34580:9;34574:4;34570:20;34565:2;34554:9;34550:18;34543:48;34608:108;34711:4;34702:6;34608:108;:::i;:::-;34600:116;;34240:483;;;;;:::o;34729:807::-;34978:4;35016:3;35005:9;35001:19;34993:27;;35030:71;35098:1;35087:9;35083:17;35074:6;35030:71;:::i;:::-;35111:72;35179:2;35168:9;35164:18;35155:6;35111:72;:::i;:::-;35193:80;35269:2;35258:9;35254:18;35245:6;35193:80;:::i;:::-;35283;35359:2;35348:9;35344:18;35335:6;35283:80;:::i;:::-;35373:73;35441:3;35430:9;35426:19;35417:6;35373:73;:::i;:::-;35456;35524:3;35513:9;35509:19;35500:6;35456:73;:::i;:::-;34729:807;;;;;;;;;:::o;35542:143::-;35599:5;35630:6;35624:13;35615:22;;35646:33;35673:5;35646:33;:::i;:::-;35542:143;;;;:::o;35691:663::-;35779:6;35787;35795;35844:2;35832:9;35823:7;35819:23;35815:32;35812:119;;;35850:79;;:::i;:::-;35812:119;35970:1;35995:64;36051:7;36042:6;36031:9;36027:22;35995:64;:::i;:::-;35985:74;;35941:128;36108:2;36134:64;36190:7;36181:6;36170:9;36166:22;36134:64;:::i;:::-;36124:74;;36079:129;36247:2;36273:64;36329:7;36320:6;36309:9;36305:22;36273:64;:::i;:::-;36263:74;;36218:129;35691:663;;;;;:::o

Swarm Source

ipfs://6d75f95d65c9a09c6d5cc3ce3afc1426283f0ba925abcf8839c7307206e9fef9

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.