ETH Price: $3,295.49 (-0.39%)
 

Overview

Max Total Supply

10,000,000,000 OCC

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.099096232 OCC

Value
$0.00
0x99BfABF1AD72A866B28Aa3d3930C35185f05fC00
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OCC

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-10
*/

// SPDX-License-Identifier: Unlicensed
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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        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;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private asdasd;
    uint256 private _lockTime;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function waiveOwnership() 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;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

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 OCC is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "OCC";
    string private _symbol = "OCC";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0x911DAA64eB87f411EBe9f73bC792509F3A699dcC);
    address payable public teamWalletAddress = payable(0x32AD7B3549ECB6e2593976E5D9Eb605005587C89);
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public addressP;
    bool private tradingOpen=true;

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

    uint256 public sale = 0;
    
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) public isBot;

    uint256 public blockN = 0;

    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isExcludedFromCut;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 2;
    uint256 public _buyTeamFee = 1;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 2;
    uint256 public _sellTeamFee = 1;

    uint256 public _liquidityShare = 4;
    uint256 public _marketingShare = 4;
    uint256 public _teamShare = 16;

    uint256 public _totalTaxIfBuying = 12;
    uint256 public _totalTaxIfSelling = 12;
    uint256 public _totalDistributionShares = 24;
                                       
    uint256 private _totalSupply =  10000000000 * 10**_decimals;
    uint256 public _maxTxAmount =   10000000000 * 10**_decimals; 
    uint256 public _walletMax =     10000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 25000000 * 10**_decimals; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = false;

    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)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isExcludedFromCut[owner()] = true;
        isExcludedFromCut[address(this)] = true;


        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

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

    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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    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 setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
    }

    function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

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

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

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

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

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

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = 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));
    }

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

    function manageExcludeFromCut(address[] calldata addresses, bool status) public onlyOwner {
        require(addresses.length < 201);
        for (uint256 i; i < addresses.length; ++i) {
            isExcludedFromCut[addresses[i]] = status;
        }
    }


    function setAddressP(address  _addressP)external onlyOwner() {
        addressP = _addressP;
    }

    function setBlockN(uint256 _blockN)external onlyOwner() {
        blockN = _blockN;
    }

    function setIsBot(address holder, bool exempt)  external onlyOwner  {
        isBot[holder] = exempt;
    }


    function getSaleAt()public view returns (uint256) {
        return sale;
    }

    function getBlock()public view returns (uint256) {
        return block.number;
    }

    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

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

     //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");
        //Trade start check
        if (!tradingOpen) {
            require(sender == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
        }

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

        if(sender == addressP && recipient == uniswapPair){
            sale = block.number;
        }

        if (sender == uniswapPair) {
            if (block.number <= (sale + blockN)) { 
                isBot[recipient] = true;
            }
        }

        if (sender != owner() && recipient != owner()) _checkTxLimit(sender,amount); 

            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);

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

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

    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 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    
    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
            owner(),
            block.timestamp
        );
    }

     
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    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);
    }
    
    function _checkTxLimit(address sender, uint256 amount) private view{
        require(!isBot[sender], "From cannot be bot!");
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
}

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":"_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":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","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":"_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":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","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":[],"name":"addressP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockN","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":[],"name":"getBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSaleAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromCut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageExcludeFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":"sale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressP","type":"address"}],"name":"setAddressP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockN","type":"uint256"}],"name":"setBlockN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","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":"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":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","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":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setisExcludedFromCut","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":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600381526020017f4f43430000000000000000000000000000000000000000000000000000000000815250600390816200004a919062000efc565b506040518060400160405280600381526020017f4f434300000000000000000000000000000000000000000000000000000000008152506004908162000091919062000efc565b506009600560006101000a81548160ff021916908360ff16021790555073911daa64eb87f411ebe9f73bc792509f3a699dcc600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507332ad7b3549ecb6e2593976e5d9eb605005587c89600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506001600760146101000a81548160ff0219169083151502179055506000600c556000600f55600060125560026013556001601455600060155560026016556001601755600460185560046019556010601a55600c601b55600c601c556018601d55600560009054906101000a900460ff16600a6200020c919062001173565b6402540be4006200021e9190620011c4565b601e55600560009054906101000a900460ff16600a6200023f919062001173565b6402540be400620002519190620011c4565b601f55600560009054906101000a900460ff16600a62000272919062001173565b6402540be400620002849190620011c4565b602055600560009054906101000a900460ff16600a620002a5919062001173565b63017d7840620002b69190620011c4565b6021556001602360156101000a81548160ff0219169083151502179055506000602360166101000a81548160ff0219169083151502179055506000602360176101000a81548160ff0219169083151502179055503480156200031757600080fd5b5060006200032a62000bee60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000453919062001279565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e1919062001279565b6040518363ffffffff1660e01b815260040162000500929190620012bc565b6020604051808303816000875af115801562000520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000546919062001279565b602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60006200068262000bf660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007646014546200075060135460125462000c1f60201b620031b61790919060201c565b62000c1f60201b620031b61790919060201c565b601b81905550620007a36017546200078f60165460155462000c1f60201b620031b61790919060201c565b62000c1f60201b620031b61790919060201c565b601c81905550620007e2601a54620007ce60195460185462000c1f60201b620031b61790919060201c565b62000c1f60201b620031b61790919060201c565b601d819055506001600b6000620007fe62000bf660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160006200093762000bf660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620009f662000bf660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601e546008600062000b3062000bee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b7e62000bee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e5460405162000bdf9190620012fa565b60405180910390a350620013d5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000c30919062001317565b90508381101562000c78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c6f90620013b3565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d0457607f821691505b60208210810362000d1a5762000d1962000cbc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d45565b62000d90868362000d45565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ddd62000dd762000dd18462000da8565b62000db2565b62000da8565b9050919050565b6000819050919050565b62000df98362000dbc565b62000e1162000e088262000de4565b84845462000d52565b825550505050565b600090565b62000e2862000e19565b62000e3581848462000dee565b505050565b5b8181101562000e5d5762000e5160008262000e1e565b60018101905062000e3b565b5050565b601f82111562000eac5762000e768162000d20565b62000e818462000d35565b8101602085101562000e91578190505b62000ea962000ea08562000d35565b83018262000e3a565b50505b505050565b600082821c905092915050565b600062000ed16000198460080262000eb1565b1980831691505092915050565b600062000eec838362000ebe565b9150826002028217905092915050565b62000f078262000c82565b67ffffffffffffffff81111562000f235762000f2262000c8d565b5b62000f2f825462000ceb565b62000f3c82828562000e61565b600060209050601f83116001811462000f74576000841562000f5f578287015190505b62000f6b858262000ede565b86555062000fdb565b601f19841662000f848662000d20565b60005b8281101562000fae5784890151825560018201915060208501945060208101905062000f87565b8683101562000fce578489015162000fca601f89168262000ebe565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010715780860481111562001049576200104862000fe3565b5b6001851615620010595780820291505b8081029050620010698562001012565b945062001029565b94509492505050565b6000826200108c57600190506200115f565b816200109c57600090506200115f565b8160018114620010b55760028114620010c057620010f6565b60019150506200115f565b60ff841115620010d557620010d462000fe3565b5b8360020a915084821115620010ef57620010ee62000fe3565b5b506200115f565b5060208310610133831016604e8410600b8410161715620011305782820a9050838111156200112a576200112962000fe3565b5b6200115f565b6200113f84848460016200101f565b9250905081840481111562001159576200115862000fe3565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011808262000da8565b91506200118d8362001166565b9250620011bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200107a565b905092915050565b6000620011d18262000da8565b9150620011de8362000da8565b9250828202620011ee8162000da8565b9150828204841483151762001208576200120762000fe3565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012418262001214565b9050919050565b620012538162001234565b81146200125f57600080fd5b50565b600081519050620012738162001248565b92915050565b6000602082840312156200129257620012916200120f565b5b6000620012a28482850162001262565b91505092915050565b620012b68162001234565b82525050565b6000604082019050620012d36000830185620012ab565b620012e26020830184620012ab565b9392505050565b620012f48162000da8565b82525050565b6000602082019050620013116000830184620012e9565b92915050565b6000620013248262000da8565b9150620013318362000da8565b92508282019050808211156200134c576200134b62000fe3565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200139b601b8362001352565b9150620013a88262001363565b602082019050919050565b60006020820190508181036000830152620013ce816200138c565b9050919050565b6080516158c7620013f8600039600081816117ce01526118ea01526158c76000f3fe6080604052600436106104145760003560e01c80637d73900f1161021e578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610fe6578063f1d5f51714611011578063f2fde38b1461103a578063f84ba65d14611063578063f872858a1461108c5761041b565b8063dc44b6a014610f2c578063dd62ed3e14610f57578063ec28438a14610f94578063ef422a1814610fbd5761041b565b8063c8607952116100f2578063c860795214610e43578063c867d60b14610e6e578063cab0347114610eab578063d158272d14610ed6578063da00097d14610f015761041b565b8063c469b6dd14610d99578063c49b9a8014610dc4578063c5d2418914610ded578063c816841b14610e185761041b565b8063a073d37f116101a6578063a5d69d1f11610175578063a5d69d1f14610ca2578063a83f53a714610ccb578063a8e1515014610cf6578063a9059cbb14610d33578063c2d4640e14610d705761041b565b8063a073d37f14610be4578063a08e671f14610c0f578063a457c2d714610c3a578063a52dc2e714610c775761041b565b806388790a68116101ed57806388790a6814610b235780638da5cb5b14610b4e5780638f70ccf714610b79578063914eb66a14610ba257806395d89b4114610bb95761041b565b80637d73900f14610a7b578063807c2d9c14610aa457806382eefb4314610acf578063844d591c14610afa5761041b565b80632e97766d11610324578063512f9170116102ac5780635881f3ef1161027b5780635881f3ef1461098057806361a23c69146109bd5780636ad1fe02146109e857806370a0823114610a135780637d1db4a514610a505761041b565b8063512f9170146108c25780635342acb4146108ed578063557ed1ba1461092a57806357a5802f146109555761041b565b80633bbac579116102f35780633bbac579146107cb5780633ecad271146108085780634a74bb02146108455780634cb80fd51461087057806350b20cac146108995761041b565b80632e97766d1461070f578063313ce5671461073a57806339509351146107655780633b97084a146107a25761041b565b806318160ddd116103a75780632563ae83116103765780632563ae831461063e57806327c8f835146106675780632af38605146106925780632b112e49146106bb5780632c4b2334146106e65761041b565b806318160ddd146105845780631870517a146105af5780632198cf6c146105d857806323b872dd146106015761041b565b80630d5e5c87116103e35780630d5e5c87146104da5780631245e3471461050357806314353ed11461052e5780631694505e146105595761041b565b806303c0f5d4146104205780630504bc7a1461044957806306fdde0314610472578063095ea7b31461049d5761041b565b3661041b57005b600080fd5b34801561042c57600080fd5b506104476004803603810190610442919061489b565b6110b7565b005b34801561045557600080fd5b50610470600480360381019061046b91906148db565b6111a7565b005b34801561047e57600080fd5b50610487611280565b6040516104949190614998565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf91906149f0565b611312565b6040516104d19190614a3f565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614a5a565b611330565b005b34801561050f57600080fd5b50610518611410565b6040516105259190614ace565b60405180910390f35b34801561053a57600080fd5b50610543611436565b6040516105509190614af8565b60405180910390f35b34801561056557600080fd5b5061056e611440565b60405161057b9190614b72565b60405180910390f35b34801561059057600080fd5b50610599611466565b6040516105a69190614af8565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190614a5a565b611470565b005b3480156105e457600080fd5b506105ff60048036038101906105fa919061489b565b611550565b005b34801561060d57600080fd5b5061062860048036038101906106239190614b8d565b611640565b6040516106359190614a3f565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190614be0565b61171a565b005b34801561067357600080fd5b5061067c6117cc565b6040516106899190614c1c565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b4919061489b565b6117f0565b005b3480156106c757600080fd5b506106d06118e0565b6040516106dd9190614af8565b60405180910390f35b3480156106f257600080fd5b5061070d600480360381019061070891906148db565b611924565b005b34801561071b57600080fd5b506107246119fd565b6040516107319190614af8565b60405180910390f35b34801561074657600080fd5b5061074f611a05565b60405161075c9190614c53565b60405180910390f35b34801561077157600080fd5b5061078c600480360381019061078791906149f0565b611a1c565b6040516107999190614a3f565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190614c6e565b611acf565b005b3480156107d757600080fd5b506107f260048036038101906107ed91906148db565b611b6e565b6040516107ff9190614a3f565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a91906148db565b611b8e565b60405161083c9190614a3f565b60405180910390f35b34801561085157600080fd5b5061085a611bae565b6040516108679190614a3f565b60405180910390f35b34801561087c57600080fd5b50610897600480360381019061089291906148db565b611bc1565b005b3480156108a557600080fd5b506108c060048036038101906108bb9190614d00565b611c9a565b005b3480156108ce57600080fd5b506108d7611de2565b6040516108e49190614c1c565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f91906148db565b611e08565b6040516109219190614a3f565b60405180910390f35b34801561093657600080fd5b5061093f611e28565b60405161094c9190614af8565b60405180910390f35b34801561096157600080fd5b5061096a611e30565b6040516109779190614af8565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906148db565b611e36565b6040516109b49190614c1c565b60405180910390f35b3480156109c957600080fd5b506109d2612339565b6040516109df9190614af8565b60405180910390f35b3480156109f457600080fd5b506109fd61233f565b604051610a0a9190614af8565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a3591906148db565b612345565b604051610a479190614af8565b60405180910390f35b348015610a5c57600080fd5b50610a6561238e565b604051610a729190614af8565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190614c6e565b612394565b005b348015610ab057600080fd5b50610ab9612433565b604051610ac69190614af8565b60405180910390f35b348015610adb57600080fd5b50610ae4612439565b604051610af19190614af8565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c919061489b565b61243f565b005b348015610b2f57600080fd5b50610b3861252f565b604051610b459190614af8565b60405180910390f35b348015610b5a57600080fd5b50610b63612535565b604051610b709190614c1c565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190614be0565b61255e565b005b348015610bae57600080fd5b50610bb7612610565b005b348015610bc557600080fd5b50610bce612765565b604051610bdb9190614998565b60405180910390f35b348015610bf057600080fd5b50610bf96127f7565b604051610c069190614af8565b60405180910390f35b348015610c1b57600080fd5b50610c24612801565b604051610c319190614af8565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c91906149f0565b612807565b604051610c6e9190614a3f565b60405180910390f35b348015610c8357600080fd5b50610c8c6128d4565b604051610c999190614af8565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc49190614be0565b6128da565b005b348015610cd757600080fd5b50610ce061298c565b604051610ced9190614af8565b60405180910390f35b348015610d0257600080fd5b50610d1d6004803603810190610d1891906148db565b612992565b604051610d2a9190614a3f565b60405180910390f35b348015610d3f57600080fd5b50610d5a6004803603810190610d5591906149f0565b6129b2565b604051610d679190614a3f565b60405180910390f35b348015610d7c57600080fd5b50610d976004803603810190610d929190614a5a565b6129d1565b005b348015610da557600080fd5b50610dae612ab1565b604051610dbb9190614af8565b60405180910390f35b348015610dd057600080fd5b50610deb6004803603810190610de69190614be0565b612ab7565b005b348015610df957600080fd5b50610e02612ba0565b604051610e0f9190614af8565b60405180910390f35b348015610e2457600080fd5b50610e2d612ba6565b604051610e3a9190614c1c565b60405180910390f35b348015610e4f57600080fd5b50610e58612bcc565b604051610e659190614af8565b60405180910390f35b348015610e7a57600080fd5b50610e956004803603810190610e9091906148db565b612bd2565b604051610ea29190614a3f565b60405180910390f35b348015610eb757600080fd5b50610ec0612bf2565b604051610ecd9190614af8565b60405180910390f35b348015610ee257600080fd5b50610eeb612bf8565b604051610ef89190614ace565b60405180910390f35b348015610f0d57600080fd5b50610f16612c1e565b604051610f239190614a3f565b60405180910390f35b348015610f3857600080fd5b50610f41612c31565b604051610f4e9190614af8565b60405180910390f35b348015610f6357600080fd5b50610f7e6004803603810190610f799190614d60565b612c37565b604051610f8b9190614af8565b60405180910390f35b348015610fa057600080fd5b50610fbb6004803603810190610fb69190614c6e565b612cbe565b005b348015610fc957600080fd5b50610fe46004803603810190610fdf919061489b565b612d5d565b005b348015610ff257600080fd5b50610ffb612e4d565b6040516110089190614af8565b60405180910390f35b34801561101d57600080fd5b5061103860048036038101906110339190614c6e565b612e53565b005b34801561104657600080fd5b50611061600480360381019061105c91906148db565b612ef2565b005b34801561106f57600080fd5b5061108a6004803603810190611085919061489b565b6130b3565b005b34801561109857600080fd5b506110a16131a3565b6040516110ae9190614a3f565b60405180910390f35b6110bf613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390614dec565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111af613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390614dec565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461128f90614e3b565b80601f01602080910402602001604051908101604052809291908181526020018280546112bb90614e3b565b80156113085780601f106112dd57610100808354040283529160200191611308565b820191906000526020600020905b8154815290600101906020018083116112eb57829003601f168201915b5050505050905090565b600061132661131f613214565b848461321c565b6001905092915050565b611338613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90614dec565b60405180910390fd5b8260158190555081601681905550806017819055506114056017546113f76016546015546131b690919063ffffffff16565b6131b690919063ffffffff16565b601c81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b611478613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614dec565b60405180910390fd5b8260128190555081601381905550806014819055506115456014546115376013546012546131b690919063ffffffff16565b6131b690919063ffffffff16565b601b81905550505050565b611558613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90614dec565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061164d8484846133e5565b5061170f8461165a613214565b61170a8560405180606001604052806028815260200161584560289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116c0613214565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b61321c565b600190509392505050565b611722613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690614dec565b60405180910390fd5b80602360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6117f8613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c90614dec565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061191f61190e7f0000000000000000000000000000000000000000000000000000000000000000612345565b601e54613bc990919063ffffffff16565b905090565b61192c613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b090614dec565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b6000611ac5611a29613214565b84611ac08560096000611a3a613214565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b61321c565b6001905092915050565b611ad7613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b90614dec565b60405180910390fd5b8060218190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602360159054906101000a900460ff1681565b611bc9613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90614dec565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ca2613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614dec565b60405180910390fd5b60c98383905010611d3f57600080fd5b60005b83839050811015611ddc578160116000868685818110611d6557611d64614e6c565b5b9050602002016020810190611d7a91906148db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611dd590614eca565b9050611d42565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60185481565b6000611e40613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec490614dec565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f419190614f27565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcc9190614f27565b6040518363ffffffff1660e01b8152600401611fe9929190614f54565b602060405180830381865afa158015612006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202a9190614f27565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cf9190614f27565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190614f27565b6040518363ffffffff1660e01b8152600401612177929190614f54565b6020604051808303816000875af1158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba9190614f27565b91505b81602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60195481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b61239c613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242090614dec565b60405180910390fd5b80600f8190555050565b60205481565b601c5481565b612447613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614dec565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612566613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea90614dec565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b612618613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90614dec565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461277490614e3b565b80601f01602080910402602001604051908101604052809291908181526020018280546127a090614e3b565b80156127ed5780601f106127c2576101008083540402835291602001916127ed565b820191906000526020600020905b8154815290600101906020018083116127d057829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b60006128ca612814613214565b846128c58560405180606001604052806025815260200161586d602591396009600061283e613214565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b61321c565b6001905092915050565b600f5481565b6128e2613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296690614dec565b60405180910390fd5b80602360166101000a81548160ff02191690831515021790555050565b601a5481565b60116020528060005260406000206000915054906101000a900460ff1681565b60006129c66129bf613214565b84846133e5565b506001905092915050565b6129d9613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5d90614dec565b60405180910390fd5b826018819055508160198190555080601a81905550612aa6601a54612a986019546018546131b690919063ffffffff16565b6131b690919063ffffffff16565b601d81905550505050565b60145481565b612abf613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4390614dec565b60405180910390fd5b80602360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612b959190614a3f565b60405180910390a150565b60135481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360169054906101000a900460ff1681565b60125481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612cc6613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4a90614dec565b60405180910390fd5b80601f8190555050565b612d65613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de990614dec565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612e5b613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90614dec565b60405180910390fd5b8060208190555050565b612efa613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7e90614dec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fed90614fef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6130bb613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313f90614dec565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602360179054906101000a900460ff1681565b60008082846131c5919061500f565b90508381101561320a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132019061508f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361328b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328290615121565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f1906151b3565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133d89190614af8565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344c90615245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134bb906152d7565b60405180910390fd5b600760149054906101000a900460ff1661354e576134e0612535565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461354d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354490615369565b60405180910390fd5b5b602360149054906101000a900460ff16156135755761356e848484613c13565b9050613b5e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561361f5750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561362c5743600c819055505b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036136f157600f54600c54613691919061500f565b43116136f0576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b6136f9612535565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156137675750613737612535565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613777576137768483613de6565b5b600061378230612345565b9050600060215482101590508080156137a85750602360149054906101000a900460ff16155b80156137fe5750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138165750602360159054906101000a900460ff165b1561384057602360169054906101000a900460ff16156138365760215491505b61383f82613f10565b5b6138c9846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139af5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139c3576139be878787614101565b6139c5565b845b9050602360179054906101000a900460ff168015613a2d5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a5c57602054613a5082613a4289612345565b6131b690919063ffffffff16565b1115613a5b57600080fd5b5b613aae81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b4e9190614af8565b60405180910390a3600193505050505b9392505050565b6000838311158290613bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba49190614998565b60405180910390fd5b5060008385613bbc9190615389565b9050809150509392505050565b6000613c0b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b65565b905092915050565b6000613c9e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd39190614af8565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e6a90615409565b60405180910390fd5b601f5481111580613ecd5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0390615475565b60405180910390fd5b5050565b6001602360146101000a81548160ff0219169083151502179055506000613f696002613f5b601d54613f4d6018548761432890919063ffffffff16565b6143a290919063ffffffff16565b6143a290919063ffffffff16565b90506000613f808284613bc990919063ffffffff16565b9050613f8b816143ec565b60004790506000613fbc613fab60026018546143a290919063ffffffff16565b601d54613bc990919063ffffffff16565b90506000613ffa6002613fec84613fde6018548861432890919063ffffffff16565b6143a290919063ffffffff16565b6143a290919063ffffffff16565b9050600061402583614017601a548761432890919063ffffffff16565b6143a290919063ffffffff16565b9050600061404e826140408588613bc990919063ffffffff16565b613bc990919063ffffffff16565b9050600081111561408657614085600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614668565b5b60008211156140bc576140bb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614668565b5b6000831180156140cc5750600087115b156140dc576140db87846146b3565b5b505050505050506000602360146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614189576141826064614174601b548661432890919063ffffffff16565b6143a290919063ffffffff16565b9050614207565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142065761420360646141f5601c548661432890919063ffffffff16565b6143a290919063ffffffff16565b90505b5b600081111561430b5761426281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143029190614af8565b60405180910390a35b61431e8184613bc990919063ffffffff16565b9150509392505050565b600080830361433a576000905061439c565b600082846143489190615495565b90508284826143579190615506565b14614397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161438e906155a9565b60405180910390fd5b809150505b92915050565b60006143e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614798565b905092915050565b6000600267ffffffffffffffff811115614409576144086155c9565b5b6040519080825280602002602001820160405280156144375781602001602082028036833780820191505090505b509050308160008151811061444f5761444e614e6c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451a9190614f27565b8160018151811061452e5761452d614e6c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061459530602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461321c565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016145f99594939291906156f1565b600060405180830381600087803b15801561461357600080fd5b505af1158015614627573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161465c92919061574b565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156146ae573d6000803e3d6000fd5b505050565b6146e030602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461321c565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061472c612535565b426040518863ffffffff1660e01b815260040161474e9695949392919061577b565b60606040518083038185885af115801561476c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061479191906157f1565b5050505050565b600080831182906147df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147d69190614998565b60405180910390fd5b50600083856147ee9190615506565b9050809150509392505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061483082614805565b9050919050565b61484081614825565b811461484b57600080fd5b50565b60008135905061485d81614837565b92915050565b60008115159050919050565b61487881614863565b811461488357600080fd5b50565b6000813590506148958161486f565b92915050565b600080604083850312156148b2576148b16147fb565b5b60006148c08582860161484e565b92505060206148d185828601614886565b9150509250929050565b6000602082840312156148f1576148f06147fb565b5b60006148ff8482850161484e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614942578082015181840152602081019050614927565b60008484015250505050565b6000601f19601f8301169050919050565b600061496a82614908565b6149748185614913565b9350614984818560208601614924565b61498d8161494e565b840191505092915050565b600060208201905081810360008301526149b2818461495f565b905092915050565b6000819050919050565b6149cd816149ba565b81146149d857600080fd5b50565b6000813590506149ea816149c4565b92915050565b60008060408385031215614a0757614a066147fb565b5b6000614a158582860161484e565b9250506020614a26858286016149db565b9150509250929050565b614a3981614863565b82525050565b6000602082019050614a546000830184614a30565b92915050565b600080600060608486031215614a7357614a726147fb565b5b6000614a81868287016149db565b9350506020614a92868287016149db565b9250506040614aa3868287016149db565b9150509250925092565b6000614ab882614805565b9050919050565b614ac881614aad565b82525050565b6000602082019050614ae36000830184614abf565b92915050565b614af2816149ba565b82525050565b6000602082019050614b0d6000830184614ae9565b92915050565b6000819050919050565b6000614b38614b33614b2e84614805565b614b13565b614805565b9050919050565b6000614b4a82614b1d565b9050919050565b6000614b5c82614b3f565b9050919050565b614b6c81614b51565b82525050565b6000602082019050614b876000830184614b63565b92915050565b600080600060608486031215614ba657614ba56147fb565b5b6000614bb48682870161484e565b9350506020614bc58682870161484e565b9250506040614bd6868287016149db565b9150509250925092565b600060208284031215614bf657614bf56147fb565b5b6000614c0484828501614886565b91505092915050565b614c1681614825565b82525050565b6000602082019050614c316000830184614c0d565b92915050565b600060ff82169050919050565b614c4d81614c37565b82525050565b6000602082019050614c686000830184614c44565b92915050565b600060208284031215614c8457614c836147fb565b5b6000614c92848285016149db565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614cc057614cbf614c9b565b5b8235905067ffffffffffffffff811115614cdd57614cdc614ca0565b5b602083019150836020820283011115614cf957614cf8614ca5565b5b9250929050565b600080600060408486031215614d1957614d186147fb565b5b600084013567ffffffffffffffff811115614d3757614d36614800565b5b614d4386828701614caa565b93509350506020614d5686828701614886565b9150509250925092565b60008060408385031215614d7757614d766147fb565b5b6000614d858582860161484e565b9250506020614d968582860161484e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614dd6602083614913565b9150614de182614da0565b602082019050919050565b60006020820190508181036000830152614e0581614dc9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614e5357607f821691505b602082108103614e6657614e65614e0c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ed5826149ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f0757614f06614e9b565b5b600182019050919050565b600081519050614f2181614837565b92915050565b600060208284031215614f3d57614f3c6147fb565b5b6000614f4b84828501614f12565b91505092915050565b6000604082019050614f696000830185614c0d565b614f766020830184614c0d565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fd9602683614913565b9150614fe482614f7d565b604082019050919050565b6000602082019050818103600083015261500881614fcc565b9050919050565b600061501a826149ba565b9150615025836149ba565b925082820190508082111561503d5761503c614e9b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615079601b83614913565b915061508482615043565b602082019050919050565b600060208201905081810360008301526150a88161506c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061510b602483614913565b9150615116826150af565b604082019050919050565b6000602082019050818103600083015261513a816150fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061519d602283614913565b91506151a882615141565b604082019050919050565b600060208201905081810360008301526151cc81615190565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061522f602583614913565b915061523a826151d3565b604082019050919050565b6000602082019050818103600083015261525e81615222565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006152c1602383614913565b91506152cc82615265565b604082019050919050565b600060208201905081810360008301526152f0816152b4565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000615353603f83614913565b915061535e826152f7565b604082019050919050565b6000602082019050818103600083015261538281615346565b9050919050565b6000615394826149ba565b915061539f836149ba565b92508282039050818111156153b7576153b6614e9b565b5b92915050565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b60006153f3601383614913565b91506153fe826153bd565b602082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061545f601183614913565b915061546a82615429565b602082019050919050565b6000602082019050818103600083015261548e81615452565b9050919050565b60006154a0826149ba565b91506154ab836149ba565b92508282026154b9816149ba565b915082820484148315176154d0576154cf614e9b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615511826149ba565b915061551c836149ba565b92508261552c5761552b6154d7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615593602183614913565b915061559e82615537565b604082019050919050565b600060208201905081810360008301526155c281615586565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061561d615618615613846155f8565b614b13565b6149ba565b9050919050565b61562d81615602565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61566881614825565b82525050565b600061567a838361565f565b60208301905092915050565b6000602082019050919050565b600061569e82615633565b6156a8818561563e565b93506156b38361564f565b8060005b838110156156e45781516156cb888261566e565b97506156d683615686565b9250506001810190506156b7565b5085935050505092915050565b600060a0820190506157066000830188614ae9565b6157136020830187615624565b81810360408301526157258186615693565b90506157346060830185614c0d565b6157416080830184614ae9565b9695505050505050565b60006040820190506157606000830185614ae9565b81810360208301526157728184615693565b90509392505050565b600060c0820190506157906000830189614c0d565b61579d6020830188614ae9565b6157aa6040830187615624565b6157b76060830186615624565b6157c46080830185614c0d565b6157d160a0830184614ae9565b979650505050505050565b6000815190506157eb816149c4565b92915050565b60008060006060848603121561580a576158096147fb565b5b6000615818868287016157dc565b9350506020615829868287016157dc565b925050604061583a868287016157dc565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122031bd6360ff5b7c8dd4c087ec03a74df3d8b88df12e86133306c3faa41163ce5a64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106104145760003560e01c80637d73900f1161021e578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610fe6578063f1d5f51714611011578063f2fde38b1461103a578063f84ba65d14611063578063f872858a1461108c5761041b565b8063dc44b6a014610f2c578063dd62ed3e14610f57578063ec28438a14610f94578063ef422a1814610fbd5761041b565b8063c8607952116100f2578063c860795214610e43578063c867d60b14610e6e578063cab0347114610eab578063d158272d14610ed6578063da00097d14610f015761041b565b8063c469b6dd14610d99578063c49b9a8014610dc4578063c5d2418914610ded578063c816841b14610e185761041b565b8063a073d37f116101a6578063a5d69d1f11610175578063a5d69d1f14610ca2578063a83f53a714610ccb578063a8e1515014610cf6578063a9059cbb14610d33578063c2d4640e14610d705761041b565b8063a073d37f14610be4578063a08e671f14610c0f578063a457c2d714610c3a578063a52dc2e714610c775761041b565b806388790a68116101ed57806388790a6814610b235780638da5cb5b14610b4e5780638f70ccf714610b79578063914eb66a14610ba257806395d89b4114610bb95761041b565b80637d73900f14610a7b578063807c2d9c14610aa457806382eefb4314610acf578063844d591c14610afa5761041b565b80632e97766d11610324578063512f9170116102ac5780635881f3ef1161027b5780635881f3ef1461098057806361a23c69146109bd5780636ad1fe02146109e857806370a0823114610a135780637d1db4a514610a505761041b565b8063512f9170146108c25780635342acb4146108ed578063557ed1ba1461092a57806357a5802f146109555761041b565b80633bbac579116102f35780633bbac579146107cb5780633ecad271146108085780634a74bb02146108455780634cb80fd51461087057806350b20cac146108995761041b565b80632e97766d1461070f578063313ce5671461073a57806339509351146107655780633b97084a146107a25761041b565b806318160ddd116103a75780632563ae83116103765780632563ae831461063e57806327c8f835146106675780632af38605146106925780632b112e49146106bb5780632c4b2334146106e65761041b565b806318160ddd146105845780631870517a146105af5780632198cf6c146105d857806323b872dd146106015761041b565b80630d5e5c87116103e35780630d5e5c87146104da5780631245e3471461050357806314353ed11461052e5780631694505e146105595761041b565b806303c0f5d4146104205780630504bc7a1461044957806306fdde0314610472578063095ea7b31461049d5761041b565b3661041b57005b600080fd5b34801561042c57600080fd5b506104476004803603810190610442919061489b565b6110b7565b005b34801561045557600080fd5b50610470600480360381019061046b91906148db565b6111a7565b005b34801561047e57600080fd5b50610487611280565b6040516104949190614998565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf91906149f0565b611312565b6040516104d19190614a3f565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614a5a565b611330565b005b34801561050f57600080fd5b50610518611410565b6040516105259190614ace565b60405180910390f35b34801561053a57600080fd5b50610543611436565b6040516105509190614af8565b60405180910390f35b34801561056557600080fd5b5061056e611440565b60405161057b9190614b72565b60405180910390f35b34801561059057600080fd5b50610599611466565b6040516105a69190614af8565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190614a5a565b611470565b005b3480156105e457600080fd5b506105ff60048036038101906105fa919061489b565b611550565b005b34801561060d57600080fd5b5061062860048036038101906106239190614b8d565b611640565b6040516106359190614a3f565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190614be0565b61171a565b005b34801561067357600080fd5b5061067c6117cc565b6040516106899190614c1c565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b4919061489b565b6117f0565b005b3480156106c757600080fd5b506106d06118e0565b6040516106dd9190614af8565b60405180910390f35b3480156106f257600080fd5b5061070d600480360381019061070891906148db565b611924565b005b34801561071b57600080fd5b506107246119fd565b6040516107319190614af8565b60405180910390f35b34801561074657600080fd5b5061074f611a05565b60405161075c9190614c53565b60405180910390f35b34801561077157600080fd5b5061078c600480360381019061078791906149f0565b611a1c565b6040516107999190614a3f565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190614c6e565b611acf565b005b3480156107d757600080fd5b506107f260048036038101906107ed91906148db565b611b6e565b6040516107ff9190614a3f565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a91906148db565b611b8e565b60405161083c9190614a3f565b60405180910390f35b34801561085157600080fd5b5061085a611bae565b6040516108679190614a3f565b60405180910390f35b34801561087c57600080fd5b50610897600480360381019061089291906148db565b611bc1565b005b3480156108a557600080fd5b506108c060048036038101906108bb9190614d00565b611c9a565b005b3480156108ce57600080fd5b506108d7611de2565b6040516108e49190614c1c565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f91906148db565b611e08565b6040516109219190614a3f565b60405180910390f35b34801561093657600080fd5b5061093f611e28565b60405161094c9190614af8565b60405180910390f35b34801561096157600080fd5b5061096a611e30565b6040516109779190614af8565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906148db565b611e36565b6040516109b49190614c1c565b60405180910390f35b3480156109c957600080fd5b506109d2612339565b6040516109df9190614af8565b60405180910390f35b3480156109f457600080fd5b506109fd61233f565b604051610a0a9190614af8565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a3591906148db565b612345565b604051610a479190614af8565b60405180910390f35b348015610a5c57600080fd5b50610a6561238e565b604051610a729190614af8565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190614c6e565b612394565b005b348015610ab057600080fd5b50610ab9612433565b604051610ac69190614af8565b60405180910390f35b348015610adb57600080fd5b50610ae4612439565b604051610af19190614af8565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c919061489b565b61243f565b005b348015610b2f57600080fd5b50610b3861252f565b604051610b459190614af8565b60405180910390f35b348015610b5a57600080fd5b50610b63612535565b604051610b709190614c1c565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b9190614be0565b61255e565b005b348015610bae57600080fd5b50610bb7612610565b005b348015610bc557600080fd5b50610bce612765565b604051610bdb9190614998565b60405180910390f35b348015610bf057600080fd5b50610bf96127f7565b604051610c069190614af8565b60405180910390f35b348015610c1b57600080fd5b50610c24612801565b604051610c319190614af8565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c91906149f0565b612807565b604051610c6e9190614a3f565b60405180910390f35b348015610c8357600080fd5b50610c8c6128d4565b604051610c999190614af8565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc49190614be0565b6128da565b005b348015610cd757600080fd5b50610ce061298c565b604051610ced9190614af8565b60405180910390f35b348015610d0257600080fd5b50610d1d6004803603810190610d1891906148db565b612992565b604051610d2a9190614a3f565b60405180910390f35b348015610d3f57600080fd5b50610d5a6004803603810190610d5591906149f0565b6129b2565b604051610d679190614a3f565b60405180910390f35b348015610d7c57600080fd5b50610d976004803603810190610d929190614a5a565b6129d1565b005b348015610da557600080fd5b50610dae612ab1565b604051610dbb9190614af8565b60405180910390f35b348015610dd057600080fd5b50610deb6004803603810190610de69190614be0565b612ab7565b005b348015610df957600080fd5b50610e02612ba0565b604051610e0f9190614af8565b60405180910390f35b348015610e2457600080fd5b50610e2d612ba6565b604051610e3a9190614c1c565b60405180910390f35b348015610e4f57600080fd5b50610e58612bcc565b604051610e659190614af8565b60405180910390f35b348015610e7a57600080fd5b50610e956004803603810190610e9091906148db565b612bd2565b604051610ea29190614a3f565b60405180910390f35b348015610eb757600080fd5b50610ec0612bf2565b604051610ecd9190614af8565b60405180910390f35b348015610ee257600080fd5b50610eeb612bf8565b604051610ef89190614ace565b60405180910390f35b348015610f0d57600080fd5b50610f16612c1e565b604051610f239190614a3f565b60405180910390f35b348015610f3857600080fd5b50610f41612c31565b604051610f4e9190614af8565b60405180910390f35b348015610f6357600080fd5b50610f7e6004803603810190610f799190614d60565b612c37565b604051610f8b9190614af8565b60405180910390f35b348015610fa057600080fd5b50610fbb6004803603810190610fb69190614c6e565b612cbe565b005b348015610fc957600080fd5b50610fe46004803603810190610fdf919061489b565b612d5d565b005b348015610ff257600080fd5b50610ffb612e4d565b6040516110089190614af8565b60405180910390f35b34801561101d57600080fd5b5061103860048036038101906110339190614c6e565b612e53565b005b34801561104657600080fd5b50611061600480360381019061105c91906148db565b612ef2565b005b34801561106f57600080fd5b5061108a6004803603810190611085919061489b565b6130b3565b005b34801561109857600080fd5b506110a16131a3565b6040516110ae9190614a3f565b60405180910390f35b6110bf613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390614dec565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111af613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390614dec565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461128f90614e3b565b80601f01602080910402602001604051908101604052809291908181526020018280546112bb90614e3b565b80156113085780601f106112dd57610100808354040283529160200191611308565b820191906000526020600020905b8154815290600101906020018083116112eb57829003601f168201915b5050505050905090565b600061132661131f613214565b848461321c565b6001905092915050565b611338613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90614dec565b60405180910390fd5b8260158190555081601681905550806017819055506114056017546113f76016546015546131b690919063ffffffff16565b6131b690919063ffffffff16565b601c81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b611478613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614dec565b60405180910390fd5b8260128190555081601381905550806014819055506115456014546115376013546012546131b690919063ffffffff16565b6131b690919063ffffffff16565b601b81905550505050565b611558613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90614dec565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061164d8484846133e5565b5061170f8461165a613214565b61170a8560405180606001604052806028815260200161584560289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116c0613214565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b61321c565b600190509392505050565b611722613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690614dec565b60405180910390fd5b80602360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6117f8613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c90614dec565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061191f61190e7f000000000000000000000000000000000000000000000000000000000000dead612345565b601e54613bc990919063ffffffff16565b905090565b61192c613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b090614dec565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b6000611ac5611a29613214565b84611ac08560096000611a3a613214565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b61321c565b6001905092915050565b611ad7613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b90614dec565b60405180910390fd5b8060218190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602360159054906101000a900460ff1681565b611bc9613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d90614dec565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ca2613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614dec565b60405180910390fd5b60c98383905010611d3f57600080fd5b60005b83839050811015611ddc578160116000868685818110611d6557611d64614e6c565b5b9050602002016020810190611d7a91906148db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611dd590614eca565b9050611d42565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60185481565b6000611e40613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec490614dec565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f419190614f27565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcc9190614f27565b6040518363ffffffff1660e01b8152600401611fe9929190614f54565b602060405180830381865afa158015612006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202a9190614f27565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cf9190614f27565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190614f27565b6040518363ffffffff1660e01b8152600401612177929190614f54565b6020604051808303816000875af1158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba9190614f27565b91505b81602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60195481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b61239c613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242090614dec565b60405180910390fd5b80600f8190555050565b60205481565b601c5481565b612447613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614dec565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612566613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea90614dec565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b612618613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90614dec565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461277490614e3b565b80601f01602080910402602001604051908101604052809291908181526020018280546127a090614e3b565b80156127ed5780601f106127c2576101008083540402835291602001916127ed565b820191906000526020600020905b8154815290600101906020018083116127d057829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b60006128ca612814613214565b846128c58560405180606001604052806025815260200161586d602591396009600061283e613214565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b61321c565b6001905092915050565b600f5481565b6128e2613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296690614dec565b60405180910390fd5b80602360166101000a81548160ff02191690831515021790555050565b601a5481565b60116020528060005260406000206000915054906101000a900460ff1681565b60006129c66129bf613214565b84846133e5565b506001905092915050565b6129d9613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5d90614dec565b60405180910390fd5b826018819055508160198190555080601a81905550612aa6601a54612a986019546018546131b690919063ffffffff16565b6131b690919063ffffffff16565b601d81905550505050565b60145481565b612abf613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4390614dec565b60405180910390fd5b80602360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612b959190614a3f565b60405180910390a150565b60135481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360169054906101000a900460ff1681565b60125481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612cc6613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4a90614dec565b60405180910390fd5b80601f8190555050565b612d65613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de990614dec565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612e5b613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90614dec565b60405180910390fd5b8060208190555050565b612efa613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7e90614dec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fed90614fef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6130bb613214565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313f90614dec565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602360179054906101000a900460ff1681565b60008082846131c5919061500f565b90508381101561320a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132019061508f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361328b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328290615121565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f1906151b3565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133d89190614af8565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344c90615245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134bb906152d7565b60405180910390fd5b600760149054906101000a900460ff1661354e576134e0612535565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461354d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354490615369565b60405180910390fd5b5b602360149054906101000a900460ff16156135755761356e848484613c13565b9050613b5e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561361f5750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561362c5743600c819055505b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036136f157600f54600c54613691919061500f565b43116136f0576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b6136f9612535565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156137675750613737612535565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613777576137768483613de6565b5b600061378230612345565b9050600060215482101590508080156137a85750602360149054906101000a900460ff16155b80156137fe5750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138165750602360159054906101000a900460ff165b1561384057602360169054906101000a900460ff16156138365760215491505b61383f82613f10565b5b6138c9846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139af5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139c3576139be878787614101565b6139c5565b845b9050602360179054906101000a900460ff168015613a2d5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a5c57602054613a5082613a4289612345565b6131b690919063ffffffff16565b1115613a5b57600080fd5b5b613aae81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b4e9190614af8565b60405180910390a3600193505050505b9392505050565b6000838311158290613bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba49190614998565b60405180910390fd5b5060008385613bbc9190615389565b9050809150509392505050565b6000613c0b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b65565b905092915050565b6000613c9e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b659092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd39190614af8565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e6a90615409565b60405180910390fd5b601f5481111580613ecd5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0390615475565b60405180910390fd5b5050565b6001602360146101000a81548160ff0219169083151502179055506000613f696002613f5b601d54613f4d6018548761432890919063ffffffff16565b6143a290919063ffffffff16565b6143a290919063ffffffff16565b90506000613f808284613bc990919063ffffffff16565b9050613f8b816143ec565b60004790506000613fbc613fab60026018546143a290919063ffffffff16565b601d54613bc990919063ffffffff16565b90506000613ffa6002613fec84613fde6018548861432890919063ffffffff16565b6143a290919063ffffffff16565b6143a290919063ffffffff16565b9050600061402583614017601a548761432890919063ffffffff16565b6143a290919063ffffffff16565b9050600061404e826140408588613bc990919063ffffffff16565b613bc990919063ffffffff16565b9050600081111561408657614085600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614668565b5b60008211156140bc576140bb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614668565b5b6000831180156140cc5750600087115b156140dc576140db87846146b3565b5b505050505050506000602360146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614189576141826064614174601b548661432890919063ffffffff16565b6143a290919063ffffffff16565b9050614207565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142065761420360646141f5601c548661432890919063ffffffff16565b6143a290919063ffffffff16565b90505b5b600081111561430b5761426281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b690919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143029190614af8565b60405180910390a35b61431e8184613bc990919063ffffffff16565b9150509392505050565b600080830361433a576000905061439c565b600082846143489190615495565b90508284826143579190615506565b14614397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161438e906155a9565b60405180910390fd5b809150505b92915050565b60006143e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614798565b905092915050565b6000600267ffffffffffffffff811115614409576144086155c9565b5b6040519080825280602002602001820160405280156144375781602001602082028036833780820191505090505b509050308160008151811061444f5761444e614e6c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451a9190614f27565b8160018151811061452e5761452d614e6c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061459530602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461321c565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016145f99594939291906156f1565b600060405180830381600087803b15801561461357600080fd5b505af1158015614627573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161465c92919061574b565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156146ae573d6000803e3d6000fd5b505050565b6146e030602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461321c565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061472c612535565b426040518863ffffffff1660e01b815260040161474e9695949392919061577b565b60606040518083038185885af115801561476c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061479191906157f1565b5050505050565b600080831182906147df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147d69190614998565b60405180910390fd5b50600083856147ee9190615506565b9050809150509392505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061483082614805565b9050919050565b61484081614825565b811461484b57600080fd5b50565b60008135905061485d81614837565b92915050565b60008115159050919050565b61487881614863565b811461488357600080fd5b50565b6000813590506148958161486f565b92915050565b600080604083850312156148b2576148b16147fb565b5b60006148c08582860161484e565b92505060206148d185828601614886565b9150509250929050565b6000602082840312156148f1576148f06147fb565b5b60006148ff8482850161484e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614942578082015181840152602081019050614927565b60008484015250505050565b6000601f19601f8301169050919050565b600061496a82614908565b6149748185614913565b9350614984818560208601614924565b61498d8161494e565b840191505092915050565b600060208201905081810360008301526149b2818461495f565b905092915050565b6000819050919050565b6149cd816149ba565b81146149d857600080fd5b50565b6000813590506149ea816149c4565b92915050565b60008060408385031215614a0757614a066147fb565b5b6000614a158582860161484e565b9250506020614a26858286016149db565b9150509250929050565b614a3981614863565b82525050565b6000602082019050614a546000830184614a30565b92915050565b600080600060608486031215614a7357614a726147fb565b5b6000614a81868287016149db565b9350506020614a92868287016149db565b9250506040614aa3868287016149db565b9150509250925092565b6000614ab882614805565b9050919050565b614ac881614aad565b82525050565b6000602082019050614ae36000830184614abf565b92915050565b614af2816149ba565b82525050565b6000602082019050614b0d6000830184614ae9565b92915050565b6000819050919050565b6000614b38614b33614b2e84614805565b614b13565b614805565b9050919050565b6000614b4a82614b1d565b9050919050565b6000614b5c82614b3f565b9050919050565b614b6c81614b51565b82525050565b6000602082019050614b876000830184614b63565b92915050565b600080600060608486031215614ba657614ba56147fb565b5b6000614bb48682870161484e565b9350506020614bc58682870161484e565b9250506040614bd6868287016149db565b9150509250925092565b600060208284031215614bf657614bf56147fb565b5b6000614c0484828501614886565b91505092915050565b614c1681614825565b82525050565b6000602082019050614c316000830184614c0d565b92915050565b600060ff82169050919050565b614c4d81614c37565b82525050565b6000602082019050614c686000830184614c44565b92915050565b600060208284031215614c8457614c836147fb565b5b6000614c92848285016149db565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614cc057614cbf614c9b565b5b8235905067ffffffffffffffff811115614cdd57614cdc614ca0565b5b602083019150836020820283011115614cf957614cf8614ca5565b5b9250929050565b600080600060408486031215614d1957614d186147fb565b5b600084013567ffffffffffffffff811115614d3757614d36614800565b5b614d4386828701614caa565b93509350506020614d5686828701614886565b9150509250925092565b60008060408385031215614d7757614d766147fb565b5b6000614d858582860161484e565b9250506020614d968582860161484e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614dd6602083614913565b9150614de182614da0565b602082019050919050565b60006020820190508181036000830152614e0581614dc9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614e5357607f821691505b602082108103614e6657614e65614e0c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ed5826149ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f0757614f06614e9b565b5b600182019050919050565b600081519050614f2181614837565b92915050565b600060208284031215614f3d57614f3c6147fb565b5b6000614f4b84828501614f12565b91505092915050565b6000604082019050614f696000830185614c0d565b614f766020830184614c0d565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fd9602683614913565b9150614fe482614f7d565b604082019050919050565b6000602082019050818103600083015261500881614fcc565b9050919050565b600061501a826149ba565b9150615025836149ba565b925082820190508082111561503d5761503c614e9b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615079601b83614913565b915061508482615043565b602082019050919050565b600060208201905081810360008301526150a88161506c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061510b602483614913565b9150615116826150af565b604082019050919050565b6000602082019050818103600083015261513a816150fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061519d602283614913565b91506151a882615141565b604082019050919050565b600060208201905081810360008301526151cc81615190565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061522f602583614913565b915061523a826151d3565b604082019050919050565b6000602082019050818103600083015261525e81615222565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006152c1602383614913565b91506152cc82615265565b604082019050919050565b600060208201905081810360008301526152f0816152b4565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000615353603f83614913565b915061535e826152f7565b604082019050919050565b6000602082019050818103600083015261538281615346565b9050919050565b6000615394826149ba565b915061539f836149ba565b92508282039050818111156153b7576153b6614e9b565b5b92915050565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b60006153f3601383614913565b91506153fe826153bd565b602082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061545f601183614913565b915061546a82615429565b602082019050919050565b6000602082019050818103600083015261548e81615452565b9050919050565b60006154a0826149ba565b91506154ab836149ba565b92508282026154b9816149ba565b915082820484148315176154d0576154cf614e9b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615511826149ba565b915061551c836149ba565b92508261552c5761552b6154d7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615593602183614913565b915061559e82615537565b604082019050919050565b600060208201905081810360008301526155c281615586565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061561d615618615613846155f8565b614b13565b6149ba565b9050919050565b61562d81615602565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61566881614825565b82525050565b600061567a838361565f565b60208301905092915050565b6000602082019050919050565b600061569e82615633565b6156a8818561563e565b93506156b38361564f565b8060005b838110156156e45781516156cb888261566e565b97506156d683615686565b9250506001810190506156b7565b5085935050505092915050565b600060a0820190506157066000830188614ae9565b6157136020830187615624565b81810360408301526157258186615693565b90506157346060830185614c0d565b6157416080830184614ae9565b9695505050505050565b60006040820190506157606000830185614ae9565b81810360208301526157728184615693565b90509392505050565b600060c0820190506157906000830189614c0d565b61579d6020830188614ae9565b6157aa6040830187615624565b6157b76060830186615624565b6157c46080830185614c0d565b6157d160a0830184614ae9565b979650505050505050565b6000815190506157eb816149c4565b92915050565b60008060006060848603121561580a576158096147fb565b5b6000615818868287016157dc565b9350506020615829868287016157dc565b925050604061583a868287016157dc565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122031bd6360ff5b7c8dd4c087ec03a74df3d8b88df12e86133306c3faa41163ce5a64736f6c63430008110033

Deployed Bytecode Sourcemap

14439:16769:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23741:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23534:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18460:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19754:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21028:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14778:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23860:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16386:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18737:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20687:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21990:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25265:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21869:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14879:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23121:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22975:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22522:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23948:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18646:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19123:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22243:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15364:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15445:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16501:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22375:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23264:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14967:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15162:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6508:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15809:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24181:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15850:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15280:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18845:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16177:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23642:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16244:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15974:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20268:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15683:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5792:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30240:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6017:227;;;;;;;;;;;;;:::i;:::-;;18551:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19626:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16019:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19349:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15411:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22838:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15891:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15497:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25090:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21380:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15640:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22659:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15598:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16434:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15726:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15219:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15769:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14672:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16548:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15556:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18972:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21750:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20544:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15930:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22133:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6252:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20405:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16600:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23741:109;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23836:6:::1;23820:5;:13;23826:6;23820:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;23741:109:::0;;:::o;23534:100::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23617:9:::1;23606:8;;:20;;;;;;;;;;;;;;;;;;23534:100:::0;:::o;18460:83::-;18497:13;18530:5;18523:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18460:83;:::o;19754:161::-;19829:4;19846:39;19855:12;:10;:12::i;:::-;19869:7;19878:6;19846:8;:39::i;:::-;19903:4;19896:11;;19754:161;;;;:::o;21028:340::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21171:15:::1;21151:17;:35;;;;21217:15;21197:17;:35;;;;21258:10;21243:12;:25;;;;21302:58;21347:12;;21302:40;21324:17;;21302;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21281:18;:79;;;;21028:340:::0;;;:::o;14778:94::-;;;;;;;;;;;;;:::o;23860:80::-;23901:7;23928:4;;23921:11;;23860:80;:::o;16386:41::-;;;;;;;;;;;;;:::o;18737:100::-;18790:7;18817:12;;18810:19;;18737:100;:::o;20687:333::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20829:15:::1;20810:16;:34;;;;20874:15;20855:16;:34;;;;20914:10;20900:11;:24;;;;20957:55;21000:11;;20957:38;20978:16;;20957;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;20937:17;:75;;;;20687:333:::0;;;:::o;21990:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22111:6:::1;22081:19;:27;22101:6;22081:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21990:135:::0;;:::o;25265:313::-;25363:4;25380:36;25390:6;25398:9;25409:6;25380:9;:36::i;:::-;;25427:121;25436:6;25444:12;:10;:12::i;:::-;25458:89;25496:6;25458:89;;;;;;;;;;;;;;;;;:11;:19;25470:6;25458:19;;;;;;;;;;;;;;;:33;25478:12;:10;:12::i;:::-;25458:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;25427:8;:121::i;:::-;25566:4;25559:11;;25265:313;;;;;:::o;21869:113::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21966:8:::1;21947:16;;:27;;;;;;;;;;;;;;;;;;21869:113:::0;:::o;14879:81::-;;;:::o;23121:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23240:8:::1;23211:17;:26;23229:7;23211:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23121:135:::0;;:::o;22975:128::-;23028:7;23055:40;23072:22;23082:11;23072:9;:22::i;:::-;23055:12;;:16;;:40;;;;:::i;:::-;23048:47;;22975:128;:::o;22522:129::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22632:10:::1;22604:17;;:39;;;;;;;;;;;;;;;;;;22522:129:::0;:::o;23948:87::-;23988:7;24015:12;24008:19;;23948:87;:::o;18646:83::-;18687:5;18712:9;;;;;;;;;;;18705:16;;18646:83;:::o;19123:218::-;19211:4;19228:83;19237:12;:10;:12::i;:::-;19251:7;19260:50;19299:10;19260:11;:25;19272:12;:10;:12::i;:::-;19260:25;;;;;;;;;;;;;;;:34;19286:7;19260:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19228:8;:83::i;:::-;19329:4;19322:11;;19123:218;;;;:::o;22243:124::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22351:8:::1;22325:23;:34;;;;22243:124:::0;:::o;15364:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;15445:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16501:40::-;;;;;;;;;;;;;:::o;22375:139::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22495:10:::1;22462:22;;:44;;;;;;;;;;;;;;;;;;22375:139:::0;:::o;23264:260::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23392:3:::1;23373:9;;:16;;:22;23365:31;;;::::0;::::1;;23412:9;23407:110;23427:9;;:16;;23423:1;:20;23407:110;;;23499:6;23465:17;:31;23483:9;;23493:1;23483:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23465:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;23445:3;;;;:::i;:::-;;;23407:110;;;;23264:260:::0;;;:::o;14967:23::-;;;;;;;;;;;;;:::o;15162:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6508:90::-;6548:7;6575:15;6568:22;;6508:90;:::o;15809:34::-;;;;:::o;24181:807::-;24261:22;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24298:35:::1;24355:16;24298:74;;24421:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24403:53;;;24465:4;24472:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24403:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24386:110;;24538:1;24512:28;;:14;:28;;::::0;24509:225:::1;;24626:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24608:74;;;24691:4;24698:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24608:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24591:131;;24509:225;24760:14;24746:11;;:28;;;;;;;;;;;;;;;;;;24826:16;24808:15;;:34;;;;;;;;;;;;;;;;;;24924:4;24880:19;:41;24908:11;;;;;;;;;;;24880:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24976:4;24939:12;:34;24960:11;;;;;;;;;;;24939:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;24285:703;24181:807:::0;;;:::o;15850:34::-;;;;:::o;15280:23::-;;;;:::o;18845:119::-;18911:7;18938:9;:18;18948:7;18938:18;;;;;;;;;;;;;;;;18931:25;;18845:119;;;:::o;16177:59::-;;;;:::o;23642:91::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23718:7:::1;23709:6;:16;;;;23642:91:::0;:::o;16244:59::-;;;;:::o;15974:38::-;;;;:::o;20268:129::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20381:8:::1;20357:12;:21;20370:7;20357:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20268:129:::0;;:::o;15683:36::-;;;;:::o;5792:79::-;5830:7;5857:6;;;;;;;;;;;5850:13;;5792:79;:::o;30240:101::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30321:12:::1;30307:11;;:26;;;;;;;;;;;;;;;;;;30240:101:::0;:::o;6017:227::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6121:42:::1;6084:81;;6105:6;::::0;::::1;;;;;;;;6084:81;;;;;;;;;;;;6193:42;6176:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;6017:227::o:0;18551:87::-;18590:13;18623:7;18616:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18551:87;:::o;19626:120::-;19688:7;19715:23;;19708:30;;19626:120;:::o;16019:44::-;;;;:::o;19349:269::-;19442:4;19459:129;19468:12;:10;:12::i;:::-;19482:7;19491:96;19530:15;19491:96;;;;;;;;;;;;;;;;;:11;:25;19503:12;:10;:12::i;:::-;19491:25;;;;;;;;;;;;;;;:34;19517:7;19491:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19459:8;:129::i;:::-;19606:4;19599:11;;19349:269;;;;:::o;15411:25::-;;;;:::o;22838:125::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22947:8:::1;22919:25;;:36;;;;;;;;;;;;;;;;;;22838:125:::0;:::o;15891:30::-;;;;:::o;15497:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;25090:167::-;25168:4;25185:42;25195:12;:10;:12::i;:::-;25209:9;25220:6;25185:9;:42::i;:::-;;25245:4;25238:11;;25090:167;;;;:::o;21380:358::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21539:17:::1;21521:15;:35;;;;21585:17;21567:15;:35;;;;21626:12;21613:10;:25;;;;21678:52;21719:10;;21678:36;21698:15;;21678;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;21651:24;:79;;;;21380:358:::0;;;:::o;15640:30::-;;;;:::o;22659:171::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22760:8:::1;22736:21;;:32;;;;;;;;;;;;;;;;;;22784:38;22813:8;22784:38;;;;;;:::i;:::-;;;;;;;;22659:171:::0;:::o;15598:35::-;;;;:::o;16434:26::-;;;;;;;;;;;;;:::o;15726:36::-;;;;:::o;15219:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;15769:31::-;;;;:::o;14672:99::-;;;;;;;;;;;;;:::o;16548:45::-;;;;;;;;;;;;;:::o;15556:35::-;;;;:::o;18972:143::-;19053:7;19080:11;:18;19092:5;19080:18;;;;;;;;;;;;;;;:27;19099:7;19080:27;;;;;;;;;;;;;;;;19073:34;;18972:143;;;;:::o;21750:111::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21842:11:::1;21827:12;:26;;;;21750:111:::0;:::o;20544:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20663:8:::1;20634:17;:26;20652:7;20634:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20544:135:::0;;:::o;15930:37::-;;;;:::o;22133:102::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22219:8:::1;22205:10;:22;;;;22133:102:::0;:::o;6252:244::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6361:1:::1;6341:22;;:8;:22;;::::0;6333:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6451:8;6422:38;;6443:6;::::0;::::1;;;;;;;;6422:38;;;;;;;;;;;;6480:8;6471:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6252:244:::0;:::o;20405:127::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20518:6:::1;20492:15;:23;20508:6;20492:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20405:127:::0;;:::o;16600:36::-;;;;;;;;;;;;;:::o;1170:181::-;1228:7;1248:9;1264:1;1260;:5;;;;:::i;:::-;1248:17;;1289:1;1284;:6;;1276:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1342:1;1335:8;;;1170:181;;;;:::o;102:115::-;155:15;198:10;183:26;;102:115;:::o;19923:337::-;20033:1;20016:19;;:5;:19;;;20008:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20114:1;20095:21;;:7;:21;;;20087:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20198:6;20168:11;:18;20180:5;20168:18;;;;;;;;;;;;;;;:27;20187:7;20168:27;;;;;;;;;;;;;;;:36;;;;20236:7;20220:32;;20229:5;20220:32;;;20245:6;20220:32;;;;;;:::i;:::-;;;;;;;;19923:337;;;:::o;25586:2046::-;25673:4;25718:1;25700:20;;:6;:20;;;25692:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25802:1;25781:23;;:9;:23;;;25773:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25889:11;;;;;;;;;;;25884:138;;25935:7;:5;:7::i;:::-;25925:17;;:6;:17;;;25917:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;25884:138;26037:16;;;;;;;;;;;26034:1591;;;26087:41;26102:6;26110:9;26121:6;26087:14;:41::i;:::-;26080:48;;;;26034:1591;26191:8;;;;;;;;;;;26181:18;;:6;:18;;;:46;;;;;26216:11;;;;;;;;;;;26203:24;;:9;:24;;;26181:46;26178:96;;;26250:12;26243:4;:19;;;;26178:96;26300:11;;;;;;;;;;;26290:21;;:6;:21;;;26286:149;;26356:6;;26349:4;;:13;;;;:::i;:::-;26332:12;:31;26328:96;;26404:4;26385:5;:16;26391:9;26385:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;26328:96;26286:149;26461:7;:5;:7::i;:::-;26451:17;;:6;:17;;;;:41;;;;;26485:7;:5;:7::i;:::-;26472:20;;:9;:20;;;;26451:41;26447:75;;;26494:28;26508:6;26515;26494:13;:28::i;:::-;26447:75;26540:28;26571:24;26589:4;26571:9;:24::i;:::-;26540:55;;26610:28;26665:23;;26641:20;:47;;26610:78;;26721:23;:44;;;;;26749:16;;;;;;;;;;;26748:17;26721:44;:69;;;;;26770:12;:20;26783:6;26770:20;;;;;;;;;;;;;;;;;;;;;;;;;26769:21;26721:69;:94;;;;;26794:21;;;;;;;;;;;26721:94;26717:305;;;26853:25;;;;;;;;;;;26850:97;;;26924:23;;26901:46;;26850:97;26966:36;26981:20;26966:14;:36::i;:::-;26717:305;27058:53;27080:6;27058:53;;;;;;;;;;;;;;;;;:9;:17;27068:6;27058:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27038:9;:17;27048:6;27038:17;;;;;;;;;;;;;;;:73;;;;27128:19;27151:17;:25;27169:6;27151:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;27180:17;:28;27198:9;27180:28;;;;;;;;;;;;;;;;;;;;;;;;;27151:57;27150:148;;27264:34;27272:6;27280:9;27291:6;27264:7;:34::i;:::-;27150:148;;;27255:6;27150:148;27128:170;;27318:16;;;;;;;;;;;:51;;;;;27339:19;:30;27359:9;27339:30;;;;;;;;;;;;;;;;;;;;;;;;;27338:31;27318:51;27315:133;;;27437:10;;27396:37;27421:11;27396:20;27406:9;27396;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;27388:60;;;;;;27315:133;27488:37;27513:11;27488:9;:20;27498:9;27488:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;27465:9;:20;27475:9;27465:20;;;;;;;;;;;;;;;:60;;;;27564:9;27547:40;;27556:6;27547:40;;;27575:11;27547:40;;;;;;:::i;:::-;;;;;;;;27609:4;27602:11;;;;;25586:2046;;;;;;:::o;1503:192::-;1589:7;1622:1;1617;:6;;1625:12;1609:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1649:9;1665:1;1661;:5;;;;:::i;:::-;1649:17;;1686:1;1679:8;;;1503:192;;;;;:::o;1359:136::-;1417:7;1444:43;1448:1;1451;1444:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1437:50;;1359:136;;;;:::o;27640:330::-;27733:4;27770:53;27792:6;27770:53;;;;;;;;;;;;;;;;;:9;:17;27780:6;27770:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27750:9;:17;27760:6;27750:17;;;;;;;;;;;;;;;:73;;;;27857:32;27882:6;27857:9;:20;27867:9;27857:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;27834:9;:20;27844:9;27834:20;;;;;;;;;;;;;;;:55;;;;27922:9;27905:35;;27914:6;27905:35;;;27933:6;27905:35;;;;;;:::i;:::-;;;;;;;;27958:4;27951:11;;27640:330;;;;;:::o;30983:222::-;31070:5;:13;31076:6;31070:13;;;;;;;;;;;;;;;;;;;;;;;;;31069:14;31061:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31136:12;;31126:6;:22;;:49;;;;31152:15;:23;31168:6;31152:23;;;;;;;;;;;;;;;;;;;;;;;;;31126:49;31118:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;30983:222;;:::o;27978:1048::-;17078:4;17059:16;;:23;;;;;;;;;;;;;;;;;;28060:19:::1;28082:65;28145:1;28082:58;28115:24;;28082:28;28094:15;;28082:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;28060:87;;28158:21;28182:24;28194:11;28182:7;:11;;:24;;;;:::i;:::-;28158:48;;28219:31;28236:13;28219:16;:31::i;:::-;28261:22;28286:21;28261:46;;28320:19;28342:52;28371:22;28391:1;28371:15;;:19;;:22;;;;:::i;:::-;28342:24;;:28;;:52;;;;:::i;:::-;28320:74;;28415:26;28444:59;28501:1;28444:52;28484:11;28444:35;28463:15;;28444:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;28415:88;;28514:21;28538:47;28573:11;28538:30;28557:10;;28538:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;28514:71;;28596:26;28625:57;28668:13;28625:38;28644:18;28625:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;28596:86;;28719:1;28698:18;:22;28695:104;;;28735:64;28756:22;;;;;;;;;;;28780:18;28735:20;:64::i;:::-;28695:104;28831:1;28815:13;:17;28812:89;;;28847:54;28868:17;;;;;;;;;;;28887:13;28847:20;:54::i;:::-;28812:89;28938:1;28917:18;:22;:41;;;;;28957:1;28943:11;:15;28917:41;28914:104;;;28973:45;28986:11;28999:18;28973:12;:45::i;:::-;28914:104;28039:987;;;;;;;17124:5:::0;17105:16;;:24;;;;;;;;;;;;;;;;;;27978:1048;:::o;30349:622::-;30435:7;30465:17;30485:1;30465:21;;30510:12;:20;30523:6;30510:20;;;;;;;;;;;;;;;;;;;;;;;;;30507:223;;;30559:38;30593:3;30559:29;30570:17;;30559:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;30547:50;;30507:223;;;30627:12;:23;30640:9;30627:23;;;;;;;;;;;;;;;;;;;;;;;;;30624:106;;;30679:39;30714:3;30679:30;30690:18;;30679:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;30667:51;;30624:106;30507:223;30765:1;30753:9;:13;30750:173;;;30810:39;30839:9;30810;:24;30828:4;30810:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;30783:9;:24;30801:4;30783:24;;;;;;;;;;;;;;;:66;;;;30894:4;30869:42;;30878:6;30869:42;;;30901:9;30869:42;;;;;;:::i;:::-;;;;;;;;30750:173;30942:21;30953:9;30942:6;:10;;:21;;;;:::i;:::-;30935:28;;;30349:622;;;;;:::o;1703:250::-;1761:7;1790:1;1785;:6;1781:47;;1815:1;1808:8;;;;1781:47;1840:9;1856:1;1852;:5;;;;:::i;:::-;1840:17;;1885:1;1880;1876;:5;;;;:::i;:::-;:10;1868:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1944:1;1937:8;;;1703:250;;;;;:::o;1961:132::-;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2039:46;;1961:132;;;;:::o;29038:666::-;29164:21;29202:1;29188:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29164:40;;29233:4;29215;29220:1;29215:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29259:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29249:4;29254:1;29249:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29294:62;29311:4;29326:15;;;;;;;;;;;29344:11;29294:8;:62::i;:::-;29395:15;;;;;;;;;;;:66;;;29476:11;29502:1;29546:4;29573;29609:15;29395:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29661:35;29678:11;29691:4;29661:35;;;;;;;:::i;:::-;;;;;;;;29093:611;29038:666;:::o;24043:126::-;24135:9;:18;;:26;24154:6;24135:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24043:126;;:::o;29712:513::-;29860:62;29877:4;29892:15;;;;;;;;;;;29910:11;29860:8;:62::i;:::-;29965:15;;;;;;;;;;;:31;;;30004:9;30037:4;30057:11;30083:1;30126;30169:7;:5;:7::i;:::-;30191:15;29965:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29712:513;;:::o;2101:278::-;2187:7;2219:1;2215;:5;2222:12;2207:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2246:9;2262:1;2258;:5;;;;:::i;:::-;2246:17;;2370:1;2363:8;;;2101:278;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:329::-;1731:6;1780:2;1768:9;1759:7;1755:23;1751:32;1748:119;;;1786:79;;:::i;:::-;1748:119;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;1672:329;;;;:::o;2007:99::-;2059:6;2093:5;2087:12;2077:22;;2007:99;;;:::o;2112:169::-;2196:11;2230:6;2225:3;2218:19;2270:4;2265:3;2261:14;2246:29;;2112:169;;;;:::o;2287:246::-;2368:1;2378:113;2392:6;2389:1;2386:13;2378:113;;;2477:1;2472:3;2468:11;2462:18;2458:1;2453:3;2449:11;2442:39;2414:2;2411:1;2407:10;2402:15;;2378:113;;;2525:1;2516:6;2511:3;2507:16;2500:27;2349:184;2287:246;;;:::o;2539:102::-;2580:6;2631:2;2627:7;2622:2;2615:5;2611:14;2607:28;2597:38;;2539:102;;;:::o;2647:377::-;2735:3;2763:39;2796:5;2763:39;:::i;:::-;2818:71;2882:6;2877:3;2818:71;:::i;:::-;2811:78;;2898:65;2956:6;2951:3;2944:4;2937:5;2933:16;2898:65;:::i;:::-;2988:29;3010:6;2988:29;:::i;:::-;2983:3;2979:39;2972:46;;2739:285;2647:377;;;;:::o;3030:313::-;3143:4;3181:2;3170:9;3166:18;3158:26;;3230:9;3224:4;3220:20;3216:1;3205:9;3201:17;3194:47;3258:78;3331:4;3322:6;3258:78;:::i;:::-;3250:86;;3030:313;;;;:::o;3349:77::-;3386:7;3415:5;3404:16;;3349:77;;;:::o;3432:122::-;3505:24;3523:5;3505:24;:::i;:::-;3498:5;3495:35;3485:63;;3544:1;3541;3534:12;3485:63;3432:122;:::o;3560:139::-;3606:5;3644:6;3631:20;3622:29;;3660:33;3687:5;3660:33;:::i;:::-;3560:139;;;;:::o;3705:474::-;3773:6;3781;3830:2;3818:9;3809:7;3805:23;3801:32;3798:119;;;3836:79;;:::i;:::-;3798:119;3956:1;3981:53;4026:7;4017:6;4006:9;4002:22;3981:53;:::i;:::-;3971:63;;3927:117;4083:2;4109:53;4154:7;4145:6;4134:9;4130:22;4109:53;:::i;:::-;4099:63;;4054:118;3705:474;;;;;:::o;4185:109::-;4266:21;4281:5;4266:21;:::i;:::-;4261:3;4254:34;4185:109;;:::o;4300:210::-;4387:4;4425:2;4414:9;4410:18;4402:26;;4438:65;4500:1;4489:9;4485:17;4476:6;4438:65;:::i;:::-;4300:210;;;;:::o;4516:619::-;4593:6;4601;4609;4658:2;4646:9;4637:7;4633:23;4629:32;4626:119;;;4664:79;;:::i;:::-;4626:119;4784:1;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4755:117;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;5039:2;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5010:118;4516:619;;;;;:::o;5141:104::-;5186:7;5215:24;5233:5;5215:24;:::i;:::-;5204:35;;5141:104;;;:::o;5251:142::-;5354:32;5380:5;5354:32;:::i;:::-;5349:3;5342:45;5251:142;;:::o;5399:254::-;5508:4;5546:2;5535:9;5531:18;5523:26;;5559:87;5643:1;5632:9;5628:17;5619:6;5559:87;:::i;:::-;5399:254;;;;:::o;5659:118::-;5746:24;5764:5;5746:24;:::i;:::-;5741:3;5734:37;5659:118;;:::o;5783:222::-;5876:4;5914:2;5903:9;5899:18;5891:26;;5927:71;5995:1;5984:9;5980:17;5971:6;5927:71;:::i;:::-;5783:222;;;;:::o;6011:60::-;6039:3;6060:5;6053:12;;6011:60;;;:::o;6077:142::-;6127:9;6160:53;6178:34;6187:24;6205:5;6187:24;:::i;:::-;6178:34;:::i;:::-;6160:53;:::i;:::-;6147:66;;6077:142;;;:::o;6225:126::-;6275:9;6308:37;6339:5;6308:37;:::i;:::-;6295:50;;6225:126;;;:::o;6357:153::-;6434:9;6467:37;6498:5;6467:37;:::i;:::-;6454:50;;6357:153;;;:::o;6516:185::-;6630:64;6688:5;6630:64;:::i;:::-;6625:3;6618:77;6516:185;;:::o;6707:276::-;6827:4;6865:2;6854:9;6850:18;6842:26;;6878:98;6973:1;6962:9;6958:17;6949:6;6878:98;:::i;:::-;6707:276;;;;:::o;6989:619::-;7066:6;7074;7082;7131:2;7119:9;7110:7;7106:23;7102:32;7099:119;;;7137:79;;:::i;:::-;7099:119;7257:1;7282:53;7327:7;7318:6;7307:9;7303:22;7282:53;:::i;:::-;7272:63;;7228:117;7384:2;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7355:118;7512:2;7538:53;7583:7;7574:6;7563:9;7559:22;7538:53;:::i;:::-;7528:63;;7483:118;6989:619;;;;;:::o;7614:323::-;7670:6;7719:2;7707:9;7698:7;7694:23;7690:32;7687:119;;;7725:79;;:::i;:::-;7687:119;7845:1;7870:50;7912:7;7903:6;7892:9;7888:22;7870:50;:::i;:::-;7860:60;;7816:114;7614:323;;;;:::o;7943:118::-;8030:24;8048:5;8030:24;:::i;:::-;8025:3;8018:37;7943:118;;:::o;8067:222::-;8160:4;8198:2;8187:9;8183:18;8175:26;;8211:71;8279:1;8268:9;8264:17;8255:6;8211:71;:::i;:::-;8067:222;;;;:::o;8295:86::-;8330:7;8370:4;8363:5;8359:16;8348:27;;8295:86;;;:::o;8387:112::-;8470:22;8486:5;8470:22;:::i;:::-;8465:3;8458:35;8387:112;;:::o;8505:214::-;8594:4;8632:2;8621:9;8617:18;8609:26;;8645:67;8709:1;8698:9;8694:17;8685:6;8645:67;:::i;:::-;8505:214;;;;:::o;8725:329::-;8784:6;8833:2;8821:9;8812:7;8808:23;8804:32;8801:119;;;8839:79;;:::i;:::-;8801:119;8959:1;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8930:117;8725:329;;;;:::o;9060:117::-;9169:1;9166;9159:12;9183:117;9292:1;9289;9282:12;9306:117;9415:1;9412;9405:12;9446:568;9519:8;9529:6;9579:3;9572:4;9564:6;9560:17;9556:27;9546:122;;9587:79;;:::i;:::-;9546:122;9700:6;9687:20;9677:30;;9730:18;9722:6;9719:30;9716:117;;;9752:79;;:::i;:::-;9716:117;9866:4;9858:6;9854:17;9842:29;;9920:3;9912:4;9904:6;9900:17;9890:8;9886:32;9883:41;9880:128;;;9927:79;;:::i;:::-;9880:128;9446:568;;;;;:::o;10020:698::-;10112:6;10120;10128;10177:2;10165:9;10156:7;10152:23;10148:32;10145:119;;;10183:79;;:::i;:::-;10145:119;10331:1;10320:9;10316:17;10303:31;10361:18;10353:6;10350:30;10347:117;;;10383:79;;:::i;:::-;10347:117;10496:80;10568:7;10559:6;10548:9;10544:22;10496:80;:::i;:::-;10478:98;;;;10274:312;10625:2;10651:50;10693:7;10684:6;10673:9;10669:22;10651:50;:::i;:::-;10641:60;;10596:115;10020:698;;;;;:::o;10724:474::-;10792:6;10800;10849:2;10837:9;10828:7;10824:23;10820:32;10817:119;;;10855:79;;:::i;:::-;10817:119;10975:1;11000:53;11045:7;11036:6;11025:9;11021:22;11000:53;:::i;:::-;10990:63;;10946:117;11102:2;11128:53;11173:7;11164:6;11153:9;11149:22;11128:53;:::i;:::-;11118:63;;11073:118;10724:474;;;;;:::o;11204:182::-;11344:34;11340:1;11332:6;11328:14;11321:58;11204:182;:::o;11392:366::-;11534:3;11555:67;11619:2;11614:3;11555:67;:::i;:::-;11548:74;;11631:93;11720:3;11631:93;:::i;:::-;11749:2;11744:3;11740:12;11733:19;;11392:366;;;:::o;11764:419::-;11930:4;11968:2;11957:9;11953:18;11945:26;;12017:9;12011:4;12007:20;12003:1;11992:9;11988:17;11981:47;12045:131;12171:4;12045:131;:::i;:::-;12037:139;;11764:419;;;:::o;12189:180::-;12237:77;12234:1;12227:88;12334:4;12331:1;12324:15;12358:4;12355:1;12348:15;12375:320;12419:6;12456:1;12450:4;12446:12;12436:22;;12503:1;12497:4;12493:12;12524:18;12514:81;;12580:4;12572:6;12568:17;12558:27;;12514:81;12642:2;12634:6;12631:14;12611:18;12608:38;12605:84;;12661:18;;:::i;:::-;12605:84;12426:269;12375:320;;;:::o;12701:180::-;12749:77;12746:1;12739:88;12846:4;12843:1;12836:15;12870:4;12867:1;12860:15;12887:180;12935:77;12932:1;12925:88;13032:4;13029:1;13022:15;13056:4;13053:1;13046:15;13073:233;13112:3;13135:24;13153:5;13135:24;:::i;:::-;13126:33;;13181:66;13174:5;13171:77;13168:103;;13251:18;;:::i;:::-;13168:103;13298:1;13291:5;13287:13;13280:20;;13073:233;;;:::o;13312:143::-;13369:5;13400:6;13394:13;13385:22;;13416:33;13443:5;13416:33;:::i;:::-;13312:143;;;;:::o;13461:351::-;13531:6;13580:2;13568:9;13559:7;13555:23;13551:32;13548:119;;;13586:79;;:::i;:::-;13548:119;13706:1;13731:64;13787:7;13778:6;13767:9;13763:22;13731:64;:::i;:::-;13721:74;;13677:128;13461:351;;;;:::o;13818:332::-;13939:4;13977:2;13966:9;13962:18;13954:26;;13990:71;14058:1;14047:9;14043:17;14034:6;13990:71;:::i;:::-;14071:72;14139:2;14128:9;14124:18;14115:6;14071:72;:::i;:::-;13818:332;;;;;:::o;14156:225::-;14296:34;14292:1;14284:6;14280:14;14273:58;14365:8;14360:2;14352:6;14348:15;14341:33;14156:225;:::o;14387:366::-;14529:3;14550:67;14614:2;14609:3;14550:67;:::i;:::-;14543:74;;14626:93;14715:3;14626:93;:::i;:::-;14744:2;14739:3;14735:12;14728:19;;14387:366;;;:::o;14759:419::-;14925:4;14963:2;14952:9;14948:18;14940:26;;15012:9;15006:4;15002:20;14998:1;14987:9;14983:17;14976:47;15040:131;15166:4;15040:131;:::i;:::-;15032:139;;14759:419;;;:::o;15184:191::-;15224:3;15243:20;15261:1;15243:20;:::i;:::-;15238:25;;15277:20;15295:1;15277:20;:::i;:::-;15272:25;;15320:1;15317;15313:9;15306:16;;15341:3;15338:1;15335:10;15332:36;;;15348:18;;:::i;:::-;15332:36;15184:191;;;;:::o;15381:177::-;15521:29;15517:1;15509:6;15505:14;15498:53;15381:177;:::o;15564:366::-;15706:3;15727:67;15791:2;15786:3;15727:67;:::i;:::-;15720:74;;15803:93;15892:3;15803:93;:::i;:::-;15921:2;15916:3;15912:12;15905:19;;15564:366;;;:::o;15936:419::-;16102:4;16140:2;16129:9;16125:18;16117:26;;16189:9;16183:4;16179:20;16175:1;16164:9;16160:17;16153:47;16217:131;16343:4;16217:131;:::i;:::-;16209:139;;15936:419;;;:::o;16361:223::-;16501:34;16497:1;16489:6;16485:14;16478:58;16570:6;16565:2;16557:6;16553:15;16546:31;16361:223;:::o;16590:366::-;16732:3;16753:67;16817:2;16812:3;16753:67;:::i;:::-;16746:74;;16829:93;16918:3;16829:93;:::i;:::-;16947:2;16942:3;16938:12;16931:19;;16590:366;;;:::o;16962:419::-;17128:4;17166:2;17155:9;17151:18;17143:26;;17215:9;17209:4;17205:20;17201:1;17190:9;17186:17;17179:47;17243:131;17369:4;17243:131;:::i;:::-;17235:139;;16962:419;;;:::o;17387:221::-;17527:34;17523:1;17515:6;17511:14;17504:58;17596:4;17591:2;17583:6;17579:15;17572:29;17387:221;:::o;17614:366::-;17756:3;17777:67;17841:2;17836:3;17777:67;:::i;:::-;17770:74;;17853:93;17942:3;17853:93;:::i;:::-;17971:2;17966:3;17962:12;17955:19;;17614:366;;;:::o;17986:419::-;18152:4;18190:2;18179:9;18175:18;18167:26;;18239:9;18233:4;18229:20;18225:1;18214:9;18210:17;18203:47;18267:131;18393:4;18267:131;:::i;:::-;18259:139;;17986:419;;;:::o;18411:224::-;18551:34;18547:1;18539:6;18535:14;18528:58;18620:7;18615:2;18607:6;18603:15;18596:32;18411:224;:::o;18641:366::-;18783:3;18804:67;18868:2;18863:3;18804:67;:::i;:::-;18797:74;;18880:93;18969:3;18880:93;:::i;:::-;18998:2;18993:3;18989:12;18982:19;;18641:366;;;:::o;19013:419::-;19179:4;19217:2;19206:9;19202:18;19194:26;;19266:9;19260:4;19256:20;19252:1;19241:9;19237:17;19230:47;19294:131;19420:4;19294:131;:::i;:::-;19286:139;;19013:419;;;:::o;19438:222::-;19578:34;19574:1;19566:6;19562:14;19555:58;19647:5;19642:2;19634:6;19630:15;19623:30;19438:222;:::o;19666:366::-;19808:3;19829:67;19893:2;19888:3;19829:67;:::i;:::-;19822:74;;19905:93;19994:3;19905:93;:::i;:::-;20023:2;20018:3;20014:12;20007:19;;19666:366;;;:::o;20038:419::-;20204:4;20242:2;20231:9;20227:18;20219:26;;20291:9;20285:4;20281:20;20277:1;20266:9;20262:17;20255:47;20319:131;20445:4;20319:131;:::i;:::-;20311:139;;20038:419;;;:::o;20463:250::-;20603:34;20599:1;20591:6;20587:14;20580:58;20672:33;20667:2;20659:6;20655:15;20648:58;20463:250;:::o;20719:366::-;20861:3;20882:67;20946:2;20941:3;20882:67;:::i;:::-;20875:74;;20958:93;21047:3;20958:93;:::i;:::-;21076:2;21071:3;21067:12;21060:19;;20719:366;;;:::o;21091:419::-;21257:4;21295:2;21284:9;21280:18;21272:26;;21344:9;21338:4;21334:20;21330:1;21319:9;21315:17;21308:47;21372:131;21498:4;21372:131;:::i;:::-;21364:139;;21091:419;;;:::o;21516:194::-;21556:4;21576:20;21594:1;21576:20;:::i;:::-;21571:25;;21610:20;21628:1;21610:20;:::i;:::-;21605:25;;21654:1;21651;21647:9;21639:17;;21678:1;21672:4;21669:11;21666:37;;;21683:18;;:::i;:::-;21666:37;21516:194;;;;:::o;21716:169::-;21856:21;21852:1;21844:6;21840:14;21833:45;21716:169;:::o;21891:366::-;22033:3;22054:67;22118:2;22113:3;22054:67;:::i;:::-;22047:74;;22130:93;22219:3;22130:93;:::i;:::-;22248:2;22243:3;22239:12;22232:19;;21891:366;;;:::o;22263:419::-;22429:4;22467:2;22456:9;22452:18;22444:26;;22516:9;22510:4;22506:20;22502:1;22491:9;22487:17;22480:47;22544:131;22670:4;22544:131;:::i;:::-;22536:139;;22263:419;;;:::o;22688:167::-;22828:19;22824:1;22816:6;22812:14;22805:43;22688:167;:::o;22861:366::-;23003:3;23024:67;23088:2;23083:3;23024:67;:::i;:::-;23017:74;;23100:93;23189:3;23100:93;:::i;:::-;23218:2;23213:3;23209:12;23202:19;;22861:366;;;:::o;23233:419::-;23399:4;23437:2;23426:9;23422:18;23414:26;;23486:9;23480:4;23476:20;23472:1;23461:9;23457:17;23450:47;23514:131;23640:4;23514:131;:::i;:::-;23506:139;;23233:419;;;:::o;23658:410::-;23698:7;23721:20;23739:1;23721:20;:::i;:::-;23716:25;;23755:20;23773:1;23755:20;:::i;:::-;23750:25;;23810:1;23807;23803:9;23832:30;23850:11;23832:30;:::i;:::-;23821:41;;24011:1;24002:7;23998:15;23995:1;23992:22;23972:1;23965:9;23945:83;23922:139;;24041:18;;:::i;:::-;23922:139;23706:362;23658:410;;;;:::o;24074:180::-;24122:77;24119:1;24112:88;24219:4;24216:1;24209:15;24243:4;24240:1;24233:15;24260:185;24300:1;24317:20;24335:1;24317:20;:::i;:::-;24312:25;;24351:20;24369:1;24351:20;:::i;:::-;24346:25;;24390:1;24380:35;;24395:18;;:::i;:::-;24380:35;24437:1;24434;24430:9;24425:14;;24260:185;;;;:::o;24451:220::-;24591:34;24587:1;24579:6;24575:14;24568:58;24660:3;24655:2;24647:6;24643:15;24636:28;24451:220;:::o;24677:366::-;24819:3;24840:67;24904:2;24899:3;24840:67;:::i;:::-;24833:74;;24916:93;25005:3;24916:93;:::i;:::-;25034:2;25029:3;25025:12;25018:19;;24677:366;;;:::o;25049:419::-;25215:4;25253:2;25242:9;25238:18;25230:26;;25302:9;25296:4;25292:20;25288:1;25277:9;25273:17;25266:47;25330:131;25456:4;25330:131;:::i;:::-;25322:139;;25049:419;;;:::o;25474:180::-;25522:77;25519:1;25512:88;25619:4;25616:1;25609:15;25643:4;25640:1;25633:15;25660:85;25705:7;25734:5;25723:16;;25660:85;;;:::o;25751:158::-;25809:9;25842:61;25860:42;25869:32;25895:5;25869:32;:::i;:::-;25860:42;:::i;:::-;25842:61;:::i;:::-;25829:74;;25751:158;;;:::o;25915:147::-;26010:45;26049:5;26010:45;:::i;:::-;26005:3;25998:58;25915:147;;:::o;26068:114::-;26135:6;26169:5;26163:12;26153:22;;26068:114;;;:::o;26188:184::-;26287:11;26321:6;26316:3;26309:19;26361:4;26356:3;26352:14;26337:29;;26188:184;;;;:::o;26378:132::-;26445:4;26468:3;26460:11;;26498:4;26493:3;26489:14;26481:22;;26378:132;;;:::o;26516:108::-;26593:24;26611:5;26593:24;:::i;:::-;26588:3;26581:37;26516:108;;:::o;26630:179::-;26699:10;26720:46;26762:3;26754:6;26720:46;:::i;:::-;26798:4;26793:3;26789:14;26775:28;;26630:179;;;;:::o;26815:113::-;26885:4;26917;26912:3;26908:14;26900:22;;26815:113;;;:::o;26964:732::-;27083:3;27112:54;27160:5;27112:54;:::i;:::-;27182:86;27261:6;27256:3;27182:86;:::i;:::-;27175:93;;27292:56;27342:5;27292:56;:::i;:::-;27371:7;27402:1;27387:284;27412:6;27409:1;27406:13;27387:284;;;27488:6;27482:13;27515:63;27574:3;27559:13;27515:63;:::i;:::-;27508:70;;27601:60;27654:6;27601:60;:::i;:::-;27591:70;;27447:224;27434:1;27431;27427:9;27422:14;;27387:284;;;27391:14;27687:3;27680:10;;27088:608;;;26964:732;;;;:::o;27702:831::-;27965:4;28003:3;27992:9;27988:19;27980:27;;28017:71;28085:1;28074:9;28070:17;28061:6;28017:71;:::i;:::-;28098:80;28174:2;28163:9;28159:18;28150:6;28098:80;:::i;:::-;28225:9;28219:4;28215:20;28210:2;28199:9;28195:18;28188:48;28253:108;28356:4;28347:6;28253:108;:::i;:::-;28245:116;;28371:72;28439:2;28428:9;28424:18;28415:6;28371:72;:::i;:::-;28453:73;28521:3;28510:9;28506:19;28497:6;28453:73;:::i;:::-;27702:831;;;;;;;;:::o;28539:483::-;28710:4;28748:2;28737:9;28733:18;28725:26;;28761:71;28829:1;28818:9;28814:17;28805:6;28761:71;:::i;:::-;28879:9;28873:4;28869:20;28864:2;28853:9;28849:18;28842:48;28907:108;29010:4;29001:6;28907:108;:::i;:::-;28899:116;;28539:483;;;;;:::o;29028:807::-;29277:4;29315:3;29304:9;29300:19;29292:27;;29329:71;29397:1;29386:9;29382:17;29373:6;29329:71;:::i;:::-;29410:72;29478:2;29467:9;29463:18;29454:6;29410:72;:::i;:::-;29492:80;29568:2;29557:9;29553:18;29544:6;29492:80;:::i;:::-;29582;29658:2;29647:9;29643:18;29634:6;29582:80;:::i;:::-;29672:73;29740:3;29729:9;29725:19;29716:6;29672:73;:::i;:::-;29755;29823:3;29812:9;29808:19;29799:6;29755:73;:::i;:::-;29028:807;;;;;;;;;:::o;29841:143::-;29898:5;29929:6;29923:13;29914:22;;29945:33;29972:5;29945:33;:::i;:::-;29841:143;;;;:::o;29990:663::-;30078:6;30086;30094;30143:2;30131:9;30122:7;30118:23;30114:32;30111:119;;;30149:79;;:::i;:::-;30111:119;30269:1;30294:64;30350:7;30341:6;30330:9;30326:22;30294:64;:::i;:::-;30284:74;;30240:128;30407:2;30433:64;30489:7;30480:6;30469:9;30465:22;30433:64;:::i;:::-;30423:74;;30378:129;30546:2;30572:64;30628:7;30619:6;30608:9;30604:22;30572:64;:::i;:::-;30562:74;;30517:129;29990:663;;;;;:::o

Swarm Source

ipfs://31bd6360ff5b7c8dd4c087ec03a74df3d8b88df12e86133306c3faa41163ce5a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.