ETH Price: $3,928.37 (+2.67%)

Token

ERC-20: talky (talky)
 

Overview

Max Total Supply

1,000,000,000,000 talky

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
2,033,311,696 talky

Value
$0.00
0x4B2A2067C16BE71d765ae2d05e916436F95e8721
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:
talky

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-24
*/

/**
 *Submitted for verification at BscScan.com on 2021-12-22
*/

// 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 _previousOwner;
    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(0));
        _owner = address(0);
    }

    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 getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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

    address payable public marketingWalletAddress = payable(0x2e1Ebd96101167BAC96b8267875FE88F18F2A99C); // Marketing Address
    address payable public teamWalletAddress = payable(0x2e1Ebd96101167BAC96b8267875FE88F18F2A99C); // Team Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 4;
    uint256 public _buyTeamFee = 0;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 5;
    uint256 public _sellTeamFee = 0 ;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 8;
    uint256 public _teamShare = 0;

    uint256 public _totalTaxIfBuying = 3;
    uint256 public _totalTaxIfSelling = 4;
    uint256 public _totalDistributionShares = 7;

    uint256 private _totalSupply = 1000000000000 * 10**0* 10**0 * 10**_decimals;
    uint256 public _maxTxAmount = 500000000000 * 10**0 * 10**0* 10**_decimals; 
    uint256 public _walletMax = 1000000000000 * 10**0 * 10**0* 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 100000000 * 10**0* 10**_decimals; 

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

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _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;
        
        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 setSellTaxes(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 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");

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

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

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

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

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

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

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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","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":[{"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":"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":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600581526020017f74616c6b79000000000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000bdf565b506040518060400160405280600581526020017f74616c6b79000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000bdf565b506000600560006101000a81548160ff021916908360ff160217905550732e1ebd96101167bac96b8267875fe88f18f2a99c600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732e1ebd96101167bac96b8267875fe88f18f2a99c600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600d556004600e556000600f55600060105560056011556000601255600060135560086014556000601555600360165560046017556007601855600560009054906101000a900460ff16600a620001f8919062000e50565b64e8d4a510006200020a919062000f8d565b601955600560009054906101000a900460ff16600a6200022b919062000e50565b64746a5288006200023d919062000f8d565b601a55600560009054906101000a900460ff16600a6200025e919062000e50565b64e8d4a5100062000270919062000f8d565b601b55600560009054906101000a900460ff16600a62000291919062000e50565b6305f5e100620002a2919062000f8d565b601c556001601e60156101000a81548160ff0219169083151502179055506000601e60166101000a81548160ff0219169083151502179055506001601e60176101000a81548160ff0219169083151502179055503480156200030357600080fd5b5060006200031662000b4b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041457600080fd5b505afa15801562000429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044f919062000ca6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004b257600080fd5b505afa158015620004c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ed919062000ca6565b6040518363ffffffff1660e01b81526004016200050c92919062000d1b565b602060405180830381600087803b1580156200052757600080fd5b505af11580156200053c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000562919062000ca6565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960006200069e62000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000780600f546200076c600e54600d5462000b7c60201b62002dfd1790919060201c565b62000b7c60201b62002dfd1790919060201c565b601681905550620007bf601254620007ab60115460105462000b7c60201b62002dfd1790919060201c565b62000b7c60201b62002dfd1790919060201c565b601781905550620007fe601554620007ea60145460135462000b7c60201b62002dfd1790919060201c565b62000b7c60201b62002dfd1790919060201c565b6018819055506001600a60006200081a62000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200095362000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506019546007600062000a8d62000b4b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000adb62000b4b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405162000b3c919062000d6a565b60405180910390a3506200111d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000b8d919062000d98565b90508381101562000bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcc9062000d48565b60405180910390fd5b8091505092915050565b82805462000bed9062001039565b90600052602060002090601f01602090048101928262000c11576000855562000c5d565b82601f1062000c2c57805160ff191683800117855562000c5d565b8280016001018555821562000c5d579182015b8281111562000c5c57825182559160200191906001019062000c3f565b5b50905062000c6c919062000c70565b5090565b5b8082111562000c8b57600081600090555060010162000c71565b5090565b60008151905062000ca08162001103565b92915050565b60006020828403121562000cb957600080fd5b600062000cc98482850162000c8f565b91505092915050565b62000cdd8162000fee565b82525050565b600062000cf2601b8362000d87565b915062000cff82620010da565b602082019050919050565b62000d158162001022565b82525050565b600060408201905062000d32600083018562000cd2565b62000d41602083018462000cd2565b9392505050565b6000602082019050818103600083015262000d638162000ce3565b9050919050565b600060208201905062000d81600083018462000d0a565b92915050565b600082825260208201905092915050565b600062000da58262001022565b915062000db28362001022565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dea5762000de96200106f565b5b828201905092915050565b6000808291508390505b600185111562000e475780860481111562000e1f5762000e1e6200106f565b5b600185161562000e2f5780820291505b808102905062000e3f85620010cd565b945062000dff565b94509492505050565b600062000e5d8262001022565b915062000e6a836200102c565b925062000e997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ea1565b905092915050565b60008262000eb3576001905062000f86565b8162000ec3576000905062000f86565b816001811462000edc576002811462000ee75762000f1d565b600191505062000f86565b60ff84111562000efc5762000efb6200106f565b5b8360020a91508482111562000f165762000f156200106f565b5b5062000f86565b5060208310610133831016604e8410600b841016171562000f575782820a90508381111562000f515762000f506200106f565b5b62000f86565b62000f66848484600162000df5565b9250905081840481111562000f805762000f7f6200106f565b5b81810290505b9392505050565b600062000f9a8262001022565b915062000fa78362001022565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fe35762000fe26200106f565b5b828202905092915050565b600062000ffb8262001002565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200105257607f821691505b602082108114156200106957620010686200109e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6200110e8162000fee565b81146200111a57600080fd5b50565b60805160601c61516362001143600039600081816113f9015261142501526151636000f3fe6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061145a6114497f0000000000000000000000000000000000000000000000000000000000000000611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068461a877db26f2590682ef1c52e326fb6c162bd25f81d8f85d8c59a6141c59864736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061145a6114497f000000000000000000000000000000000000000000000000000000000000dead611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068461a877db26f2590682ef1c52e326fb6c162bd25f81d8f85d8c59a6141c59864736f6c63430008040033

Deployed Bytecode Sourcemap

15082:14879:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18827:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21395:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20121:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15448:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16850:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19104:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21054:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22358:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24701:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22237:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15565:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23343:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22890:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19013:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19490:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22611:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15957:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16965:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22743:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15786:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6602:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16265:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23617:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6500:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16306:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19212:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16606:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16687:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16428:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20635:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16138:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15902:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5870:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6095:145;;;;;;;;;;;;;:::i;:::-;;18918:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19993:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16472:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19716:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23206:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6938:305;;;;;;;;;;;;;:::i;:::-;;16347:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24526:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21748:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16095:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23027:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16053:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16898:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16181:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15843:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16224:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15321:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17012:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16011:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6700:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19339:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22118:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20911:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16385:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22501:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6248:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20772:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17064:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18827:83;18864:13;18897:5;18890:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18827:83;:::o;21395:341::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21539:15:::1;21519:17;:35;;;;21585:15;21565:17;:35;;;;21626:10;21611:12;:25;;;;21670:58;21715:12;;21670:40;21692:17;;21670;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21649:18;:79;;;;21395:341:::0;;;:::o;20121:161::-;20196:4;20213:39;20222:12;:10;:12::i;:::-;20236:7;20245:6;20213:8;:39::i;:::-;20270:4;20263:11;;20121:161;;;;:::o;15448:94::-;;;;;;;;;;;;;:::o;16850:41::-;;;;;;;;;;;;;:::o;19104:100::-;19157:7;19184:12;;19177:19;;19104:100;:::o;21054:333::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21196:15:::1;21177:16;:34;;;;21241:15;21222:16;:34;;;;21281:10;21267:11;:24;;;;21324:55;21367:11;;21324:38;21345:16;;21324;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;21304:17;:75;;;;21054:333:::0;;;:::o;22358:135::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22479:6:::1;22449:19;:27;22469:6;22449:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22358:135:::0;;:::o;24701:313::-;24799:4;24816:36;24826:6;24834:9;24845:6;24816:9;:36::i;:::-;;24863:121;24872:6;24880:12;:10;:12::i;:::-;24894:89;24932:6;24894:89;;;;;;;;;;;;;;;;;:11;:19;24906:6;24894:19;;;;;;;;;;;;;;;:33;24914:12;:10;:12::i;:::-;24894:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24863:8;:121::i;:::-;25002:4;24995:11;;24701:313;;;;;:::o;22237:113::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22334:8:::1;22315:16;;:27;;;;;;;;;;;;;;;;;;22237:113:::0;:::o;15565:81::-;;;:::o;23343:128::-;23396:7;23423:40;23440:22;23450:11;23440:9;:22::i;:::-;23423:12;;:16;;:40;;;;:::i;:::-;23416:47;;23343:128;:::o;22890:129::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23000:10:::1;22972:17;;:39;;;;;;;;;;;;;;;;;;22890:129:::0;:::o;19013:83::-;19054:5;19079:9;;;;;;;;;;;19072:16;;19013:83;:::o;19490:218::-;19578:4;19595:83;19604:12;:10;:12::i;:::-;19618:7;19627:50;19666:10;19627:11;:25;19639:12;:10;:12::i;:::-;19627:25;;;;;;;;;;;;;;;:34;19653:7;19627:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19595:8;:83::i;:::-;19696:4;19689:11;;19490:218;;;;:::o;22611:124::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22719:8:::1;22693:23;:34;;;;22611:124:::0;:::o;15957:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16965:40::-;;;;;;;;;;;;;:::o;22743:139::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22863:10:::1;22830:22;;:44;;;;;;;;;;;;;;;;;;22743:139:::0;:::o;15786:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6602:90::-;6642:7;6669:15;6662:22;;6602:90;:::o;16265:34::-;;;;:::o;23617:807::-;23697:22;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23734:35:::1;23791:16;23734:74;;23857:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23839:53;;;23901:4;23908:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23839:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23822:110;;23974:1;23948:28;;:14;:28;;;23945:225;;;24062:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24044:74;;;24127:4;24134:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24044:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24027:131;;23945:225;24196:14;24182:11;;:28;;;;;;;;;;;;;;;;;;24262:16;24244:15;;:34;;;;;;;;;;;;;;;;;;24360:4;24316:19;:41;24344:11;;;;;;;;;;;24316:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24412:4;24375:12;:34;24396:11;;;;;;;;;;;24375:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6074:1;23617:807:::0;;;:::o;6500:90::-;6546:7;6573:9;;6566:16;;6500:90;:::o;16306:34::-;;;;:::o;19212:119::-;19278:7;19305:9;:18;19315:7;19305:18;;;;;;;;;;;;;;;;19298:25;;19212:119;;;:::o;16606:73::-;;;;:::o;16687:72::-;;;;:::o;16428:37::-;;;;:::o;20635:129::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20748:8:::1;20724:12;:21;20737:7;20724:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20635:129:::0;;:::o;16138:36::-;;;;:::o;15902:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5870:79::-;5908:7;5935:6;;;;;;;;;;;5928:13;;5870:79;:::o;6095:145::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6199:1:::1;6162:40;;6183:6;::::0;::::1;;;;;;;;6162:40;;;;;;;;;;;;6230:1;6213:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6095:145::o:0;18918:87::-;18957:13;18990:7;18983:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18918:87;:::o;19993:120::-;20055:7;20082:23;;20075:30;;19993:120;:::o;16472:43::-;;;;:::o;19716:269::-;19809:4;19826:129;19835:12;:10;:12::i;:::-;19849:7;19858:96;19897:15;19858:96;;;;;;;;;;;;;;;;;:11;:25;19870:12;:10;:12::i;:::-;19858:25;;;;;;;;;;;;;;;:34;19884:7;19858:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19826:8;:129::i;:::-;19973:4;19966:11;;19716:269;;;;:::o;23206:125::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23315:8:::1;23287:25;;:36;;;;;;;;;;;;;;;;;;23206:125:::0;:::o;6938:305::-;7008:10;6990:28;;:14;;;;;;;;;;;:28;;;6982:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7095:9;;7077:15;:27;7069:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7186:14;;;;;;;;;;;7157:44;;7178:6;;;;;;;;;;7157:44;;;;;;;;;;;;7221:14;;;;;;;;;;;7212:6;;:23;;;;;;;;;;;;;;;;;;6938:305::o;16347:29::-;;;;:::o;24526:167::-;24604:4;24621:42;24631:12;:10;:12::i;:::-;24645:9;24656:6;24621:9;:42::i;:::-;;24681:4;24674:11;;24526:167;;;;:::o;21748:358::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21907:17:::1;21889:15;:35;;;;21953:17;21935:15;:35;;;;21994:12;21981:10;:25;;;;22046:52;22087:10;;22046:36;22066:15;;22046;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;22019:24;:79;;;;21748:358:::0;;;:::o;16095:30::-;;;;:::o;23027:171::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23128:8:::1;23104:21;;:32;;;;;;;;;;;;;;;;;;23152:38;23181:8;23152:38;;;;;;:::i;:::-;;;;;;;;23027:171:::0;:::o;16053:35::-;;;;:::o;16898:26::-;;;;;;;;;;;;;:::o;16181:36::-;;;;:::o;15843:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16224:31::-;;;;:::o;15321:99::-;;;;;;;;;;;;;:::o;17012:45::-;;;;;;;;;;;;;:::o;16011:35::-;;;;:::o;6700:226::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6781:6:::1;::::0;::::1;;;;;;;;6764:14;;:23;;;;;;;;;;;;;;;;;;6815:1;6798:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6858:4;6840:15;:22;;;;:::i;:::-;6828:9;:34;;;;6915:1;6878:40;;6899:6;::::0;::::1;;;;;;;;6878:40;;;;;;;;;;;;6700:226:::0;:::o;19339:143::-;19420:7;19447:11;:18;19459:5;19447:18;;;;;;;;;;;;;;;:27;19466:7;19447:27;;;;;;;;;;;;;;;;19440:34;;19339:143;;;;:::o;22118:111::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22210:11:::1;22195:12;:26;;;;22118:111:::0;:::o;20911:135::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21030:8:::1;21001:17;:26;21019:7;21001:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20911:135:::0;;:::o;16385:36::-;;;;:::o;22501:102::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22587:8:::1;22573:10;:22;;;;22501:102:::0;:::o;6248:244::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6357:1:::1;6337:22;;:8;:22;;;;6329:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6447:8;6418:38;;6439:6;::::0;::::1;;;;;;;;6418:38;;;;;;;;;;;;6476:8;6467:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6248:244:::0;:::o;20772:127::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20885:6:::1;20859:15;:23;20875:6;20859:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20772:127:::0;;:::o;17064:35::-;;;;;;;;;;;;;:::o;1240:181::-;1298:7;1318:9;1334:1;1330;:5;;;;:::i;:::-;1318:17;;1359:1;1354;:6;;1346:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1412:1;1405:8;;;1240:181;;;;:::o;172:115::-;225:15;268:10;253:26;;172:115;:::o;20290:337::-;20400:1;20383:19;;:5;:19;;;;20375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20481:1;20462:21;;:7;:21;;;;20454:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20565:6;20535:11;:18;20547:5;20535:18;;;;;;;;;;;;;;;:27;20554:7;20535:27;;;;;;;;;;;;;;;:36;;;;20603:7;20587:32;;20596:5;20587:32;;;20612:6;20587:32;;;;;;:::i;:::-;;;;;;;;20290:337;;;:::o;25022:1707::-;25109:4;25154:1;25136:20;;:6;:20;;;;25128:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25238:1;25217:23;;:9;:23;;;;25209:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25296:16;;;;;;;;;;;25293:1429;;;25346:41;25361:6;25369:9;25380:6;25346:14;:41::i;:::-;25339:48;;;;25293:1429;25443:15;:23;25459:6;25443:23;;;;;;;;;;;;;;;;;;;;;;;;;25442:24;:55;;;;;25471:15;:26;25487:9;25471:26;;;;;;;;;;;;;;;;;;;;;;;;;25470:27;25442:55;25439:170;;;25536:12;;25526:6;:22;;25518:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25439:170;25637:28;25668:24;25686:4;25668:9;:24::i;:::-;25637:55;;25707:28;25762:23;;25738:20;:47;;25707:78;;25818:23;:44;;;;;25846:16;;;;;;;;;;;25845:17;25818:44;:69;;;;;25867:12;:20;25880:6;25867:20;;;;;;;;;;;;;;;;;;;;;;;;;25866:21;25818:69;:94;;;;;25891:21;;;;;;;;;;;25818:94;25814:305;;;25950:25;;;;;;;;;;;25947:97;;;26021:23;;25998:46;;25947:97;26063:36;26078:20;26063:14;:36::i;:::-;25814:305;26155:53;26177:6;26155:53;;;;;;;;;;;;;;;;;:9;:17;26165:6;26155:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26135:9;:17;26145:6;26135:17;;;;;;;;;;;;;;;:73;;;;26225:19;26248:17;:25;26266:6;26248:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;26277:17;:28;26295:9;26277:28;;;;;;;;;;;;;;;;;;;;;;;;;26248:57;26247:148;;26361:34;26369:6;26377:9;26388:6;26361:7;:34::i;:::-;26247:148;;;26352:6;26247:148;26225:170;;26415:16;;;;;;;;;;;:51;;;;;26436:19;:30;26456:9;26436:30;;;;;;;;;;;;;;;;;;;;;;;;;26435:31;26415:51;26412:133;;;26534:10;;26493:37;26518:11;26493:20;26503:9;26493;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;26485:60;;;;;;26412:133;26585:37;26610:11;26585:9;:20;26595:9;26585:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26562:9;:20;26572:9;26562:20;;;;;;;;;;;;;;;:60;;;;26661:9;26644:40;;26653:6;26644:40;;;26672:11;26644:40;;;;;;:::i;:::-;;;;;;;;26706:4;26699:11;;;;;25022:1707;;;;;;:::o;1573:192::-;1659:7;1692:1;1687;:6;;1695:12;1679:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1719:9;1735:1;1731;:5;;;;:::i;:::-;1719:17;;1756:1;1749:8;;;1573:192;;;;;:::o;1429:136::-;1487:7;1514:43;1518:1;1521;1514:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1507:50;;1429:136;;;;:::o;26737:330::-;26830:4;26867:53;26889:6;26867:53;;;;;;;;;;;;;;;;;:9;:17;26877:6;26867:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26847:9;:17;26857:6;26847:17;;;;;;;;;;;;;;;:73;;;;26954:32;26979:6;26954:9;:20;26964:9;26954:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26931:9;:20;26941:9;26931:20;;;;;;;;;;;;;;;:55;;;;27019:9;27002:35;;27011:6;27002:35;;;27030:6;27002:35;;;;;;:::i;:::-;;;;;;;;27055:4;27048:11;;26737:330;;;;;:::o;27075:1048::-;17541:4;17522:16;;:23;;;;;;;;;;;;;;;;;;27157:19:::1;27179:65;27242:1;27179:58;27212:24;;27179:28;27191:15;;27179:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;27157:87;;27255:21;27279:24;27291:11;27279:7;:11;;:24;;;;:::i;:::-;27255:48;;27316:31;27333:13;27316:16;:31::i;:::-;27358:22;27383:21;27358:46;;27417:19;27439:52;27468:22;27488:1;27468:15;;:19;;:22;;;;:::i;:::-;27439:24;;:28;;:52;;;;:::i;:::-;27417:74;;27512:26;27541:59;27598:1;27541:52;27581:11;27541:35;27560:15;;27541:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27512:88;;27611:21;27635:47;27670:11;27635:30;27654:10;;27635:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;27611:71;;27693:26;27722:57;27765:13;27722:38;27741:18;27722:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;27693:86;;27816:1;27795:18;:22;27792:104;;;27832:64;27853:22;;;;;;;;;;;27877:18;27832:20;:64::i;:::-;27792:104;27928:1;27912:13;:17;27909:89;;;27944:54;27965:17;;;;;;;;;;;27984:13;27944:20;:54::i;:::-;27909:89;28035:1;28014:18;:22;:41;;;;;28054:1;28040:11;:15;28014:41;28011:104;;;28070:45;28083:11;28096:18;28070:12;:45::i;:::-;28011:104;17556:1;;;;;;;17587:5:::0;17568:16;;:24;;;;;;;;;;;;;;;;;;27075:1048;:::o;29330:622::-;29416:7;29446:17;29466:1;29446:21;;29491:12;:20;29504:6;29491:20;;;;;;;;;;;;;;;;;;;;;;;;;29488:223;;;29540:38;29574:3;29540:29;29551:17;;29540:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;29528:50;;29488:223;;;29608:12;:23;29621:9;29608:23;;;;;;;;;;;;;;;;;;;;;;;;;29605:106;;;29660:39;29695:3;29660:30;29671:18;;29660:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29648:51;;29605:106;29488:223;29746:1;29734:9;:13;29731:173;;;29791:39;29820:9;29791;:24;29809:4;29791:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;29764:9;:24;29782:4;29764:24;;;;;;;;;;;;;;;:66;;;;29875:4;29850:42;;29859:6;29850:42;;;29882:9;29850:42;;;;;;:::i;:::-;;;;;;;;29731:173;29923:21;29934:9;29923:6;:10;;:21;;;;:::i;:::-;29916:28;;;29330:622;;;;;:::o;1773:250::-;1831:7;1860:1;1855;:6;1851:47;;;1885:1;1878:8;;;;1851:47;1910:9;1926:1;1922;:5;;;;:::i;:::-;1910:17;;1955:1;1950;1946;:5;;;;:::i;:::-;:10;1938:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2014:1;2007:8;;;1773:250;;;;;:::o;2031:132::-;2089:7;2116:39;2120:1;2123;2116:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2109:46;;2031:132;;;;:::o;28135:666::-;28261:21;28299:1;28285:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28261:40;;28330:4;28312;28317:1;28312:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;28356:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28346:4;28351:1;28346:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;28391:62;28408:4;28423:15;;;;;;;;;;;28441:11;28391:8;:62::i;:::-;28492:15;;;;;;;;;;;:66;;;28573:11;28599:1;28643:4;28670;28706:15;28492:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28758:35;28775:11;28788:4;28758:35;;;;;;;:::i;:::-;;;;;;;;28135:666;;:::o;23479:126::-;23571:9;:18;;:26;23590:6;23571:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23479:126;;:::o;28809:513::-;28957:62;28974:4;28989:15;;;;;;;;;;;29007:11;28957:8;:62::i;:::-;29062:15;;;;;;;;;;;:31;;;29101:9;29134:4;29154:11;29180:1;29223;29266:7;:5;:7::i;:::-;29288:15;29062:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28809:513;;:::o;2171:278::-;2257:7;2289:1;2285;:5;2292:12;2277:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2316:9;2332:1;2328;:5;;;;:::i;:::-;2316:17;;2440:1;2433:8;;;2171:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:552::-;3690:6;3698;3706;3755:2;3743:9;3734:7;3730:23;3726:32;3723:2;;;3771:1;3768;3761:12;3723:2;3814:1;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3785:117;3941:2;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3912:118;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3713:452;;;;;:::o;4171:596::-;4259:6;4267;4275;4324:2;4312:9;4303:7;4299:23;4295:32;4292:2;;;4340:1;4337;4330:12;4292:2;4383:1;4408:64;4464:7;4455:6;4444:9;4440:22;4408:64;:::i;:::-;4398:74;;4354:128;4521:2;4547:64;4603:7;4594:6;4583:9;4579:22;4547:64;:::i;:::-;4537:74;;4492:129;4660:2;4686:64;4742:7;4733:6;4722:9;4718:22;4686:64;:::i;:::-;4676:74;;4631:129;4282:485;;;;;:::o;4773:179::-;4842:10;4863:46;4905:3;4897:6;4863:46;:::i;:::-;4941:4;4936:3;4932:14;4918:28;;4853:99;;;;:::o;4958:142::-;5061:32;5087:5;5061:32;:::i;:::-;5056:3;5049:45;5039:61;;:::o;5106:108::-;5183:24;5201:5;5183:24;:::i;:::-;5178:3;5171:37;5161:53;;:::o;5220:118::-;5307:24;5325:5;5307:24;:::i;:::-;5302:3;5295:37;5285:53;;:::o;5374:732::-;5493:3;5522:54;5570:5;5522:54;:::i;:::-;5592:86;5671:6;5666:3;5592:86;:::i;:::-;5585:93;;5702:56;5752:5;5702:56;:::i;:::-;5781:7;5812:1;5797:284;5822:6;5819:1;5816:13;5797:284;;;5898:6;5892:13;5925:63;5984:3;5969:13;5925:63;:::i;:::-;5918:70;;6011:60;6064:6;6011:60;:::i;:::-;6001:70;;5857:224;5844:1;5841;5837:9;5832:14;;5797:284;;;5801:14;6097:3;6090:10;;5498:608;;;;;;;:::o;6112:109::-;6193:21;6208:5;6193:21;:::i;:::-;6188:3;6181:34;6171:50;;:::o;6227:185::-;6341:64;6399:5;6341:64;:::i;:::-;6336:3;6329:77;6319:93;;:::o;6418:147::-;6513:45;6552:5;6513:45;:::i;:::-;6508:3;6501:58;6491:74;;:::o;6571:364::-;6659:3;6687:39;6720:5;6687:39;:::i;:::-;6742:71;6806:6;6801:3;6742:71;:::i;:::-;6735:78;;6822:52;6867:6;6862:3;6855:4;6848:5;6844:16;6822:52;:::i;:::-;6899:29;6921:6;6899:29;:::i;:::-;6894:3;6890:39;6883:46;;6663:272;;;;;:::o;6941:366::-;7083:3;7104:67;7168:2;7163:3;7104:67;:::i;:::-;7097:74;;7180:93;7269:3;7180:93;:::i;:::-;7298:2;7293:3;7289:12;7282:19;;7087:220;;;:::o;7313:366::-;7455:3;7476:67;7540:2;7535:3;7476:67;:::i;:::-;7469:74;;7552:93;7641:3;7552:93;:::i;:::-;7670:2;7665:3;7661:12;7654:19;;7459:220;;;:::o;7685:366::-;7827:3;7848:67;7912:2;7907:3;7848:67;:::i;:::-;7841:74;;7924:93;8013:3;7924:93;:::i;:::-;8042:2;8037:3;8033:12;8026:19;;7831:220;;;:::o;8057:366::-;8199:3;8220:67;8284:2;8279:3;8220:67;:::i;:::-;8213:74;;8296:93;8385:3;8296:93;:::i;:::-;8414:2;8409:3;8405:12;8398:19;;8203:220;;;:::o;8429:366::-;8571:3;8592:67;8656:2;8651:3;8592:67;:::i;:::-;8585:74;;8668:93;8757:3;8668:93;:::i;:::-;8786:2;8781:3;8777:12;8770:19;;8575:220;;;:::o;8801:366::-;8943:3;8964:67;9028:2;9023:3;8964:67;:::i;:::-;8957:74;;9040:93;9129:3;9040:93;:::i;:::-;9158:2;9153:3;9149:12;9142:19;;8947:220;;;:::o;9173:366::-;9315:3;9336:67;9400:2;9395:3;9336:67;:::i;:::-;9329:74;;9412:93;9501:3;9412:93;:::i;:::-;9530:2;9525:3;9521:12;9514:19;;9319:220;;;:::o;9545:366::-;9687:3;9708:67;9772:2;9767:3;9708:67;:::i;:::-;9701:74;;9784:93;9873:3;9784:93;:::i;:::-;9902:2;9897:3;9893:12;9886:19;;9691:220;;;:::o;9917:366::-;10059:3;10080:67;10144:2;10139:3;10080:67;:::i;:::-;10073:74;;10156:93;10245:3;10156:93;:::i;:::-;10274:2;10269:3;10265:12;10258:19;;10063:220;;;:::o;10289:366::-;10431:3;10452:67;10516:2;10511:3;10452:67;:::i;:::-;10445:74;;10528:93;10617:3;10528:93;:::i;:::-;10646:2;10641:3;10637:12;10630:19;;10435:220;;;:::o;10661:366::-;10803:3;10824:67;10888:2;10883:3;10824:67;:::i;:::-;10817:74;;10900:93;10989:3;10900:93;:::i;:::-;11018:2;11013:3;11009:12;11002:19;;10807:220;;;:::o;11033:118::-;11120:24;11138:5;11120:24;:::i;:::-;11115:3;11108:37;11098:53;;:::o;11157:112::-;11240:22;11256:5;11240:22;:::i;:::-;11235:3;11228:35;11218:51;;:::o;11275:222::-;11368:4;11406:2;11395:9;11391:18;11383:26;;11419:71;11487:1;11476:9;11472:17;11463:6;11419:71;:::i;:::-;11373:124;;;;:::o;11503:254::-;11612:4;11650:2;11639:9;11635:18;11627:26;;11663:87;11747:1;11736:9;11732:17;11723:6;11663:87;:::i;:::-;11617:140;;;;:::o;11763:332::-;11884:4;11922:2;11911:9;11907:18;11899:26;;11935:71;12003:1;11992:9;11988:17;11979:6;11935:71;:::i;:::-;12016:72;12084:2;12073:9;12069:18;12060:6;12016:72;:::i;:::-;11889:206;;;;;:::o;12101:807::-;12350:4;12388:3;12377:9;12373:19;12365:27;;12402:71;12470:1;12459:9;12455:17;12446:6;12402:71;:::i;:::-;12483:72;12551:2;12540:9;12536:18;12527:6;12483:72;:::i;:::-;12565:80;12641:2;12630:9;12626:18;12617:6;12565:80;:::i;:::-;12655;12731:2;12720:9;12716:18;12707:6;12655:80;:::i;:::-;12745:73;12813:3;12802:9;12798:19;12789:6;12745:73;:::i;:::-;12828;12896:3;12885:9;12881:19;12872:6;12828:73;:::i;:::-;12355:553;;;;;;;;;:::o;12914:210::-;13001:4;13039:2;13028:9;13024:18;13016:26;;13052:65;13114:1;13103:9;13099:17;13090:6;13052:65;:::i;:::-;13006:118;;;;:::o;13130:276::-;13250:4;13288:2;13277:9;13273:18;13265:26;;13301:98;13396:1;13385:9;13381:17;13372:6;13301:98;:::i;:::-;13255:151;;;;:::o;13412:313::-;13525:4;13563:2;13552:9;13548:18;13540:26;;13612:9;13606:4;13602:20;13598:1;13587:9;13583:17;13576:47;13640:78;13713:4;13704:6;13640:78;:::i;:::-;13632:86;;13530:195;;;;:::o;13731:419::-;13897:4;13935:2;13924:9;13920:18;13912:26;;13984:9;13978:4;13974:20;13970:1;13959:9;13955:17;13948:47;14012:131;14138:4;14012:131;:::i;:::-;14004:139;;13902:248;;;:::o;14156:419::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14409:9;14403:4;14399:20;14395:1;14384:9;14380:17;14373:47;14437:131;14563:4;14437:131;:::i;:::-;14429:139;;14327:248;;;:::o;14581:419::-;14747:4;14785:2;14774:9;14770:18;14762:26;;14834:9;14828:4;14824:20;14820:1;14809:9;14805:17;14798:47;14862:131;14988:4;14862:131;:::i;:::-;14854:139;;14752:248;;;:::o;15006:419::-;15172:4;15210:2;15199:9;15195:18;15187:26;;15259:9;15253:4;15249:20;15245:1;15234:9;15230:17;15223:47;15287:131;15413:4;15287:131;:::i;:::-;15279:139;;15177:248;;;:::o;15431:419::-;15597:4;15635:2;15624:9;15620:18;15612:26;;15684:9;15678:4;15674:20;15670:1;15659:9;15655:17;15648:47;15712:131;15838:4;15712:131;:::i;:::-;15704:139;;15602:248;;;:::o;15856:419::-;16022:4;16060:2;16049:9;16045:18;16037:26;;16109:9;16103:4;16099:20;16095:1;16084:9;16080:17;16073:47;16137:131;16263:4;16137:131;:::i;:::-;16129:139;;16027:248;;;:::o;16281:419::-;16447:4;16485:2;16474:9;16470:18;16462:26;;16534:9;16528:4;16524:20;16520:1;16509:9;16505:17;16498:47;16562:131;16688:4;16562:131;:::i;:::-;16554:139;;16452:248;;;:::o;16706:419::-;16872:4;16910:2;16899:9;16895:18;16887:26;;16959:9;16953:4;16949:20;16945:1;16934:9;16930:17;16923:47;16987:131;17113:4;16987:131;:::i;:::-;16979:139;;16877:248;;;:::o;17131:419::-;17297:4;17335:2;17324:9;17320:18;17312:26;;17384:9;17378:4;17374:20;17370:1;17359:9;17355:17;17348:47;17412:131;17538:4;17412:131;:::i;:::-;17404:139;;17302:248;;;:::o;17556:419::-;17722:4;17760:2;17749:9;17745:18;17737:26;;17809:9;17803:4;17799:20;17795:1;17784:9;17780:17;17773:47;17837:131;17963:4;17837:131;:::i;:::-;17829:139;;17727:248;;;:::o;17981:419::-;18147:4;18185:2;18174:9;18170:18;18162:26;;18234:9;18228:4;18224:20;18220:1;18209:9;18205:17;18198:47;18262:131;18388:4;18262:131;:::i;:::-;18254:139;;18152:248;;;:::o;18406:222::-;18499:4;18537:2;18526:9;18522:18;18514:26;;18550:71;18618:1;18607:9;18603:17;18594:6;18550:71;:::i;:::-;18504:124;;;;:::o;18634:483::-;18805:4;18843:2;18832:9;18828:18;18820:26;;18856:71;18924:1;18913:9;18909:17;18900:6;18856:71;:::i;:::-;18974:9;18968:4;18964:20;18959:2;18948:9;18944:18;18937:48;19002:108;19105:4;19096:6;19002:108;:::i;:::-;18994:116;;18810:307;;;;;:::o;19123:831::-;19386:4;19424:3;19413:9;19409:19;19401:27;;19438:71;19506:1;19495:9;19491:17;19482:6;19438:71;:::i;:::-;19519:80;19595:2;19584:9;19580:18;19571:6;19519:80;:::i;:::-;19646:9;19640:4;19636:20;19631:2;19620:9;19616:18;19609:48;19674:108;19777:4;19768:6;19674:108;:::i;:::-;19666:116;;19792:72;19860:2;19849:9;19845:18;19836:6;19792:72;:::i;:::-;19874:73;19942:3;19931:9;19927:19;19918:6;19874:73;:::i;:::-;19391:563;;;;;;;;:::o;19960:214::-;20049:4;20087:2;20076:9;20072:18;20064:26;;20100:67;20164:1;20153:9;20149:17;20140:6;20100:67;:::i;:::-;20054:120;;;;:::o;20180:132::-;20247:4;20270:3;20262:11;;20300:4;20295:3;20291:14;20283:22;;20252:60;;;:::o;20318:114::-;20385:6;20419:5;20413:12;20403:22;;20392:40;;;:::o;20438:99::-;20490:6;20524:5;20518:12;20508:22;;20497:40;;;:::o;20543:113::-;20613:4;20645;20640:3;20636:14;20628:22;;20618:38;;;:::o;20662:184::-;20761:11;20795:6;20790:3;20783:19;20835:4;20830:3;20826:14;20811:29;;20773:73;;;;:::o;20852:169::-;20936:11;20970:6;20965:3;20958:19;21010:4;21005:3;21001:14;20986:29;;20948:73;;;;:::o;21027:305::-;21067:3;21086:20;21104:1;21086:20;:::i;:::-;21081:25;;21120:20;21138:1;21120:20;:::i;:::-;21115:25;;21274:1;21206:66;21202:74;21199:1;21196:81;21193:2;;;21280:18;;:::i;:::-;21193:2;21324:1;21321;21317:9;21310:16;;21071:261;;;;:::o;21338:185::-;21378:1;21395:20;21413:1;21395:20;:::i;:::-;21390:25;;21429:20;21447:1;21429:20;:::i;:::-;21424:25;;21468:1;21458:2;;21473:18;;:::i;:::-;21458:2;21515:1;21512;21508:9;21503:14;;21380:143;;;;:::o;21529:348::-;21569:7;21592:20;21610:1;21592:20;:::i;:::-;21587:25;;21626:20;21644:1;21626:20;:::i;:::-;21621:25;;21814:1;21746:66;21742:74;21739:1;21736:81;21731:1;21724:9;21717:17;21713:105;21710:2;;;21821:18;;:::i;:::-;21710:2;21869:1;21866;21862:9;21851:20;;21577:300;;;;:::o;21883:191::-;21923:4;21943:20;21961:1;21943:20;:::i;:::-;21938:25;;21977:20;21995:1;21977:20;:::i;:::-;21972:25;;22016:1;22013;22010:8;22007:2;;;22021:18;;:::i;:::-;22007:2;22066:1;22063;22059:9;22051:17;;21928:146;;;;:::o;22080:96::-;22117:7;22146:24;22164:5;22146:24;:::i;:::-;22135:35;;22125:51;;;:::o;22182:104::-;22227:7;22256:24;22274:5;22256:24;:::i;:::-;22245:35;;22235:51;;;:::o;22292:90::-;22326:7;22369:5;22362:13;22355:21;22344:32;;22334:48;;;:::o;22388:126::-;22425:7;22465:42;22458:5;22454:54;22443:65;;22433:81;;;:::o;22520:77::-;22557:7;22586:5;22575:16;;22565:32;;;:::o;22603:86::-;22638:7;22678:4;22671:5;22667:16;22656:27;;22646:43;;;:::o;22695:180::-;22772:9;22805:64;22863:5;22805:64;:::i;:::-;22792:77;;22782:93;;;:::o;22881:140::-;22958:9;22991:24;23009:5;22991:24;:::i;:::-;22978:37;;22968:53;;;:::o;23027:121::-;23085:9;23118:24;23136:5;23118:24;:::i;:::-;23105:37;;23095:53;;;:::o;23154:307::-;23222:1;23232:113;23246:6;23243:1;23240:13;23232:113;;;23331:1;23326:3;23322:11;23316:18;23312:1;23307:3;23303:11;23296:39;23268:2;23265:1;23261:10;23256:15;;23232:113;;;23363:6;23360:1;23357:13;23354:2;;;23443:1;23434:6;23429:3;23425:16;23418:27;23354:2;23203:258;;;;:::o;23467:320::-;23511:6;23548:1;23542:4;23538:12;23528:22;;23595:1;23589:4;23585:12;23616:18;23606:2;;23672:4;23664:6;23660:17;23650:27;;23606:2;23734;23726:6;23723:14;23703:18;23700:38;23697:2;;;23753:18;;:::i;:::-;23697:2;23518:269;;;;:::o;23793:180::-;23841:77;23838:1;23831:88;23938:4;23935:1;23928:15;23962:4;23959:1;23952:15;23979:180;24027:77;24024:1;24017:88;24124:4;24121:1;24114:15;24148:4;24145:1;24138:15;24165:180;24213:77;24210:1;24203:88;24310:4;24307:1;24300:15;24334:4;24331:1;24324:15;24351:102;24392:6;24443:2;24439:7;24434:2;24427:5;24423:14;24419:28;24409:38;;24399:54;;;:::o;24459:222::-;24599:34;24595:1;24587:6;24583:14;24576:58;24668:5;24663:2;24655:6;24651:15;24644:30;24565:116;:::o;24687:225::-;24827:34;24823:1;24815:6;24811:14;24804:58;24896:8;24891:2;24883:6;24879:15;24872:33;24793:119;:::o;24918:221::-;25058:34;25054:1;25046:6;25042:14;25035:58;25127:4;25122:2;25114:6;25110:15;25103:29;25024:115;:::o;25145:177::-;25285:29;25281:1;25273:6;25269:14;25262:53;25251:71;:::o;25328:227::-;25468:34;25464:1;25456:6;25452:14;25445:58;25537:10;25532:2;25524:6;25520:15;25513:35;25434:121;:::o;25561:220::-;25701:34;25697:1;25689:6;25685:14;25678:58;25770:3;25765:2;25757:6;25753:15;25746:28;25667:114;:::o;25787:182::-;25927:34;25923:1;25915:6;25911:14;25904:58;25893:76;:::o;25975:224::-;26115:34;26111:1;26103:6;26099:14;26092:58;26184:7;26179:2;26171:6;26167:15;26160:32;26081:118;:::o;26205:223::-;26345:34;26341:1;26333:6;26329:14;26322:58;26414:6;26409:2;26401:6;26397:15;26390:31;26311:117;:::o;26434:181::-;26574:33;26570:1;26562:6;26558:14;26551:57;26540:75;:::o;26621:222::-;26761:34;26757:1;26749:6;26745:14;26738:58;26830:5;26825:2;26817:6;26813:15;26806:30;26727:116;:::o;26849:122::-;26922:24;26940:5;26922:24;:::i;:::-;26915:5;26912:35;26902:2;;26961:1;26958;26951:12;26902:2;26892:79;:::o;26977:116::-;27047:21;27062:5;27047:21;:::i;:::-;27040:5;27037:32;27027:2;;27083:1;27080;27073:12;27027:2;27017:76;:::o;27099:122::-;27172:24;27190:5;27172:24;:::i;:::-;27165:5;27162:35;27152:2;;27211:1;27208;27201:12;27152:2;27142:79;:::o

Swarm Source

ipfs://68461a877db26f2590682ef1c52e326fb6c162bd25f81d8f85d8c59a6141c598
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.