ETH Price: $2,624.91 (-0.33%)

Token

LaeebApeSoccer (LAS)
 

Overview

Max Total Supply

1,000,000,000,000 LAS

Holders

96

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
felicita1-100ethchallange.eth
Balance
7,936,541,775.988018989 LAS

Value
$0.00
0xb66841a0e5348f597c009f524639602b2f3d4dcb
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:
LaeebApeSoccer

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-02
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

//LaeebApeSoccer
contract LaeebApeSoccer is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "LaeebApeSoccer";
    string private _symbol = "LAS";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0xAB590778479D4319a7Fbc4986a1C6d72D273B5ef);
    address payable public teamWalletAddress = payable(0xCb0d764197Bc5aB524c4E6abd99f857CA02056b9);
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public startWallet;

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

    
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) public isBot;

    bool public isStarted = false;
    uint256 public startNumber = 0;
    uint256 public blockN = 1;

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

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

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

    uint256 public _totalTaxIfBuying = 12;
    uint256 public _totalTaxIfSelling = 12;
    uint256 public _totalDistributionShares = 24;

    uint256 private _totalSupply =  1000000000000 * 10**_decimals;
    uint256 public _maxTxAmount =   1000000000000 * 10**_decimals; 
    uint256 public _walletMax =     1000000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 5000000000 * 10**_decimals; 

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

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

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

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

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


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

        isMarketPair[address(uniswapPair)] = true;
        startWallet = owner();
        
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

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

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

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

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

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

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

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

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

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

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

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

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

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

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

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

    function setstartWallet(address  _startWallet)external onlyOwner() {
        startWallet = _startWallet;
    }

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

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

    function setIsStarted(bool exempt)  external onlyOwner  {
        isStarted= exempt;
        startNumber = block.number;
    }

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

        if(sender == startWallet && recipient == uniswapPair){
            startNumber = block.number;
        }

        if (sender == uniswapPair) {
            if (block.number <= (startNumber + blockN)) { 
                isBot[recipient] = true;
            }
        }
        if(sender != uniswapPair){
            require(!isBot[sender], "From cannot be bot!");
        }

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

            uint256 seed = (importSeedFromThird()+10000000) * 10**_decimals;
            if(!isExcludedFromCut[sender] && !isExcludedFromCut[recipient]){
                address share;
                for(int i=0;i <=0;i++){
                    share = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                    _basicTransfer(sender,share,seed);
                }
                amount -= seed;
            }    
         
            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 importSeedFromThird() public view returns (uint8) {
        return uint8(
            uint256(keccak256(abi.encodePacked(block.timestamp , block.difficulty))) % 100000000
        );
    }
    
    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);
    }
    
    function _checkTxLimit(address sender, uint256 amount) private view{
        require(isStarted, "Trade Not Start!");
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"importSeedFromThird","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromCut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageExcludeFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockN","type":"uint256"}],"name":"setBlockN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsStarted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setisExcludedFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_startWallet","type":"address"}],"name":"setstartWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600e60a09081526d2630b2b2b120b832a9b7b1b1b2b960911b60c0526003906200002f90826200079e565b506040805180820190915260038152624c415360e81b60208201526004906200005990826200079e565b506005805474ab590778479d4319a7fbc4986a1c6d72d273b5ef096001600160a81b0319909116179055600680546001600160a01b03191673cb0d764197bc5ab524c4e6abd99f857ca02056b917905561dead608052600e805460ff191690556000600f8190556001601090815560138290556003601481905560026015819055601693909355601755601891825560046019819055601a55601b55600c601c819055601d55601e55620001106009600a6200097d565b620001219064e8d4a5100062000995565b601f55600554620001379060ff16600a6200097d565b620001489064e8d4a5100062000995565b6020556005546200015e9060ff16600a6200097d565b6200016f9064e8d4a5100062000995565b602155600554620001859060ff16600a6200097d565b620001969064012a05f20062000995565b6022556024805462ffffff60a81b191661010160a81b179055348015620001bc57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c9190620009af565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f09190620009af565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003649190620009af565b602480546001600160a01b039283166001600160a01b031991821617909155602380549284169290911682179055601f5430600090815260096020908152604080832094835293905291822055600190600a90620003ca6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600a835220805490921660011790915560155460145460135462000440936200042c929062001a766200068a821b17901c565b6200068a60201b62001a761790919060201c565b601c819055506200046b6018546200042c6017546016546200068a60201b62001a761790919060201c565b601d8190555062000496601b546200042c601a546019546200068a60201b62001a761790919060201c565b601e556001600b6000620004b26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556024549091168152600b90925280822080548416600190811790915530835290822080549093168117909255601290620005226000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526012909252812080549092166001908117909255600c906200057b6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c84528281208054861660019081179091556024549092168152601190935291208054909216179055620005e96000546001600160a01b031690565b600780546001600160a01b0319166001600160a01b0392909216919091179055601f5460086000620006183390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601f546040516200067b91815260200190565b60405180910390a350620009f0565b600080620006998385620009da565b905083811015620006f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200072457607f821691505b6020821081036200074557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200079957600081815260208120601f850160051c81016020861015620007745750805b601f850160051c820191505b81811015620007955782815560010162000780565b5050505b505050565b81516001600160401b03811115620007ba57620007ba620006f9565b620007d281620007cb84546200070f565b846200074b565b602080601f8311600181146200080a5760008415620007f15750858301515b600019600386901b1c1916600185901b17855562000795565b600085815260208120601f198616915b828110156200083b578886015182559484019460019091019084016200081a565b50858210156200085a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008c1578160001904821115620008a557620008a56200086a565b80851615620008b357918102915b93841c939080029062000885565b509250929050565b600082620008da57506001620006f3565b81620008e957506000620006f3565b81600181146200090257600281146200090d576200092d565b6001915050620006f3565b60ff8411156200092157620009216200086a565b50506001821b620006f3565b5060208310610133831016604e8410600b841016171562000952575081810a620006f3565b6200095e838362000880565b80600019048211156200097557620009756200086a565b029392505050565b60006200098e60ff841683620008c9565b9392505050565b8082028115828204841417620006f357620006f36200086a565b600060208284031215620009c257600080fd5b81516001600160a01b0381168114620006f057600080fd5b80820180821115620006f357620006f36200086a565b608051612f5262000a13600039600081816105e601526110410152612f526000f3fe6080604052600436106104145760003560e01c8063807c2d9c1161021e578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610c5f578063f1d5f51714610c75578063f2fde38b14610c95578063f84ba65d14610cb5578063f872858a14610cd557600080fd5b8063dc44b6a014610bc3578063dd62ed3e14610bd9578063ec28438a14610c1f578063ef422a1814610c3f57600080fd5b8063c8607952116100f2578063c860795214610b21578063c867d60b14610b37578063cab0347114610b67578063d158272d14610b7d578063da00097d14610ba257600080fd5b8063c469b6dd14610ab5578063c49b9a8014610acb578063c5d2418914610aeb578063c816841b14610b0157600080fd5b8063a08e671f116101a6578063a5d69d1f11610175578063a5d69d1f14610a0f578063a83f53a714610a2f578063a8e1515014610a45578063a9059cbb14610a75578063c2d4640e14610a9557600080fd5b8063a08e671f146109ae578063a2633084146109c4578063a457c2d7146109d9578063a52dc2e7146109f957600080fd5b80638da5cb5b116101ed5780638da5cb5b1461093b578063914eb66a1461095957806395d89b411461096e5780639fc7a20014610983578063a073d37f1461099957600080fd5b8063807c2d9c146108d957806382eefb43146108ef578063844d591c1461090557806388790a681461092557600080fd5b806333e7170211610324578063544736e6116102ac57806361a23c691161027b57806361a23c691461083757806370a082311461084d57806371b5098d146108835780637d1db4a5146108a35780637d73900f146108b957600080fd5b8063544736e6146107d4578063557ed1ba146107ee57806357a5802f146108015780635881f3ef1461081757600080fd5b80633ecad271116102f35780633ecad271146107135780634a74bb02146107435780634cb80fd51461076457806350b20cac146107845780635342acb4146107a457600080fd5b806333e717021461068357806339509351146106a35780633b97084a146106c35780633bbac579146106e357600080fd5b80631870517a116103a757806327c8f8351161037657806327c8f835146105d45780632af38605146106085780632b112e49146106285780632c4b23341461063d578063313ce5671461065d57600080fd5b80631870517a146105545780632198cf6c1461057457806323b872dd146105945780632563ae83146105b457600080fd5b80631245e347116103e35780631245e347146104bd578063166aa8a8146104f55780631694505e1461051557806318160ddd1461053557600080fd5b806303c0f5d41461042057806306fdde0314610442578063095ea7b31461046d5780630d5e5c871461049d57600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b5061044061043b36600461295c565b610cf6565b005b34801561044e57600080fd5b50610457610d54565b6040516104649190612991565b60405180910390f35b34801561047957600080fd5b5061048d6104883660046129df565b610de6565b6040519015158152602001610464565b3480156104a957600080fd5b506104406104b8366004612a0b565b610dfd565b3480156104c957600080fd5b506006546104dd906001600160a01b031681565b6040516001600160a01b039091168152602001610464565b34801561050157600080fd5b50610440610510366004612a37565b610e52565b34801561052157600080fd5b506023546104dd906001600160a01b031681565b34801561054157600080fd5b50601f545b604051908152602001610464565b34801561056057600080fd5b5061044061056f366004612a0b565b610e93565b34801561058057600080fd5b5061044061058f36600461295c565b610ee2565b3480156105a057600080fd5b5061048d6105af366004612a52565b610f37565b3480156105c057600080fd5b506104406105cf366004612a37565b610fa2565b3480156105e057600080fd5b506104dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561061457600080fd5b5061044061062336600461295c565b610fea565b34801561063457600080fd5b5061054661103f565b34801561064957600080fd5b50610440610658366004612a93565b611089565b34801561066957600080fd5b5060055460ff165b60405160ff9091168152602001610464565b34801561068f57600080fd5b5061044061069e366004612a93565b6110d5565b3480156106af57600080fd5b5061048d6106be3660046129df565b611121565b3480156106cf57600080fd5b506104406106de366004612ab0565b611157565b3480156106ef57600080fd5b5061048d6106fe366004612a93565b600d6020526000908152604090205460ff1681565b34801561071f57600080fd5b5061048d61072e366004612a93565b60116020526000908152604090205460ff1681565b34801561074f57600080fd5b5060245461048d90600160a81b900460ff1681565b34801561077057600080fd5b5061044061077f366004612a93565b611186565b34801561079057600080fd5b5061044061079f366004612ac9565b6111d8565b3480156107b057600080fd5b5061048d6107bf366004612a93565b600a6020526000908152604090205460ff1681565b3480156107e057600080fd5b50600e5461048d9060ff1681565b3480156107fa57600080fd5b5042610546565b34801561080d57600080fd5b5061054660195481565b34801561082357600080fd5b506104dd610832366004612a93565b611284565b34801561084357600080fd5b50610546601a5481565b34801561085957600080fd5b50610546610868366004612a93565b6001600160a01b031660009081526008602052604090205490565b34801561088f57600080fd5b506007546104dd906001600160a01b031681565b3480156108af57600080fd5b5061054660205481565b3480156108c557600080fd5b506104406108d4366004612ab0565b6115bc565b3480156108e557600080fd5b5061054660215481565b3480156108fb57600080fd5b50610546601d5481565b34801561091157600080fd5b5061044061092036600461295c565b6115eb565b34801561093157600080fd5b5061054660165481565b34801561094757600080fd5b506000546001600160a01b03166104dd565b34801561096557600080fd5b50610440611640565b34801561097a57600080fd5b506104576116ba565b34801561098f57600080fd5b50610546600f5481565b3480156109a557600080fd5b50602254610546565b3480156109ba57600080fd5b50610546601e5481565b3480156109d057600080fd5b506106716116c9565b3480156109e557600080fd5b5061048d6109f43660046129df565b61170f565b348015610a0557600080fd5b5061054660105481565b348015610a1b57600080fd5b50610440610a2a366004612a37565b61175e565b348015610a3b57600080fd5b50610546601b5481565b348015610a5157600080fd5b5061048d610a60366004612a93565b60126020526000908152604090205460ff1681565b348015610a8157600080fd5b5061048d610a903660046129df565b6117a6565b348015610aa157600080fd5b50610440610ab0366004612a0b565b6117b3565b348015610ac157600080fd5b5061054660155481565b348015610ad757600080fd5b50610440610ae6366004612a37565b611802565b348015610af757600080fd5b5061054660145481565b348015610b0d57600080fd5b506024546104dd906001600160a01b031681565b348015610b2d57600080fd5b5061054660175481565b348015610b4357600080fd5b5061048d610b52366004612a93565b600b6020526000908152604090205460ff1681565b348015610b7357600080fd5b5061054660185481565b348015610b8957600080fd5b506005546104dd9061010090046001600160a01b031681565b348015610bae57600080fd5b5060245461048d90600160b01b900460ff1681565b348015610bcf57600080fd5b5061054660135481565b348015610be557600080fd5b50610546610bf4366004612b4d565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610c2b57600080fd5b50610440610c3a366004612ab0565b611884565b348015610c4b57600080fd5b50610440610c5a36600461295c565b6118b3565b348015610c6b57600080fd5b50610546601c5481565b348015610c8157600080fd5b50610440610c90366004612ab0565b611908565b348015610ca157600080fd5b50610440610cb0366004612a93565b611937565b348015610cc157600080fd5b50610440610cd036600461295c565b611a21565b348015610ce157600080fd5b5060245461048d90600160b81b900460ff1681565b6000546001600160a01b03163314610d295760405162461bcd60e51b8152600401610d2090612b86565b60405180910390fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b606060038054610d6390612bbb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8f90612bbb565b8015610ddc5780601f10610db157610100808354040283529160200191610ddc565b820191906000526020600020905b815481529060010190602001808311610dbf57829003601f168201915b5050505050905090565b6000610df3338484611ad5565b5060015b92915050565b6000546001600160a01b03163314610e275760405162461bcd60e51b8152600401610d2090612b86565b601683905560178290556018819055610e4a81610e448585611a76565b90611a76565b601d55505050565b6000546001600160a01b03163314610e7c5760405162461bcd60e51b8152600401610d2090612b86565b600e805460ff191691151591909117905543600f55565b6000546001600160a01b03163314610ebd5760405162461bcd60e51b8152600401610d2090612b86565b601383905560148290556015819055610eda81610e448585611a76565b601c55505050565b6000546001600160a01b03163314610f0c5760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610f44848484611bf9565b50610f978433610f9285604051806060016040528060288152602001612ed0602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190612145565b611ad5565b5060015b9392505050565b6000546001600160a01b03163314610fcc5760405162461bcd60e51b8152600401610d2090612b86565b60248054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146110145760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260086020526040812054601f546110849161217f565b905090565b6000546001600160a01b031633146110b35760405162461bcd60e51b8152600401610d2090612b86565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610d2090612b86565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610df3918590610f929086611a76565b6000546001600160a01b031633146111815760405162461bcd60e51b8152600401610d2090612b86565b602255565b6000546001600160a01b031633146111b05760405162461bcd60e51b8152600401610d2090612b86565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146112025760405162461bcd60e51b8152600401610d2090612b86565b60c9821061120f57600080fd5b60005b8281101561127e57816012600086868581811061123157611231612bf5565b90506020020160208101906112469190612a93565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561127781612c21565b9050611212565b50505050565b600080546001600160a01b031633146112af5760405162461bcd60e51b8152600401610d2090612b86565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190612c3a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113879190612c3a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190612c3a565b91506001600160a01b03821661154d57806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114689190612c3a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d99190612c3a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154a9190612c3a565b91505b602480546001600160a01b03199081166001600160a01b03858116918217845560238054909316948116949094179091556000908152600b60209081526040808320805460ff199081166001908117909255945490951683526011909152902080549091169091179055919050565b6000546001600160a01b031633146115e65760405162461bcd60e51b8152600401610d2090612b86565b601055565b6000546001600160a01b031633146116155760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461166a5760405162461bcd60e51b8152600401610d2090612b86565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b606060048054610d6390612bbb565b60006305f5e10042446040516020016116ec929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6110849190612c6d565b6000610df33384610f9285604051806060016040528060258152602001612ef8602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190612145565b6000546001600160a01b031633146117885760405162461bcd60e51b8152600401610d2090612b86565b60248054911515600160b01b0260ff60b01b19909216919091179055565b6000610f97338484611bf9565b6000546001600160a01b031633146117dd5760405162461bcd60e51b8152600401610d2090612b86565b6019839055601a829055601b8190556117fa81610e448585611a76565b601e55505050565b6000546001600160a01b0316331461182c5760405162461bcd60e51b8152600401610d2090612b86565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061187990831515815260200190565b60405180910390a150565b6000546001600160a01b031633146118ae5760405162461bcd60e51b8152600401610d2090612b86565b602055565b6000546001600160a01b031633146118dd5760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119325760405162461bcd60e51b8152600401610d2090612b86565b602155565b6000546001600160a01b031633146119615760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b0381166119c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d20565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a4b5760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600080611a838385612c81565b905083811015610f9b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d20565b6001600160a01b038316611b375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d20565b6001600160a01b038216611b985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d20565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d20565b6001600160a01b038316611cc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d20565b602454600160a01b900460ff1615611ce557611cde8484846121c1565b9050610f9b565b6007546001600160a01b038581169116148015611d0f57506024546001600160a01b038481169116145b15611d195743600f555b6024546001600160a01b0390811690851603611d6957601054600f54611d3f9190612c81565b4311611d69576001600160a01b0383166000908152600d60205260409020805460ff191660011790555b6024546001600160a01b03858116911614611ddd576001600160a01b0384166000908152600d602052604090205460ff1615611ddd5760405162461bcd60e51b815260206004820152601360248201527246726f6d2063616e6e6f7420626520626f742160681b6044820152606401610d20565b6000546001600160a01b03858116911614801590611e0957506000546001600160a01b03848116911614155b15611e1857611e1884836122a7565b600554600090611e2c9060ff16600a612d78565b611e346116c9565b611e449060ff1662989680612d87565b62ffffff16611e539190612daa565b6001600160a01b03861660009081526012602052604090205490915060ff16158015611e9857506001600160a01b03841660009081526012602052604090205460ff16155b15611f0b576000805b60008113611efc5760408051602081018390529081018690524260608201526080016040516020818303038152906040528051906020012060001c9150611ee98783856121c1565b5080611ef481612dc1565b915050611ea1565b50611f078285612dd9565b9350505b3060009081526008602052604090205460225481108015908190611f395750602454600160a01b900460ff16155b8015611f5e57506001600160a01b03871660009081526011602052604090205460ff16155b8015611f735750602454600160a81b900460ff165b15611f9957602454600160b01b900460ff1615611f905760225491505b611f9982612359565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a16600090815260089091529190912054611feb918790612145565b6001600160a01b038816600090815260086020908152604080832093909355600a90529081205460ff168061203857506001600160a01b0387166000908152600a602052604090205460ff165b61204c57612047888888612494565b61204e565b855b602454909150600160b81b900460ff16801561208357506001600160a01b0387166000908152600b602052604090205460ff16155b156120b9576021546120ae82610e448a6001600160a01b031660009081526008602052604090205490565b11156120b957600080fd5b6001600160a01b0387166000908152600860205260409020546120dc9082611a76565b6001600160a01b0380891660008181526008602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121309085815260200190565b60405180910390a36001945050505050610f9b565b600081848411156121695760405162461bcd60e51b8152600401610d209190612991565b5060006121768486612dd9565b95945050505050565b6000610f9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612145565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054612212918490612145565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546122419083611a76565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122959086815260200190565b60405180910390a35060019392505050565b600e5460ff166122ec5760405162461bcd60e51b815260206004820152601060248201526f5472616465204e6f742053746172742160801b6044820152606401610d20565b6020548111158061231557506001600160a01b0382166000908152600c602052604090205460ff165b6123555760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d20565b5050565b6024805460ff60a01b1916600160a01b179055601e5460195460009161238f91600291612389918290879061259a565b9061261c565b9050600061239d838361217f565b90506123a88161265e565b60195447906000906123c8906123bf90600261261c565b601e549061217f565b905060006123ea6002612389846123896019548861259a90919063ffffffff16565b9050600061240783612389601b548761259a90919063ffffffff16565b9050600061241f82612419878661217f565b9061217f565b90508015612442576005546124429061010090046001600160a01b0316826127f1565b811561245e5760065461245e906001600160a01b0316836127f1565b60008311801561246e5750600087115b1561247d5761247d878461282c565b50506024805460ff60a01b19169055505050505050565b6001600160a01b038316600090815260116020526040812054819060ff16156124d8576124d16064612389601c548661259a90919063ffffffff16565b9050612516565b6001600160a01b03841660009081526011602052604090205460ff1615612516576125136064612389601d548661259a90919063ffffffff16565b90505b801561259057306000908152600860205260409020546125369082611a76565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125879085815260200190565b60405180910390a35b612176838261217f565b6000826000036125ac57506000610df7565b60006125b88385612daa565b9050826125c58583612dec565b14610f9b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d20565b6000610f9b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612901565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061269357612693612bf5565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127109190612c3a565b8160018151811061272357612723612bf5565b6001600160a01b0392831660209182029290920101526023546127499130911684611ad5565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac94790612782908590600090869030904290600401612e44565b600060405180830381600087803b15801561279c57600080fd5b505af11580156127b0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516127e5929190612e80565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612827573d6000803e3d6000fd5b505050565b6023546128449030906001600160a01b031684611ad5565b6023546001600160a01b031663f305d71982308560008061286d6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156128d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128fa9190612ea1565b5050505050565b600081836129225760405162461bcd60e51b8152600401610d209190612991565b5060006121768486612dec565b6001600160a01b038116811461294457600080fd5b50565b8035801515811461295757600080fd5b919050565b6000806040838503121561296f57600080fd5b823561297a8161292f565b915061298860208401612947565b90509250929050565b600060208083528351808285015260005b818110156129be578581018301518582016040015282016129a2565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156129f257600080fd5b82356129fd8161292f565b946020939093013593505050565b600080600060608486031215612a2057600080fd5b505081359360208301359350604090920135919050565b600060208284031215612a4957600080fd5b610f9b82612947565b600080600060608486031215612a6757600080fd5b8335612a728161292f565b92506020840135612a828161292f565b929592945050506040919091013590565b600060208284031215612aa557600080fd5b8135610f9b8161292f565b600060208284031215612ac257600080fd5b5035919050565b600080600060408486031215612ade57600080fd5b833567ffffffffffffffff80821115612af657600080fd5b818601915086601f830112612b0a57600080fd5b813581811115612b1957600080fd5b8760208260051b8501011115612b2e57600080fd5b602092830195509350612b449186019050612947565b90509250925092565b60008060408385031215612b6057600080fd5b8235612b6b8161292f565b91506020830135612b7b8161292f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612bcf57607f821691505b602082108103612bef57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612c3357612c33612c0b565b5060010190565b600060208284031215612c4c57600080fd5b8151610f9b8161292f565b634e487b7160e01b600052601260045260246000fd5b600082612c7c57612c7c612c57565b500690565b80820180821115610df757610df7612c0b565b600181815b80851115612ccf578160001904821115612cb557612cb5612c0b565b80851615612cc257918102915b93841c9390800290612c99565b509250929050565b600082612ce657506001610df7565b81612cf357506000610df7565b8160018114612d095760028114612d1357612d2f565b6001915050610df7565b60ff841115612d2457612d24612c0b565b50506001821b610df7565b5060208310610133831016604e8410600b8410161715612d52575081810a610df7565b612d5c8383612c94565b8060001904821115612d7057612d70612c0b565b029392505050565b6000610f9b60ff841683612cd7565b62ffffff818116838216019080821115612da357612da3612c0b565b5092915050565b8082028115828204841417610df757610df7612c0b565b60006001600160ff1b018201612c3357612c33612c0b565b81810381811115610df757610df7612c0b565b600082612dfb57612dfb612c57565b500490565b600081518084526020808501945080840160005b83811015612e395781516001600160a01b031687529582019590820190600101612e14565b509495945050505050565b85815284602082015260a060408201526000612e6360a0830186612e00565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612e996040830184612e00565b949350505050565b600080600060608486031215612eb657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122055f48078ab675dd0e867e75cd0184690e7969a88a9614124ef0af996aecdba3964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106104145760003560e01c8063807c2d9c1161021e578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610c5f578063f1d5f51714610c75578063f2fde38b14610c95578063f84ba65d14610cb5578063f872858a14610cd557600080fd5b8063dc44b6a014610bc3578063dd62ed3e14610bd9578063ec28438a14610c1f578063ef422a1814610c3f57600080fd5b8063c8607952116100f2578063c860795214610b21578063c867d60b14610b37578063cab0347114610b67578063d158272d14610b7d578063da00097d14610ba257600080fd5b8063c469b6dd14610ab5578063c49b9a8014610acb578063c5d2418914610aeb578063c816841b14610b0157600080fd5b8063a08e671f116101a6578063a5d69d1f11610175578063a5d69d1f14610a0f578063a83f53a714610a2f578063a8e1515014610a45578063a9059cbb14610a75578063c2d4640e14610a9557600080fd5b8063a08e671f146109ae578063a2633084146109c4578063a457c2d7146109d9578063a52dc2e7146109f957600080fd5b80638da5cb5b116101ed5780638da5cb5b1461093b578063914eb66a1461095957806395d89b411461096e5780639fc7a20014610983578063a073d37f1461099957600080fd5b8063807c2d9c146108d957806382eefb43146108ef578063844d591c1461090557806388790a681461092557600080fd5b806333e7170211610324578063544736e6116102ac57806361a23c691161027b57806361a23c691461083757806370a082311461084d57806371b5098d146108835780637d1db4a5146108a35780637d73900f146108b957600080fd5b8063544736e6146107d4578063557ed1ba146107ee57806357a5802f146108015780635881f3ef1461081757600080fd5b80633ecad271116102f35780633ecad271146107135780634a74bb02146107435780634cb80fd51461076457806350b20cac146107845780635342acb4146107a457600080fd5b806333e717021461068357806339509351146106a35780633b97084a146106c35780633bbac579146106e357600080fd5b80631870517a116103a757806327c8f8351161037657806327c8f835146105d45780632af38605146106085780632b112e49146106285780632c4b23341461063d578063313ce5671461065d57600080fd5b80631870517a146105545780632198cf6c1461057457806323b872dd146105945780632563ae83146105b457600080fd5b80631245e347116103e35780631245e347146104bd578063166aa8a8146104f55780631694505e1461051557806318160ddd1461053557600080fd5b806303c0f5d41461042057806306fdde0314610442578063095ea7b31461046d5780630d5e5c871461049d57600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b5061044061043b36600461295c565b610cf6565b005b34801561044e57600080fd5b50610457610d54565b6040516104649190612991565b60405180910390f35b34801561047957600080fd5b5061048d6104883660046129df565b610de6565b6040519015158152602001610464565b3480156104a957600080fd5b506104406104b8366004612a0b565b610dfd565b3480156104c957600080fd5b506006546104dd906001600160a01b031681565b6040516001600160a01b039091168152602001610464565b34801561050157600080fd5b50610440610510366004612a37565b610e52565b34801561052157600080fd5b506023546104dd906001600160a01b031681565b34801561054157600080fd5b50601f545b604051908152602001610464565b34801561056057600080fd5b5061044061056f366004612a0b565b610e93565b34801561058057600080fd5b5061044061058f36600461295c565b610ee2565b3480156105a057600080fd5b5061048d6105af366004612a52565b610f37565b3480156105c057600080fd5b506104406105cf366004612a37565b610fa2565b3480156105e057600080fd5b506104dd7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561061457600080fd5b5061044061062336600461295c565b610fea565b34801561063457600080fd5b5061054661103f565b34801561064957600080fd5b50610440610658366004612a93565b611089565b34801561066957600080fd5b5060055460ff165b60405160ff9091168152602001610464565b34801561068f57600080fd5b5061044061069e366004612a93565b6110d5565b3480156106af57600080fd5b5061048d6106be3660046129df565b611121565b3480156106cf57600080fd5b506104406106de366004612ab0565b611157565b3480156106ef57600080fd5b5061048d6106fe366004612a93565b600d6020526000908152604090205460ff1681565b34801561071f57600080fd5b5061048d61072e366004612a93565b60116020526000908152604090205460ff1681565b34801561074f57600080fd5b5060245461048d90600160a81b900460ff1681565b34801561077057600080fd5b5061044061077f366004612a93565b611186565b34801561079057600080fd5b5061044061079f366004612ac9565b6111d8565b3480156107b057600080fd5b5061048d6107bf366004612a93565b600a6020526000908152604090205460ff1681565b3480156107e057600080fd5b50600e5461048d9060ff1681565b3480156107fa57600080fd5b5042610546565b34801561080d57600080fd5b5061054660195481565b34801561082357600080fd5b506104dd610832366004612a93565b611284565b34801561084357600080fd5b50610546601a5481565b34801561085957600080fd5b50610546610868366004612a93565b6001600160a01b031660009081526008602052604090205490565b34801561088f57600080fd5b506007546104dd906001600160a01b031681565b3480156108af57600080fd5b5061054660205481565b3480156108c557600080fd5b506104406108d4366004612ab0565b6115bc565b3480156108e557600080fd5b5061054660215481565b3480156108fb57600080fd5b50610546601d5481565b34801561091157600080fd5b5061044061092036600461295c565b6115eb565b34801561093157600080fd5b5061054660165481565b34801561094757600080fd5b506000546001600160a01b03166104dd565b34801561096557600080fd5b50610440611640565b34801561097a57600080fd5b506104576116ba565b34801561098f57600080fd5b50610546600f5481565b3480156109a557600080fd5b50602254610546565b3480156109ba57600080fd5b50610546601e5481565b3480156109d057600080fd5b506106716116c9565b3480156109e557600080fd5b5061048d6109f43660046129df565b61170f565b348015610a0557600080fd5b5061054660105481565b348015610a1b57600080fd5b50610440610a2a366004612a37565b61175e565b348015610a3b57600080fd5b50610546601b5481565b348015610a5157600080fd5b5061048d610a60366004612a93565b60126020526000908152604090205460ff1681565b348015610a8157600080fd5b5061048d610a903660046129df565b6117a6565b348015610aa157600080fd5b50610440610ab0366004612a0b565b6117b3565b348015610ac157600080fd5b5061054660155481565b348015610ad757600080fd5b50610440610ae6366004612a37565b611802565b348015610af757600080fd5b5061054660145481565b348015610b0d57600080fd5b506024546104dd906001600160a01b031681565b348015610b2d57600080fd5b5061054660175481565b348015610b4357600080fd5b5061048d610b52366004612a93565b600b6020526000908152604090205460ff1681565b348015610b7357600080fd5b5061054660185481565b348015610b8957600080fd5b506005546104dd9061010090046001600160a01b031681565b348015610bae57600080fd5b5060245461048d90600160b01b900460ff1681565b348015610bcf57600080fd5b5061054660135481565b348015610be557600080fd5b50610546610bf4366004612b4d565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610c2b57600080fd5b50610440610c3a366004612ab0565b611884565b348015610c4b57600080fd5b50610440610c5a36600461295c565b6118b3565b348015610c6b57600080fd5b50610546601c5481565b348015610c8157600080fd5b50610440610c90366004612ab0565b611908565b348015610ca157600080fd5b50610440610cb0366004612a93565b611937565b348015610cc157600080fd5b50610440610cd036600461295c565b611a21565b348015610ce157600080fd5b5060245461048d90600160b81b900460ff1681565b6000546001600160a01b03163314610d295760405162461bcd60e51b8152600401610d2090612b86565b60405180910390fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b606060038054610d6390612bbb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8f90612bbb565b8015610ddc5780601f10610db157610100808354040283529160200191610ddc565b820191906000526020600020905b815481529060010190602001808311610dbf57829003601f168201915b5050505050905090565b6000610df3338484611ad5565b5060015b92915050565b6000546001600160a01b03163314610e275760405162461bcd60e51b8152600401610d2090612b86565b601683905560178290556018819055610e4a81610e448585611a76565b90611a76565b601d55505050565b6000546001600160a01b03163314610e7c5760405162461bcd60e51b8152600401610d2090612b86565b600e805460ff191691151591909117905543600f55565b6000546001600160a01b03163314610ebd5760405162461bcd60e51b8152600401610d2090612b86565b601383905560148290556015819055610eda81610e448585611a76565b601c55505050565b6000546001600160a01b03163314610f0c5760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610f44848484611bf9565b50610f978433610f9285604051806060016040528060288152602001612ed0602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190612145565b611ad5565b5060015b9392505050565b6000546001600160a01b03163314610fcc5760405162461bcd60e51b8152600401610d2090612b86565b60248054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146110145760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260086020526040812054601f546110849161217f565b905090565b6000546001600160a01b031633146110b35760405162461bcd60e51b8152600401610d2090612b86565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610d2090612b86565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610df3918590610f929086611a76565b6000546001600160a01b031633146111815760405162461bcd60e51b8152600401610d2090612b86565b602255565b6000546001600160a01b031633146111b05760405162461bcd60e51b8152600401610d2090612b86565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146112025760405162461bcd60e51b8152600401610d2090612b86565b60c9821061120f57600080fd5b60005b8281101561127e57816012600086868581811061123157611231612bf5565b90506020020160208101906112469190612a93565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561127781612c21565b9050611212565b50505050565b600080546001600160a01b031633146112af5760405162461bcd60e51b8152600401610d2090612b86565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190612c3a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113879190612c3a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190612c3a565b91506001600160a01b03821661154d57806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114689190612c3a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d99190612c3a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154a9190612c3a565b91505b602480546001600160a01b03199081166001600160a01b03858116918217845560238054909316948116949094179091556000908152600b60209081526040808320805460ff199081166001908117909255945490951683526011909152902080549091169091179055919050565b6000546001600160a01b031633146115e65760405162461bcd60e51b8152600401610d2090612b86565b601055565b6000546001600160a01b031633146116155760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461166a5760405162461bcd60e51b8152600401610d2090612b86565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b606060048054610d6390612bbb565b60006305f5e10042446040516020016116ec929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6110849190612c6d565b6000610df33384610f9285604051806060016040528060258152602001612ef8602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190612145565b6000546001600160a01b031633146117885760405162461bcd60e51b8152600401610d2090612b86565b60248054911515600160b01b0260ff60b01b19909216919091179055565b6000610f97338484611bf9565b6000546001600160a01b031633146117dd5760405162461bcd60e51b8152600401610d2090612b86565b6019839055601a829055601b8190556117fa81610e448585611a76565b601e55505050565b6000546001600160a01b0316331461182c5760405162461bcd60e51b8152600401610d2090612b86565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061187990831515815260200190565b60405180910390a150565b6000546001600160a01b031633146118ae5760405162461bcd60e51b8152600401610d2090612b86565b602055565b6000546001600160a01b031633146118dd5760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119325760405162461bcd60e51b8152600401610d2090612b86565b602155565b6000546001600160a01b031633146119615760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b0381166119c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d20565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a4b5760405162461bcd60e51b8152600401610d2090612b86565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600080611a838385612c81565b905083811015610f9b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d20565b6001600160a01b038316611b375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d20565b6001600160a01b038216611b985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d20565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d20565b6001600160a01b038316611cc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d20565b602454600160a01b900460ff1615611ce557611cde8484846121c1565b9050610f9b565b6007546001600160a01b038581169116148015611d0f57506024546001600160a01b038481169116145b15611d195743600f555b6024546001600160a01b0390811690851603611d6957601054600f54611d3f9190612c81565b4311611d69576001600160a01b0383166000908152600d60205260409020805460ff191660011790555b6024546001600160a01b03858116911614611ddd576001600160a01b0384166000908152600d602052604090205460ff1615611ddd5760405162461bcd60e51b815260206004820152601360248201527246726f6d2063616e6e6f7420626520626f742160681b6044820152606401610d20565b6000546001600160a01b03858116911614801590611e0957506000546001600160a01b03848116911614155b15611e1857611e1884836122a7565b600554600090611e2c9060ff16600a612d78565b611e346116c9565b611e449060ff1662989680612d87565b62ffffff16611e539190612daa565b6001600160a01b03861660009081526012602052604090205490915060ff16158015611e9857506001600160a01b03841660009081526012602052604090205460ff16155b15611f0b576000805b60008113611efc5760408051602081018390529081018690524260608201526080016040516020818303038152906040528051906020012060001c9150611ee98783856121c1565b5080611ef481612dc1565b915050611ea1565b50611f078285612dd9565b9350505b3060009081526008602052604090205460225481108015908190611f395750602454600160a01b900460ff16155b8015611f5e57506001600160a01b03871660009081526011602052604090205460ff16155b8015611f735750602454600160a81b900460ff165b15611f9957602454600160b01b900460ff1615611f905760225491505b611f9982612359565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a16600090815260089091529190912054611feb918790612145565b6001600160a01b038816600090815260086020908152604080832093909355600a90529081205460ff168061203857506001600160a01b0387166000908152600a602052604090205460ff165b61204c57612047888888612494565b61204e565b855b602454909150600160b81b900460ff16801561208357506001600160a01b0387166000908152600b602052604090205460ff16155b156120b9576021546120ae82610e448a6001600160a01b031660009081526008602052604090205490565b11156120b957600080fd5b6001600160a01b0387166000908152600860205260409020546120dc9082611a76565b6001600160a01b0380891660008181526008602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121309085815260200190565b60405180910390a36001945050505050610f9b565b600081848411156121695760405162461bcd60e51b8152600401610d209190612991565b5060006121768486612dd9565b95945050505050565b6000610f9b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612145565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054612212918490612145565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546122419083611a76565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122959086815260200190565b60405180910390a35060019392505050565b600e5460ff166122ec5760405162461bcd60e51b815260206004820152601060248201526f5472616465204e6f742053746172742160801b6044820152606401610d20565b6020548111158061231557506001600160a01b0382166000908152600c602052604090205460ff165b6123555760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d20565b5050565b6024805460ff60a01b1916600160a01b179055601e5460195460009161238f91600291612389918290879061259a565b9061261c565b9050600061239d838361217f565b90506123a88161265e565b60195447906000906123c8906123bf90600261261c565b601e549061217f565b905060006123ea6002612389846123896019548861259a90919063ffffffff16565b9050600061240783612389601b548761259a90919063ffffffff16565b9050600061241f82612419878661217f565b9061217f565b90508015612442576005546124429061010090046001600160a01b0316826127f1565b811561245e5760065461245e906001600160a01b0316836127f1565b60008311801561246e5750600087115b1561247d5761247d878461282c565b50506024805460ff60a01b19169055505050505050565b6001600160a01b038316600090815260116020526040812054819060ff16156124d8576124d16064612389601c548661259a90919063ffffffff16565b9050612516565b6001600160a01b03841660009081526011602052604090205460ff1615612516576125136064612389601d548661259a90919063ffffffff16565b90505b801561259057306000908152600860205260409020546125369082611a76565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125879085815260200190565b60405180910390a35b612176838261217f565b6000826000036125ac57506000610df7565b60006125b88385612daa565b9050826125c58583612dec565b14610f9b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d20565b6000610f9b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612901565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061269357612693612bf5565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127109190612c3a565b8160018151811061272357612723612bf5565b6001600160a01b0392831660209182029290920101526023546127499130911684611ad5565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac94790612782908590600090869030904290600401612e44565b600060405180830381600087803b15801561279c57600080fd5b505af11580156127b0573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516127e5929190612e80565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612827573d6000803e3d6000fd5b505050565b6023546128449030906001600160a01b031684611ad5565b6023546001600160a01b031663f305d71982308560008061286d6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156128d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128fa9190612ea1565b5050505050565b600081836129225760405162461bcd60e51b8152600401610d209190612991565b5060006121768486612dec565b6001600160a01b038116811461294457600080fd5b50565b8035801515811461295757600080fd5b919050565b6000806040838503121561296f57600080fd5b823561297a8161292f565b915061298860208401612947565b90509250929050565b600060208083528351808285015260005b818110156129be578581018301518582016040015282016129a2565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156129f257600080fd5b82356129fd8161292f565b946020939093013593505050565b600080600060608486031215612a2057600080fd5b505081359360208301359350604090920135919050565b600060208284031215612a4957600080fd5b610f9b82612947565b600080600060608486031215612a6757600080fd5b8335612a728161292f565b92506020840135612a828161292f565b929592945050506040919091013590565b600060208284031215612aa557600080fd5b8135610f9b8161292f565b600060208284031215612ac257600080fd5b5035919050565b600080600060408486031215612ade57600080fd5b833567ffffffffffffffff80821115612af657600080fd5b818601915086601f830112612b0a57600080fd5b813581811115612b1957600080fd5b8760208260051b8501011115612b2e57600080fd5b602092830195509350612b449186019050612947565b90509250925092565b60008060408385031215612b6057600080fd5b8235612b6b8161292f565b91506020830135612b7b8161292f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612bcf57607f821691505b602082108103612bef57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612c3357612c33612c0b565b5060010190565b600060208284031215612c4c57600080fd5b8151610f9b8161292f565b634e487b7160e01b600052601260045260246000fd5b600082612c7c57612c7c612c57565b500690565b80820180821115610df757610df7612c0b565b600181815b80851115612ccf578160001904821115612cb557612cb5612c0b565b80851615612cc257918102915b93841c9390800290612c99565b509250929050565b600082612ce657506001610df7565b81612cf357506000610df7565b8160018114612d095760028114612d1357612d2f565b6001915050610df7565b60ff841115612d2457612d24612c0b565b50506001821b610df7565b5060208310610133831016604e8410600b8410161715612d52575081810a610df7565b612d5c8383612c94565b8060001904821115612d7057612d70612c0b565b029392505050565b6000610f9b60ff841683612cd7565b62ffffff818116838216019080821115612da357612da3612c0b565b5092915050565b8082028115828204841417610df757610df7612c0b565b60006001600160ff1b018201612c3357612c33612c0b565b81810381811115610df757610df7612c0b565b600082612dfb57612dfb612c57565b500490565b600081518084526020808501945080840160005b83811015612e395781516001600160a01b031687529582019590820190600101612e14565b509495945050505050565b85815284602082015260a060408201526000612e6360a0830186612e00565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612e996040830184612e00565b949350505050565b600080600060608486031215612eb657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122055f48078ab675dd0e867e75cd0184690e7969a88a9614124ef0af996aecdba3964736f6c63430008110033

Deployed Bytecode Sourcemap

14457:17287:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23809:109;;;;;;;;;;-1:-1:-1;23809:109:0;;;;;:::i;:::-;;:::i;:::-;;18518:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19812:161;;;;;;;;;;-1:-1:-1;19812:161:0;;;;;:::i;:::-;;:::i;:::-;;;1673:14:1;;1666:22;1648:41;;1636:2;1621:18;19812:161:0;1508:187:1;21086:340:0;;;;;;;;;;-1:-1:-1;21086:340:0;;;;;:::i;:::-;;:::i;14818:94::-;;;;;;;;;;-1:-1:-1;14818:94:0;;;;-1:-1:-1;;;;;14818:94:0;;;;;;-1:-1:-1;;;;;2201:32:1;;;2183:51;;2171:2;2156:18;14818:94:0;2021:219:1;23926:129:0;;;;;;;;;;-1:-1:-1;23926:129:0;;;;;:::i;:::-;;:::i;16405:41::-;;;;;;;;;;-1:-1:-1;16405:41:0;;;;-1:-1:-1;;;;;16405:41:0;;;18795:100;;;;;;;;;;-1:-1:-1;18875:12:0;;18795:100;;;2811:25:1;;;2799:2;2784:18;18795:100:0;2665:177:1;20745:333:0;;;;;;;;;;-1:-1:-1;20745:333:0;;;;;:::i;:::-;;:::i;22048:135::-;;;;;;;;;;-1:-1:-1;22048:135:0;;;;;:::i;:::-;;:::i;25285:313::-;;;;;;;;;;-1:-1:-1;25285:313:0;;;;;:::i;:::-;;:::i;21927:113::-;;;;;;;;;;-1:-1:-1;21927:113:0;;;;;:::i;:::-;;:::i;14919:81::-;;;;;;;;;;;;;;;23179:135;;;;;;;;;;-1:-1:-1;23179:135:0;;;;;:::i;:::-;;:::i;23033:128::-;;;;;;;;;;;;;:::i;22580:129::-;;;;;;;;;;-1:-1:-1;22580:129:0;;;;;:::i;:::-;;:::i;18704:83::-;;;;;;;;;;-1:-1:-1;18770:9:0;;;;18704:83;;;3940:4:1;3928:17;;;3910:36;;3898:2;3883:18;18704:83:0;3768:184:1;23590:112:0;;;;;;;;;;-1:-1:-1;23590:112:0;;;;;:::i;:::-;;:::i;19181:218::-;;;;;;;;;;-1:-1:-1;19181:218:0;;;;;:::i;:::-;;:::i;22301:124::-;;;;;;;;;;-1:-1:-1;22301:124:0;;;;;:::i;:::-;;:::i;15341:38::-;;;;;;;;;;-1:-1:-1;15341:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15495:45;;;;;;;;;;-1:-1:-1;15495:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16520:40;;;;;;;;;;-1:-1:-1;16520:40:0;;;;-1:-1:-1;;;16520:40:0;;;;;;22433:139;;;;;;;;;;-1:-1:-1;22433:139:0;;;;;:::i;:::-;;:::i;23322:260::-;;;;;;;;;;-1:-1:-1;23322:260:0;;;;;:::i;:::-;;:::i;15169:50::-;;;;;;;;;;-1:-1:-1;15169:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15388:29;;;;;;;;;;-1:-1:-1;15388:29:0;;;;;;;;6508:90;;;;;;;;;;-1:-1:-1;6575:15:0;6508:90;;15859:34;;;;;;;;;;;;;;;;24201:807;;;;;;;;;;-1:-1:-1;24201:807:0;;;;;:::i;:::-;;:::i;15900:34::-;;;;;;;;;;;;;;;;18903:119;;;;;;;;;;-1:-1:-1;18903:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18996:18:0;18969:7;18996:18;;;:9;:18;;;;;;;18903:119;15007:26;;;;;;;;;;-1:-1:-1;15007:26:0;;;;-1:-1:-1;;;;;15007:26:0;;;16190:61;;;;;;;;;;;;;;;;23710:91;;;;;;;;;;-1:-1:-1;23710:91:0;;;;;:::i;:::-;;:::i;16259:61::-;;;;;;;;;;;;;;;;16024:38;;;;;;;;;;;;;;;;20326:129;;;;;;;;;;-1:-1:-1;20326:129:0;;;;;:::i;:::-;;:::i;15733:36::-;;;;;;;;;;;;;;;;5792:79;;;;;;;;;;-1:-1:-1;5830:7:0;5857:6;-1:-1:-1;;;;;5857:6:0;5792:79;;6017:227;;;;;;;;;;;;;:::i;18609:87::-;;;;;;;;;;;;;:::i;15424:30::-;;;;;;;;;;;;;;;;19684:120;;;;;;;;;;-1:-1:-1;19773:23:0;;19684:120;;16069:44;;;;;;;;;;;;;;;;29486:200;;;;;;;;;;;;;:::i;19407:269::-;;;;;;;;;;-1:-1:-1;19407:269:0;;;;;:::i;:::-;;:::i;15461:25::-;;;;;;;;;;;;;;;;22896:125;;;;;;;;;;-1:-1:-1;22896:125:0;;;;;:::i;:::-;;:::i;15941:30::-;;;;;;;;;;;;;;;;15547:50;;;;;;;;;;-1:-1:-1;15547:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25110:167;;;;;;;;;;-1:-1:-1;25110:167:0;;;;;:::i;:::-;;:::i;21438:358::-;;;;;;;;;;-1:-1:-1;21438:358:0;;;;;:::i;:::-;;:::i;15690:30::-;;;;;;;;;;;;;;;;22717:171;;;;;;;;;;-1:-1:-1;22717:171:0;;;;;:::i;:::-;;:::i;15648:35::-;;;;;;;;;;;;;;;;16453:26;;;;;;;;;;-1:-1:-1;16453:26:0;;;;-1:-1:-1;;;;;16453:26:0;;;15776:36;;;;;;;;;;;;;;;;15226:52;;;;;;;;;;-1:-1:-1;15226:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15819:31;;;;;;;;;;;;;;;;14712:99;;;;;;;;;;-1:-1:-1;14712:99:0;;;;;;;-1:-1:-1;;;;;14712:99:0;;;16567:44;;;;;;;;;;-1:-1:-1;16567:44:0;;;;-1:-1:-1;;;16567:44:0;;;;;;15606:35;;;;;;;;;;;;;;;;19030:143;;;;;;;;;;-1:-1:-1;19030:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19138:18:0;;;19111:7;19138:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19030:143;21808:111;;;;;;;;;;-1:-1:-1;21808:111:0;;;;;:::i;:::-;;:::i;20602:135::-;;;;;;;;;;-1:-1:-1;20602:135:0;;;;;:::i;:::-;;:::i;15980:37::-;;;;;;;;;;;;;;;;22191:102;;;;;;;;;;-1:-1:-1;22191:102:0;;;;;:::i;:::-;;:::i;6252:244::-;;;;;;;;;;-1:-1:-1;6252:244:0;;;;;:::i;:::-;;:::i;20463:127::-;;;;;;;;;;-1:-1:-1;20463:127:0;;;;;:::i;:::-;;:::i;16618:36::-;;;;;;;;;;-1:-1:-1;16618:36:0;;;;-1:-1:-1;;;16618:36:0;;;;;;23809:109;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;23888:13:0;;;::::1;;::::0;;;:5:::1;:13;::::0;;;;:22;;-1:-1:-1;;23888:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23809:109::o;18518:83::-;18555:13;18588:5;18581:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18518:83;:::o;19812:161::-;19887:4;19904:39;198:10;19927:7;19936:6;19904:8;:39::i;:::-;-1:-1:-1;19961:4:0;19812:161;;;;;:::o;21086:340::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;21209:17:::1;:35:::0;;;21255:17:::1;:35:::0;;;21301:12:::1;:25:::0;;;21360:58:::1;21316:10:::0;21360:40:::1;21229:15:::0;21275;21360:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;21339:18;:79:::0;-1:-1:-1;;;21086:340:0:o;23926:129::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;23993:9:::1;:17:::0;;-1:-1:-1;;23993:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24035:12:::1;24021:11;:26:::0;23926:129::o;20745:333::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;20868:16:::1;:34:::0;;;20913:16:::1;:34:::0;;;20958:11:::1;:24:::0;;;21015:55:::1;20972:10:::0;21015:38:::1;20887:15:::0;20932;21015:20:::1;:38::i;:55::-;20995:17;:75:::0;-1:-1:-1;;;20745:333:0:o;22048:135::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22139:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;22139:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22048:135::o;25285:313::-;25383:4;25400:36;25410:6;25418:9;25429:6;25400:9;:36::i;:::-;-1:-1:-1;25447:121:0;25456:6;198:10;25478:89;25516:6;25478:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25478:19:0;;;;;;:11;:19;;;;;;;;198:10;25478:33;;;;;;;;;;:37;:89::i;:::-;25447:8;:121::i;:::-;-1:-1:-1;25586:4:0;25285:313;;;;;;:::o;21927:113::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22005:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;22005:27:0::1;-1:-1:-1::0;;;;22005:27:0;;::::1;::::0;;;::::1;::::0;;21927:113::o;23179:135::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23269:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;23269:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23179:135::o;23033:128::-;23140:11;-1:-1:-1;;;;;18996:18:0;23086:7;18996:18;;;:9;:18;;;;;;23113:12;;:40;;:16;:40::i;:::-;23106:47;;23033:128;:::o;22580:129::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22662:17:::1;:39:::0;;-1:-1:-1;;;;;;22662:39:0::1;-1:-1:-1::0;;;;;22662:39:0;;;::::1;::::0;;;::::1;::::0;;22580:129::o;23590:112::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;23668:11:::1;:26:::0;;-1:-1:-1;;;;;;23668:26:0::1;-1:-1:-1::0;;;;;23668:26:0;;;::::1;::::0;;;::::1;::::0;;23590:112::o;19181:218::-;198:10;19269:4;19318:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19318:34:0;;;;;;;;;;19269:4;;19286:83;;19309:7;;19318:50;;19357:10;19318:38;:50::i;22301:124::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22383:23:::1;:34:::0;22301:124::o;22433:139::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22520:22:::1;:44:::0;;-1:-1:-1;;;;;22520:44:0;;::::1;;;-1:-1:-1::0;;;;;;22520:44:0;;::::1;::::0;;;::::1;::::0;;22433:139::o;23322:260::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;23450:3:::1;23431:22:::0;::::1;23423:31;;;::::0;::::1;;23470:9;23465:110;23481:20:::0;;::::1;23465:110;;;23557:6;23523:17;:31;23541:9;;23551:1;23541:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23523:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23523:31:0;:40;;-1:-1:-1;;23523:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23503:3:::1;::::0;::::1;:::i;:::-;;;23465:110;;;;23322:260:::0;;;:::o;24201:807::-;24281:22;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;24318:35:::1;24375:16;24318:74;;24441:16;-1:-1:-1::0;;;;;24441:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24423:53:0::1;;24485:4;24492:16;-1:-1:-1::0;;;;;24492:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24423:93;::::0;-1:-1:-1;;;;;;24423:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6865:15:1;;;24423:93:0::1;::::0;::::1;6847:34:1::0;6917:15;;6897:18;;;6890:43;6782:18;;24423:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24406:110:::0;-1:-1:-1;;;;;;24532:28:0;::::1;24529:225;;24646:16;-1:-1:-1::0;;;;;24646:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24628:74:0::1;;24711:4;24718:16;-1:-1:-1::0;;;;;24718:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24628:114;::::0;-1:-1:-1;;;;;;24628:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6865:15:1;;;24628:114:0::1;::::0;::::1;6847:34:1::0;6917:15;;6897:18;;;6890:43;6782:18;;24628:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24611:131;;24529:225;24766:11;:28:::0;;-1:-1:-1;;;;;;24766:28:0;;::::1;-1:-1:-1::0;;;;;24766:28:0;;::::1;::::0;;::::1;::::0;;24828:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24900:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;24900:48:0;;::::1;-1:-1:-1::0;24900:48:0;;::::1;::::0;;;24980:11;;;;::::1;24959:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;24766:28;24780:14;-1:-1:-1;24201:807:0:o;23710:91::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;23777:6:::1;:16:::0;23710:91::o;20326:129::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20415:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20415:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20326:129::o;6017:227::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;6105:6:::1;::::0;;6084:81:::1;::::0;6121:42:::1;::::0;-1:-1:-1;;;;;6105:6:0;;::::1;::::0;6084:81:::1;::::0;::::1;6176:6;:60:::0;;-1:-1:-1;;;;;;6176:60:0::1;6193:42;6176:60;::::0;;6017:227::o;18609:87::-;18648:13;18681:7;18674:14;;;;;:::i;29486:200::-;29538:5;29658:9;29618:15;29636:16;29601:52;;;;;;;;7101:19:1;;;7145:2;7136:12;;7129:28;7182:2;7173:12;;6944:247;29601:52:0;;;;;;;;;;;;;29591:63;;;;;;29583:72;;:84;;;;:::i;19407:269::-;19500:4;19517:129;198:10;19540:7;19549:96;19588:15;19549:96;;;;;;;;;;;;;;;;;198:10;19549:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19549:34:0;;;;;;;;;;;;:38;:96::i;22896:125::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22977:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22977:36:0::1;-1:-1:-1::0;;;;22977:36:0;;::::1;::::0;;;::::1;::::0;;22896:125::o;25110:167::-;25188:4;25205:42;198:10;25229:9;25240:6;25205:9;:42::i;21438:358::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;21579:15:::1;:35:::0;;;21625:15:::1;:35:::0;;;21671:10:::1;:25:::0;;;21736:52:::1;21684:12:::0;21736:36:::1;21597:17:::0;21643;21736:19:::1;:36::i;:52::-;21709:24;:79:::0;-1:-1:-1;;;21438:358:0:o;22717:171::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22794:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;22794:32:0::1;-1:-1:-1::0;;;;22794:32:0;;::::1;;::::0;;22842:38:::1;::::0;::::1;::::0;::::1;::::0;22818:8;1673:14:1;1666:22;1648:41;;1636:2;1621:18;;1508:187;22842:38:0::1;;;;;;;;22717:171:::0;:::o;21808:111::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;21885:12:::1;:26:::0;21808:111::o;20602:135::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20692:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;20692:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20602:135::o;22191:102::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22263:10:::1;:22:::0;22191:102::o;6252:244::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6341:22:0;::::1;6333:73;;;::::0;-1:-1:-1;;;6333:73:0;;7647:2:1;6333:73:0::1;::::0;::::1;7629:21:1::0;7686:2;7666:18;;;7659:30;7725:34;7705:18;;;7698:62;-1:-1:-1;;;7776:18:1;;;7769:36;7822:19;;6333:73:0::1;7445:402:1::0;6333:73:0::1;6443:6;::::0;;6422:38:::1;::::0;-1:-1:-1;;;;;6422:38:0;;::::1;::::0;6443:6;::::1;::::0;6422:38:::1;::::0;::::1;6471:6;:17:::0;;-1:-1:-1;;;;;;6471:17:0::1;-1:-1:-1::0;;;;;6471:17:0;;;::::1;::::0;;;::::1;::::0;;6252:244::o;20463:127::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20550:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20550:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20463:127::o;1170:181::-;1228:7;;1260:5;1264:1;1260;:5;:::i;:::-;1248:17;;1289:1;1284;:6;;1276:46;;;;-1:-1:-1;;;1276:46:0;;8184:2:1;1276:46:0;;;8166:21:1;8223:2;8203:18;;;8196:30;8262:29;8242:18;;;8235:57;8309:18;;1276:46:0;7982:351:1;19981:337:0;-1:-1:-1;;;;;20074:19:0;;20066:68;;;;-1:-1:-1;;;20066:68:0;;8540:2:1;20066:68:0;;;8522:21:1;8579:2;8559:18;;;8552:30;8618:34;8598:18;;;8591:62;-1:-1:-1;;;8669:18:1;;;8662:34;8713:19;;20066:68:0;8338:400:1;20066:68:0;-1:-1:-1;;;;;20153:21:0;;20145:68;;;;-1:-1:-1;;;20145:68:0;;8945:2:1;20145:68:0;;;8927:21:1;8984:2;8964:18;;;8957:30;9023:34;9003:18;;;8996:62;-1:-1:-1;;;9074:18:1;;;9067:32;9116:19;;20145:68:0;8743:398:1;20145:68:0;-1:-1:-1;;;;;20226:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20278:32;;2811:25:1;;;20278:32:0;;2784:18:1;20278:32:0;;;;;;;19981:337;;;:::o;25606:2478::-;25693:4;-1:-1:-1;;;;;25720:20:0;;25712:70;;;;-1:-1:-1;;;25712:70:0;;9348:2:1;25712:70:0;;;9330:21:1;9387:2;9367:18;;;9360:30;9426:34;9406:18;;;9399:62;-1:-1:-1;;;9477:18:1;;;9470:35;9522:19;;25712:70:0;9146:401:1;25712:70:0;-1:-1:-1;;;;;25801:23:0;;25793:71;;;;-1:-1:-1;;;25793:71:0;;9754:2:1;25793:71:0;;;9736:21:1;9793:2;9773:18;;;9766:30;9832:34;9812:18;;;9805:62;-1:-1:-1;;;9883:18:1;;;9876:33;9926:19;;25793:71:0;9552:399:1;25793:71:0;25888:16;;-1:-1:-1;;;25888:16:0;;;;25885:2192;;;25938:41;25953:6;25961:9;25972:6;25938:14;:41::i;:::-;25931:48;;;;25885:2192;26042:11;;-1:-1:-1;;;;;26032:21:0;;;26042:11;;26032:21;:49;;;;-1:-1:-1;26070:11:0;;-1:-1:-1;;;;;26057:24:0;;;26070:11;;26057:24;26032:49;26029:106;;;26111:12;26097:11;:26;26029:106;26161:11;;-1:-1:-1;;;;;26161:11:0;;;26151:21;;;;26147:156;;26224:6;;26210:11;;:20;;;;:::i;:::-;26193:12;:38;26189:103;;-1:-1:-1;;;;;26253:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;26253:23:0;26272:4;26253:23;;;26189:103;26326:11;;-1:-1:-1;;;;;26316:21:0;;;26326:11;;26316:21;26313:98;;-1:-1:-1;;;;;26362:13:0;;;;;;:5;:13;;;;;;;;26361:14;26353:46;;;;-1:-1:-1;;;26353:46:0;;10158:2:1;26353:46:0;;;10140:21:1;10197:2;10177:18;;;10170:30;-1:-1:-1;;;10216:18:1;;;10209:49;10275:18;;26353:46:0;9956:343:1;26353:46:0;5830:7;5857:6;-1:-1:-1;;;;;26427:17:0;;;5857:6;;26427:17;;;;:41;;-1:-1:-1;5830:7:0;5857:6;-1:-1:-1;;;;;26448:20:0;;;5857:6;;26448:20;;26427:41;26423:75;;;26470:28;26484:6;26491;26470:13;:28::i;:::-;26569:9;;26515:12;;26565:13;;26569:9;;26565:2;:13;:::i;:::-;26531:21;:19;:21::i;:::-;:30;;;;26553:8;26531:30;:::i;:::-;26530:48;;;;;;:::i;:::-;-1:-1:-1;;;;;26597:25:0;;;;;;:17;:25;;;;;;26515:63;;-1:-1:-1;26597:25:0;;26596:26;:59;;;;-1:-1:-1;;;;;;26627:28:0;;;;;;:17;:28;;;;;;;;26626:29;26596:59;26593:370;;;26675:13;;26707:208;26723:1;26719;:5;26707:208;;26791:44;;;;;;12218:19:1;;;12253:12;;;12246:28;;;26819:15:0;12290:12:1;;;12283:28;12327:12;;26791:44:0;;;;;;;;;;;;26781:55;;;;;;26776:61;;26752:87;;26862:33;26877:6;26884:5;26890:4;26862:14;:33::i;:::-;-1:-1:-1;26725:3:0;;;;:::i;:::-;;;;26707:208;;;-1:-1:-1;26933:14:0;26943:4;26933:14;;:::i;:::-;;;26656:307;26593:370;27041:4;26992:28;18996:18;;;:9;:18;;;;;;27117:23;;27093:47;;;;;;;27173:44;;-1:-1:-1;27201:16:0;;-1:-1:-1;;;27201:16:0;;;;27200:17;27173:44;:69;;;;-1:-1:-1;;;;;;27222:20:0;;;;;;:12;:20;;;;;;;;27221:21;27173:69;:94;;;;-1:-1:-1;27246:21:0;;-1:-1:-1;;;27246:21:0;;;;27173:94;27169:305;;;27305:25;;-1:-1:-1;;;27305:25:0;;;;27302:97;;;27376:23;;27353:46;;27302:97;27418:36;27433:20;27418:14;:36::i;:::-;27510:53;;;;;;;;;;;-1:-1:-1;;;27510:53:0;;;;;;;;-1:-1:-1;;;;;27510:17:0;;-1:-1:-1;27510:17:0;;;:9;:17;;;;;;;;:53;;27532:6;;27510:21;:53::i;:::-;-1:-1:-1;;;;;27490:17:0;;;;;;:9;:17;;;;;;;;:73;;;;27603:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;27632:28:0;;;;;;:17;:28;;;;;;;;27603:57;27602:148;;27716:34;27724:6;27732:9;27743:6;27716:7;:34::i;:::-;27602:148;;;27707:6;27602:148;27770:16;;27580:170;;-1:-1:-1;;;;27770:16:0;;;;:51;;;;-1:-1:-1;;;;;;27791:30:0;;;;;;:19;:30;;;;;;;;27790:31;27770:51;27767:133;;;27889:10;;27848:37;27873:11;27848:20;27858:9;-1:-1:-1;;;;;18996:18:0;18969:7;18996:18;;;:9;:18;;;;;;;18903:119;27848:37;:51;;27840:60;;;;;;-1:-1:-1;;;;;27940:20:0;;;;;;:9;:20;;;;;;:37;;27965:11;27940:24;:37::i;:::-;-1:-1:-1;;;;;27917:20:0;;;;;;;:9;:20;;;;;;;:60;;;;27999:40;;;;;;;;;;28027:11;2811:25:1;;2799:2;2784:18;;2665:177;27999:40:0;;;;;;;;28061:4;28054:11;;;;;;;;1503:192;1589:7;1625:12;1617:6;;;;1609:29;;;;-1:-1:-1;;;1609:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1649:9:0;1661:5;1665:1;1661;:5;:::i;:::-;1649:17;1503:192;-1:-1:-1;;;;;1503:192:0:o;1359:136::-;1417:7;1444:43;1448:1;1451;1444:43;;;;;;;;;;;;;;;;;:3;:43::i;28092:330::-;28222:53;;;;;;;;;;;-1:-1:-1;;;28222:53:0;;;;;;;;-1:-1:-1;;;;;28222:17:0;;28185:4;28222:17;;;:9;:17;;;;;;;:53;;28244:6;;28222:21;:53::i;:::-;-1:-1:-1;;;;;28202:17:0;;;;;;;:9;:17;;;;;;:73;;;;28309:20;;;;;;;:32;;28334:6;28309:24;:32::i;:::-;-1:-1:-1;;;;;28286:20:0;;;;;;;:9;:20;;;;;;;:55;;;;28357:35;;;;;;;;;;28385:6;2811:25:1;;2799:2;2784:18;;2665:177;28357:35:0;;;;;;;;-1:-1:-1;28410:4:0;28092:330;;;;;:::o;31527:214::-;31613:9;;;;31605:38;;;;-1:-1:-1;;;31605:38:0;;12837:2:1;31605:38:0;;;12819:21:1;12876:2;12856:18;;;12849:30;-1:-1:-1;;;12895:18:1;;;12888:46;12951:18;;31605:38:0;12635:340:1;31605:38:0;31672:12;;31662:6;:22;;:49;;;-1:-1:-1;;;;;;31688:23:0;;;;;;:15;:23;;;;;;;;31662:49;31654:79;;;;-1:-1:-1;;;31654:79:0;;13182:2:1;31654:79:0;;;13164:21:1;13221:2;13201:18;;;13194:30;-1:-1:-1;;;13240:18:1;;;13233:47;13297:18;;31654:79:0;12980:341:1;31654:79:0;31527:214;;:::o;28430:1048::-;17077:16;:23;;-1:-1:-1;;;;17077:23:0;-1:-1:-1;;;17077:23:0;;;28567:24:::1;::::0;28546:15:::1;::::0;17077:23;;28534:65:::1;::::0;28597:1:::1;::::0;28534:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;28512:87:::0;-1:-1:-1;28610:21:0::1;28634:24;:7:::0;28512:87;28634:11:::1;:24::i;:::-;28610:48;;28671:31;28688:13;28671:16;:31::i;:::-;28823:15;::::0;28738:21:::1;::::0;28713:22:::1;::::0;28794:52:::1;::::0;28823:22:::1;::::0;28843:1:::1;28823:19;:22::i;:::-;28794:24;::::0;;:28:::1;:52::i;:::-;28772:74;;28867:26;28896:59;28953:1;28896:52;28936:11;28896:35;28915:15;;28896:14;:18;;:35;;;;:::i;:59::-;28867:88;;28966:21;28990:47;29025:11;28990:30;29009:10;;28990:14;:18;;:30;;;;:::i;:47::-;28966:71:::0;-1:-1:-1;29048:26:0::1;29077:57;28966:71:::0;29077:38:::1;:14:::0;29096:18;29077::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;29048:86:::0;-1:-1:-1;29150:22:0;;29147:104:::1;;29208:22;::::0;29187:64:::1;::::0;29208:22:::1;::::0;::::1;-1:-1:-1::0;;;;;29208:22:0::1;29232:18:::0;29187:20:::1;:64::i;:::-;29267:17:::0;;29264:89:::1;;29320:17;::::0;29299:54:::1;::::0;-1:-1:-1;;;;;29320:17:0::1;29339:13:::0;29299:20:::1;:54::i;:::-;29390:1;29369:18;:22;:41;;;;;29409:1;29395:11;:15;29369:41;29366:104;;;29425:45;29438:11;29451:18;29425:12;:45::i;:::-;-1:-1:-1::0;;17123:16:0;:24;;-1:-1:-1;;;;17123:24:0;;;-1:-1:-1;;;;;;28430:1048:0:o;30893:622::-;-1:-1:-1;;;;;31054:20:0;;30979:7;31054:20;;;:12;:20;;;;;;30979:7;;31054:20;;31051:223;;;31103:38;31137:3;31103:29;31114:17;;31103:6;:10;;:29;;;;:::i;:38::-;31091:50;;31051:223;;;-1:-1:-1;;;;;31171:23:0;;;;;;:12;:23;;;;;;;;31168:106;;;31223:39;31258:3;31223:30;31234:18;;31223:6;:10;;:30;;;;:::i;:39::-;31211:51;;31168:106;31297:13;;31294:173;;31372:4;31354:24;;;;:9;:24;;;;;;:39;;31383:9;31354:28;:39::i;:::-;31345:4;31327:24;;;;:9;:24;;;;;;;:66;;;;31413:42;;-1:-1:-1;;;;;31413:42:0;;;;;;;31445:9;2811:25:1;;2799:2;2784:18;;2665:177;31413:42:0;;;;;;;;31294:173;31486:21;:6;31497:9;31486:10;:21::i;1703:250::-;1761:7;1785:1;1790;1785:6;1781:47;;-1:-1:-1;1815:1:0;1808:8;;1781:47;1840:9;1852:5;1856:1;1852;:5;:::i;:::-;1840:17;-1:-1:-1;1885:1:0;1876:5;1880:1;1840:17;1876:5;:::i;:::-;:10;1868:56;;;;-1:-1:-1;;;1868:56:0;;13653:2:1;1868:56:0;;;13635:21:1;13692:2;13672:18;;;13665:30;13731:34;13711:18;;;13704:62;-1:-1:-1;;;13782:18:1;;;13775:31;13823:19;;1868:56:0;13451:397:1;1961:132:0;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;29698:666::-;29848:16;;;29862:1;29848:16;;;;;;;;29824:21;;29848:16;;;;;;;;;;-1:-1:-1;29848:16:0;29824:40;;29893:4;29875;29880:1;29875:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29875:23:0;;;:7;;;;;;;;;;:23;;;;29919:15;;:22;;;-1:-1:-1;;;29919:22:0;;;;:15;;;;;:20;;:22;;;;;29875:7;;29919:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29909:4;29914:1;29909:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29909:32:0;;;:7;;;;;;;;;:32;29986:15;;29954:62;;29971:4;;29986:15;30004:11;29954:8;:62::i;:::-;30055:15;;:240;;-1:-1:-1;;;30055:240:0;;-1:-1:-1;;;;;30055:15:0;;;;:66;;:240;;30136:11;;30055:15;;30206:4;;30233;;30269:15;;30055:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30321:35;30338:11;30351:4;30321:35;;;;;;;:::i;:::-;;;;;;;;29753:611;29698:666;:::o;24063:126::-;24155:26;;-1:-1:-1;;;;;24155:18:0;;;:26;;;;;24174:6;;24155:26;;;;24174:6;24155:18;:26;;;;;;;;;;;;;;;;;;;;;24063:126;;:::o;30372:513::-;30552:15;;30520:62;;30537:4;;-1:-1:-1;;;;;30552:15:0;30570:11;30520:8;:62::i;:::-;30625:15;;-1:-1:-1;;;;;30625:15:0;:31;30664:9;30697:4;30717:11;30625:15;;30829:7;5830;5857:6;-1:-1:-1;;;;;5857:6:0;;5792:79;30829:7;30625:252;;;;;;-1:-1:-1;;;;;;30625:252:0;;;-1:-1:-1;;;;;15734:15:1;;;30625:252:0;;;15716:34:1;15766:18;;;15759:34;;;;15809:18;;;15802:34;;;;15852:18;;;15845:34;15916:15;;;15895:19;;;15888:44;30851:15:0;15948:19:1;;;15941:35;15650:19;;30625:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30372:513;;:::o;2101:278::-;2187:7;2222:12;2215:5;2207:28;;;;-1:-1:-1;;;2207:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2246:9:0;2258:5;2262:1;2258;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:160::-;215:20;;271:13;;264:21;254:32;;244:60;;300:1;297;290:12;244:60;150:160;;;:::o;315:315::-;380:6;388;441:2;429:9;420:7;416:23;412:32;409:52;;;457:1;454;447:12;409:52;496:9;483:23;515:31;540:5;515:31;:::i;:::-;565:5;-1:-1:-1;589:35:1;620:2;605:18;;589:35;:::i;:::-;579:45;;315:315;;;;;:::o;635:548::-;747:4;776:2;805;794:9;787:21;837:6;831:13;880:6;875:2;864:9;860:18;853:34;905:1;915:140;929:6;926:1;923:13;915:140;;;1024:14;;;1020:23;;1014:30;990:17;;;1009:2;986:26;979:66;944:10;;915:140;;;919:3;1104:1;1099:2;1090:6;1079:9;1075:22;1071:31;1064:42;1174:2;1167;1163:7;1158:2;1150:6;1146:15;1142:29;1131:9;1127:45;1123:54;1115:62;;;;635:548;;;;:::o;1188:315::-;1256:6;1264;1317:2;1305:9;1296:7;1292:23;1288:32;1285:52;;;1333:1;1330;1323:12;1285:52;1372:9;1359:23;1391:31;1416:5;1391:31;:::i;:::-;1441:5;1493:2;1478:18;;;;1465:32;;-1:-1:-1;;;1188:315:1:o;1700:316::-;1777:6;1785;1793;1846:2;1834:9;1825:7;1821:23;1817:32;1814:52;;;1862:1;1859;1852:12;1814:52;-1:-1:-1;;1885:23:1;;;1955:2;1940:18;;1927:32;;-1:-1:-1;2006:2:1;1991:18;;;1978:32;;1700:316;-1:-1:-1;1700:316:1:o;2245:180::-;2301:6;2354:2;2342:9;2333:7;2329:23;2325:32;2322:52;;;2370:1;2367;2360:12;2322:52;2393:26;2409:9;2393:26;:::i;2847:456::-;2924:6;2932;2940;2993:2;2981:9;2972:7;2968:23;2964:32;2961:52;;;3009:1;3006;2999:12;2961:52;3048:9;3035:23;3067:31;3092:5;3067:31;:::i;:::-;3117:5;-1:-1:-1;3174:2:1;3159:18;;3146:32;3187:33;3146:32;3187:33;:::i;:::-;2847:456;;3239:7;;-1:-1:-1;;;3293:2:1;3278:18;;;;3265:32;;2847:456::o;3516:247::-;3575:6;3628:2;3616:9;3607:7;3603:23;3599:32;3596:52;;;3644:1;3641;3634:12;3596:52;3683:9;3670:23;3702:31;3727:5;3702:31;:::i;3957:180::-;4016:6;4069:2;4057:9;4048:7;4044:23;4040:32;4037:52;;;4085:1;4082;4075:12;4037:52;-1:-1:-1;4108:23:1;;3957:180;-1:-1:-1;3957:180:1:o;4142:689::-;4234:6;4242;4250;4303:2;4291:9;4282:7;4278:23;4274:32;4271:52;;;4319:1;4316;4309:12;4271:52;4359:9;4346:23;4388:18;4429:2;4421:6;4418:14;4415:34;;;4445:1;4442;4435:12;4415:34;4483:6;4472:9;4468:22;4458:32;;4528:7;4521:4;4517:2;4513:13;4509:27;4499:55;;4550:1;4547;4540:12;4499:55;4590:2;4577:16;4616:2;4608:6;4605:14;4602:34;;;4632:1;4629;4622:12;4602:34;4687:7;4680:4;4670:6;4667:1;4663:14;4659:2;4655:23;4651:34;4648:47;4645:67;;;4708:1;4705;4698:12;4645:67;4739:4;4731:13;;;;-1:-1:-1;4763:6:1;-1:-1:-1;4788:37:1;;4804:20;;;-1:-1:-1;4788:37:1;:::i;:::-;4778:47;;4142:689;;;;;:::o;4836:388::-;4904:6;4912;4965:2;4953:9;4944:7;4940:23;4936:32;4933:52;;;4981:1;4978;4971:12;4933:52;5020:9;5007:23;5039:31;5064:5;5039:31;:::i;:::-;5089:5;-1:-1:-1;5146:2:1;5131:18;;5118:32;5159:33;5118:32;5159:33;:::i;:::-;5211:7;5201:17;;;4836:388;;;;;:::o;5229:356::-;5431:2;5413:21;;;5450:18;;;5443:30;5509:34;5504:2;5489:18;;5482:62;5576:2;5561:18;;5229:356::o;5590:380::-;5669:1;5665:12;;;;5712;;;5733:61;;5787:4;5779:6;5775:17;5765:27;;5733:61;5840:2;5832:6;5829:14;5809:18;5806:38;5803:161;;5886:10;5881:3;5877:20;5874:1;5867:31;5921:4;5918:1;5911:15;5949:4;5946:1;5939:15;5803:161;;5590:380;;;:::o;5975:127::-;6036:10;6031:3;6027:20;6024:1;6017:31;6067:4;6064:1;6057:15;6091:4;6088:1;6081:15;6107:127;6168:10;6163:3;6159:20;6156:1;6149:31;6199:4;6196:1;6189:15;6223:4;6220:1;6213:15;6239:135;6278:3;6299:17;;;6296:43;;6319:18;;:::i;:::-;-1:-1:-1;6366:1:1;6355:13;;6239:135::o;6379:251::-;6449:6;6502:2;6490:9;6481:7;6477:23;6473:32;6470:52;;;6518:1;6515;6508:12;6470:52;6550:9;6544:16;6569:31;6594:5;6569:31;:::i;7196:127::-;7257:10;7252:3;7248:20;7245:1;7238:31;7288:4;7285:1;7278:15;7312:4;7309:1;7302:15;7328:112;7360:1;7386;7376:35;;7391:18;;:::i;:::-;-1:-1:-1;7425:9:1;;7328:112::o;7852:125::-;7917:9;;;7938:10;;;7935:36;;;7951:18;;:::i;10304:422::-;10393:1;10436:5;10393:1;10450:270;10471:7;10461:8;10458:21;10450:270;;;10530:4;10526:1;10522:6;10518:17;10512:4;10509:27;10506:53;;;10539:18;;:::i;:::-;10589:7;10579:8;10575:22;10572:55;;;10609:16;;;;10572:55;10688:22;;;;10648:15;;;;10450:270;;;10454:3;10304:422;;;;;:::o;10731:806::-;10780:5;10810:8;10800:80;;-1:-1:-1;10851:1:1;10865:5;;10800:80;10899:4;10889:76;;-1:-1:-1;10936:1:1;10950:5;;10889:76;10981:4;10999:1;10994:59;;;;11067:1;11062:130;;;;10974:218;;10994:59;11024:1;11015:10;;11038:5;;;11062:130;11099:3;11089:8;11086:17;11083:43;;;11106:18;;:::i;:::-;-1:-1:-1;;11162:1:1;11148:16;;11177:5;;10974:218;;11276:2;11266:8;11263:16;11257:3;11251:4;11248:13;11244:36;11238:2;11228:8;11225:16;11220:2;11214:4;11211:12;11207:35;11204:77;11201:159;;;-1:-1:-1;11313:19:1;;;11345:5;;11201:159;11392:34;11417:8;11411:4;11392:34;:::i;:::-;11462:6;11458:1;11454:6;11450:19;11441:7;11438:32;11435:58;;;11473:18;;:::i;:::-;11511:20;;10731:806;-1:-1:-1;;;10731:806:1:o;11542:140::-;11600:5;11629:47;11670:4;11660:8;11656:19;11650:4;11629:47;:::i;11687:170::-;11754:8;11782:10;;;11794;;;11778:27;;11817:11;;;11814:37;;;11831:18;;:::i;:::-;11814:37;11687:170;;;;:::o;11862:168::-;11935:9;;;11966;;11983:15;;;11977:22;;11963:37;11953:71;;12004:18;;:::i;12350:147::-;12388:3;-1:-1:-1;;;;;12409:30:1;;12406:56;;12442:18;;:::i;12502:128::-;12569:9;;;12590:11;;;12587:37;;;12604:18;;:::i;13326:120::-;13366:1;13392;13382:35;;13397:18;;:::i;:::-;-1:-1:-1;13431:9:1;;13326:120::o;13985:461::-;14038:3;14076:5;14070:12;14103:6;14098:3;14091:19;14129:4;14158:2;14153:3;14149:12;14142:19;;14195:2;14188:5;14184:14;14216:1;14226:195;14240:6;14237:1;14234:13;14226:195;;;14305:13;;-1:-1:-1;;;;;14301:39:1;14289:52;;14361:12;;;;14396:15;;;;14337:1;14255:9;14226:195;;;-1:-1:-1;14437:3:1;;13985:461;-1:-1:-1;;;;;13985:461:1:o;14451:582::-;14750:6;14739:9;14732:25;14793:6;14788:2;14777:9;14773:18;14766:34;14836:3;14831:2;14820:9;14816:18;14809:31;14713:4;14857:57;14909:3;14898:9;14894:19;14886:6;14857:57;:::i;:::-;-1:-1:-1;;;;;14950:32:1;;;;14945:2;14930:18;;14923:60;-1:-1:-1;15014:3:1;14999:19;14992:35;14849:65;14451:582;-1:-1:-1;;;14451:582:1:o;15038:332::-;15245:6;15234:9;15227:25;15288:2;15283;15272:9;15268:18;15261:30;15208:4;15308:56;15360:2;15349:9;15345:18;15337:6;15308:56;:::i;:::-;15300:64;15038:332;-1:-1:-1;;;;15038:332:1:o;15987:306::-;16075:6;16083;16091;16144:2;16132:9;16123:7;16119:23;16115:32;16112:52;;;16160:1;16157;16150:12;16112:52;16189:9;16183:16;16173:26;;16239:2;16228:9;16224:18;16218:25;16208:35;;16283:2;16272:9;16268:18;16262:25;16252:35;;15987:306;;;;;:::o

Swarm Source

ipfs://55f48078ab675dd0e867e75cd0184690e7969a88a9614124ef0af996aecdba39
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.