ETH Price: $2,272.65 (-6.14%)

Token

One of One (OOO)
 

Overview

Max Total Supply

1,000,000,000,000 OOO

Holders

59

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
470,000,000 OOO

Value
$0.00
0x8464f637f891938e2d14e90806fe44b22a012b4f
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:
OOO

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/*
    https://www.oneofonetoken.com/

    Once Upon a Time , in a land far away full of Degenerates was the era of two rivalries. The Doge and the Shib community. Other communities looked up to them dreaming of achieving their glory. The era was a monopoly for the two until a great financial moment hit them. 
‍
    To revive the great bull run, the rivalry had to be culminated and the two needed to unite as one. A powerful force of the mixed communities emerged termed as the $OOO. OneOfOne is the new wave that degenerates look upto as the last hope. Just like the Ying and Yang which combined to form one of the most significant symbol in the Asian community, with the unity comes our strength. Like a circle , our ticker comes in the shape of three O’s. The perfect shape exists since we have no corners or end to our mission. 
    ‍
    We are OneOfOne community. We are $OOO.
*/
pragma solidity ^0.8.4;

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        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");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


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


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


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


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

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) 
    {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) 
            {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () 
    {
        address msgSender = _msgSender();
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }


    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }


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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }


    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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 getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract LockToken is Ownable {
    bool public isOpen = false;
    mapping(address => bool) private _whiteList;
    modifier open(address from, address to) {
        require(isOpen || _whiteList[from] || _whiteList[to], "Not Open");
        _;
    }

    constructor() {
        _whiteList[msg.sender] = true;
        _whiteList[address(this)] = true;
    }

    function openTrade() public onlyOwner {
        isOpen = true;
    }

    function stopTrade() external onlyOwner {
        isOpen = false;
    }

    function includeToWhiteList(address[] memory _users) external onlyOwner {
        for(uint8 i = 0; i < _users.length; i++) {
            _whiteList[_users[i]] = true;
        }
    }
}

contract OOO is Context, IERC20, Ownable, LockToken 
{
    using SafeMath for uint256;
    using Address for address;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _blacklisted;
    mapping (address => bool) private _contractExempt;
    mapping (address => bool) private _maxWalletLimitExempt;
    mapping (address => bool) private boughtEarly;
    mapping (address => bool) private isAMM;
    uint256 private constant MAX = ~uint256(0);
    uint256 launchedAt;
    string private _name = "One of One";
    string private _symbol = "OOO";
    uint8 private _decimals = 9;

    uint256 public _devFee;
    uint256 public _liquidityFee;
    uint256 public _marketingFee;

    uint256 public defaultLiquidityFee = 1;
    uint256 public defaultDevFee = 3;
    uint256 public defaultMarketingFee = 3;

    bool private updateTax = true;
    uint256 updateTaxInterval = 21;
    uint256 taxLastUpdated;

    uint256 public _saleDevFee = 3;
    uint256 public _saleLiquidityFee = 1;
    uint256 public _saleMarketingFee = 3;

    bool public transferTaxEnabled = true;
    uint256 public transferTax = 7;

    bool public contractsAllowed = false;
    uint256 public _taxDivisor = 100;

    address payable public marketingWallet;
    address payable public devWallet;
    
    uint256 public buybackDivisor = 0; // if equals to _liquidityFee, no liquidity will be added, only buybacks will happen from the ETH on contract
    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    bool public maxSellAmountActive = true;
    bool public maxBuyAmountActive = true;
    bool public maxWalletLimitActive = true;

    uint256 private _totalSupply = 1_000_000_000_000 * 10 **_decimals;
    uint256 public maxSellAmount = 20_000_000_000 * 10 ** _decimals;
    uint256 public maxBuyAmount = 80_000_000_000 * 10 ** _decimals;
    uint256 public numTokensSellToAddToLiquidity = 1_000_000_000 * 10 ** _decimals;
    uint256 public maxWalletLimit = 80_000_000_000 * 10 ** _decimals;

    uint256 public buyBackUpperLimit = 1 * 10 ** 18;
    uint256 public buyBackLowerLimit = 1 * 10 ** 12;
    bool public buyBackEnabled = false;

    event BuyBackEnabledUpdated(bool enabled);
    event SwapETHForTokens(uint256 amountIn, address[] path);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        address uni = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        marketingWallet = payable(0x197ec0E98CC562284BFC8Db0F5C08d0eBa6BF922); 
        devWallet = payable(0xd5e7A8bC74deD9050E05DfD348A27Df76CA55048);
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uni);  
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

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

        _balances[owner()] = _totalSupply;
        _contractExempt[address(this)] = true;
        _contractExempt[uni] = true;
        _contractExempt[marketingWallet] = true;
        _contractExempt[devWallet] = true;
        _contractExempt[uniswapV2Pair] = true;

        _maxWalletLimitExempt[address(this)] = true;
        _maxWalletLimitExempt[uni] = true;
        _maxWalletLimitExempt[marketingWallet] = true;
        _maxWalletLimitExempt[devWallet] = true;
        _maxWalletLimitExempt[uniswapV2Pair] = true;
        _maxWalletLimitExempt[owner()] = true;

        _limits[owner()].isExcluded = true;
        _limits[address(this)].isExcluded = true;
        _limits[uni].isExcluded = true;
        
        isAMM[uniswapV2Pair] = true;

        globalLimit = 2 * 10 ** 18; // 10 ** 18 = 1 ETH limit
        globalLimitPeriod = 24 hours;

        _allowances[owner()][uni] = ~uint256(0); // you can leave this here, it will approve tokens to uniswap, so you can add liquidity easily
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function setAllBuyFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() {
        _devFee = devFee;
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setAllSaleFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() {
        _saleDevFee = devFee;
        _saleLiquidityFee = liquidityFee;
        _saleMarketingFee = marketingFee;
    }

    function launch() external onlyOwner {
        launchedAt = block.timestamp;
        taxLastUpdated = block.timestamp;
        _liquidityFee = 99;
        buybackDivisor = 0;
        openTrade();
    }

    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 transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 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;
    }
    
    receive() external payable {}

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    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 setAMMStatus(address _address, bool status) public onlyOwner {
        isAMM[_address] = status;
    }

    function AMMStatus(address _address) public view returns(bool) {
        return isAMM[_address]; 
    }

    function _transfer(address from, address to, uint256 amount) private 
    open(from, to)
    {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_balances[from] >= amount, "Transfer amount exceeds balance");
        require(!(_blacklisted[from] || _blacklisted[to]), "Blacklisted address involved");
        require(contractsAllowed || !from.isContract() || isContractExempt(from), "No contracts allowed");
        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (overMinTokenBalance && !inSwapAndLiquify && !isAMM[from] && swapAndLiquifyEnabled){
            checkForBuyBack();
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }
        setLaunchTaxes();
        uint256 tax;
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || inSwapAndLiquify){
            // From or to excluded, so don't take fees, also don't take fees when contract is swapping
            tax = 0;
        } else {
            if(isAMM[to]){
                // sell
                require(amount <= maxSellAmount || !maxSellAmountActive, "Amount exceeds the max sell amount");
                tax = _saleLiquidityFee.add(_saleMarketingFee).add(_saleDevFee);
            } else if (isAMM[from]) {
                if (block.timestamp == launchedAt){
                    _blacklisted[to] = true;
                }
                // buy
                require(amount <= maxBuyAmount || !maxBuyAmountActive, "Amount exceeds the max buy amount");
                tax = _liquidityFee.add(_marketingFee).add(_devFee);
            } else {
                // transfer
                require(!_limits[from].isPrivateSaler && block.timestamp > launchedAt, "No transfers for private salers");
                tax = transferTaxEnabled ? transferTax : 0;
            }
        }
        //handle token movements
        uint256 taxedAmount = _getTaxed(amount, tax);
        uint256 taxAmount = amount.sub(taxedAmount); 
        _balances[from] = _balances[from].sub(amount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        _balances[to] = _balances[to].add(taxedAmount);
        require(_balances[to] <= maxWalletLimit || _maxWalletLimitExempt[to] || !maxWalletLimitActive, "Exceeds max tokens limit on a single wallet");
        
        // handle limits on sells/transfers
        if (!inSwapAndLiquify && !isAMM[from]){
            _handleLimited(from, taxedAmount);
        }
        
        emit Transfer(from,to,taxedAmount);
        if (taxAmount != 0){
            emit Transfer(from,address(this),taxAmount);
        }
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 allFee = _liquidityFee.add(_marketingFee).add(_devFee);
        if (allFee != 0){
            uint256 halfLiquidityTokens = contractTokenBalance.div(allFee).mul(_liquidityFee-buybackDivisor).div(2);
            uint256 swapableTokens = contractTokenBalance.sub(halfLiquidityTokens);
            uint256 initialBalance = address(this).balance;
            swapTokensForEth(swapableTokens);
            uint256 newBalance = address(this).balance.sub(initialBalance);
            uint256 ethForLiquidity = newBalance.div(allFee).mul(_liquidityFee-buybackDivisor).div(2);
            if(ethForLiquidity > 0) 
            {
            addLiquidity(halfLiquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(halfLiquidityTokens, ethForLiquidity, halfLiquidityTokens);
            }
            marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee));
            devWallet.transfer(newBalance.div(allFee).mul(_devFee));
        }
    }

    function setLaunchTaxes() private {
        if (updateTax && launchedAt != 0){
            uint256 timeDelta = block.timestamp - taxLastUpdated;
            uint256 times = timeDelta / updateTaxInterval;
            for(uint256 i=0; i < times; i++){
                if (_liquidityFee <= 3) break;
                _liquidityFee  -= 3;
            }
            taxLastUpdated = block.timestamp;
            if (_liquidityFee <= 12){
                updateTax = false;
                _liquidityFee = defaultLiquidityFee;
                _marketingFee = defaultMarketingFee;
                _devFee = defaultDevFee;
                buybackDivisor = 2;
            }
        }
    }

    function _getTaxed(uint256 tokenAmount, uint256 tax) private view returns (uint256 taxed){
        taxed = tokenAmount.mul(_taxDivisor.sub(tax)).div(_taxDivisor);
    }

    function setTransferTaxStatus(bool status) public onlyOwner{
        transferTaxEnabled = status;
    }

    function setTransferTax(uint256 newTax) public onlyOwner{
        transferTax = newTax;
    }

    function setMaxBuyAmountActive(bool status) public onlyOwner{
        maxBuyAmountActive = status;
    } 

    function setMaxSellAmountActive(bool status) public onlyOwner{
        maxSellAmountActive = status;
    }

    function setMaxWalletLimitActive(bool status) public onlyOwner{
        maxWalletLimitActive = status;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this), block.timestamp);
    }

    function manualBurn(uint256 burnAmount) public onlyOwner {
        _transfer(owner(), deadWallet, burnAmount);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this), tokenAmount, 0, 0, owner(), block.timestamp);
    }

    function setExcludeFromFee(address account, bool _enabled) public onlyOwner {
        _isExcludedFromFee[account] = _enabled;
    }
    
    function setmarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = payable(newWallet);
    }

    function setDevWallet(address newWallet) external onlyOwner {
        devWallet = payable(newWallet);
    }

    function setMaxSellAmount(uint256 amount) external onlyOwner {
        maxSellAmount = amount;
    }

    function setBuybackDivisor(uint256 amount) external onlyOwner {
        require(amount <= _liquidityFee, "Value higher than liquidity fee not allowed");
        buybackDivisor = amount;
    }

    function setMaxBuyAmount(uint256 amount) external onlyOwner {
        maxBuyAmount = amount;
    }

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

    function setNumTokensSellToAddToLiquidity(uint256 amount) public onlyOwner {
        numTokensSellToAddToLiquidity = amount;
    }

    function setBuybackLowerLimit(uint256 value) public onlyOwner {
        buyBackLowerLimit = value;
    }

    function buyBackTokens(uint256 amount) private lockTheSwap {
    	if (amount > 0) {
    	    swapETHForTokens(amount);
	    }
    }

    function checkForBuyBack() private lockTheSwap {
        uint256 balance = address(this).balance;
        if (buyBackEnabled && balance >= buyBackLowerLimit) 
        {    
            if (balance > buyBackUpperLimit) {
                balance = buyBackUpperLimit;
                }
            buyBackTokens(balance);
        }
    }

    function swapETHForTokens(uint256 amount) private {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            deadWallet,
            block.timestamp);
        emit SwapETHForTokens(amount, path);
    }

    function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() {
        buyBackUpperLimit = buyBackLimit;
    }

    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        emit BuyBackEnabledUpdated(_enabled);
    }
    
    function manualBuyback(uint256 amount) external onlyOwner() {
        buyBackTokens(amount);
    }

    // Blacklist
    function setBlacklistStatus(address _address, bool status) public onlyOwner{
        _blacklisted[_address] = status;
    }

    function isBlacklisted(address _address) public view returns (bool) {
        return _blacklisted[_address];
    }

    // Contract rejection
    function setContractsAllowedStatus(bool status) public onlyOwner {
        contractsAllowed = status;
    }

    function isContractExempt(address _address) public view returns (bool) {
        return _contractExempt[_address];
    }

    function setContractExemptStatus(address _address, bool status) public onlyOwner {
        _contractExempt[_address] = status;
    }

    // Max wallet
    function isMaxWalletLimitExempt(address _address) public view returns(bool) {
        return _maxWalletLimitExempt[_address];
    }

    function setMaxWalletLimit(uint256 value) public onlyOwner {
        maxWalletLimit = value;
    }

    function setMaxWalletLimitExemptStatus(address _address, bool status) public onlyOwner {
        _maxWalletLimitExempt[_address] = status;
    }

    function getETHValue(uint256 tokenAmount) private view returns (uint256 ethValue) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        ethValue = uniswapV2Router.getAmountsOut(tokenAmount, path)[1];
    }

    // private sale limits
    mapping(address => LimitedWallet) private _limits;

    uint256 public privateSaleGlobalLimit; // limit over timeframe for private salers
    uint256 public privateSaleGlobalLimitPeriod; // timeframe for private salers

    uint256 public globalLimit; // limit over timeframe for all
    uint256 public globalLimitPeriod; // timeframe for all

    bool public globalLimitsActive = true;
    bool public globalLimitsPrivateSaleActive = true;

    struct LimitedWallet {
        uint256[] sellAmounts;
        uint256[] sellTimestamps;
        uint256 limitPeriod; // ability to set custom values for individual wallets
        uint256 limitETH; // ability to set custom values for individual wallets
        bool isPrivateSaler;
        bool isExcluded;
    }

    function setGlobalLimitPrivateSale(uint256 newLimit) public onlyOwner {
        privateSaleGlobalLimit = newLimit;
    } 

    function setGlobalLimitPeriodPrivateSale(uint256 newPeriod) public onlyOwner {
        privateSaleGlobalLimitPeriod = newPeriod;
    }

    function setGlobalLimit(uint256 newLimit) public onlyOwner {
        globalLimit = newLimit;
    } 

    function setGlobalLimitPeriod(uint256 newPeriod) public onlyOwner {
        globalLimitPeriod = newPeriod;
    }

    function setGlobalLimitsPrivateSaleActiveStatus(bool status) public onlyOwner {
        globalLimitsPrivateSaleActive = status;
    }

    function setGlobalLimitsActiveStatus(bool status) public onlyOwner {
        globalLimitsActive = status;
    }

    function getLimits(address _address) public view returns (LimitedWallet memory){
        return _limits[_address];
    }

    // Set custom limits for an address. Defaults to 0, thus will use the "globalLimitPeriod" and "globalLimitETH" if we don't set them
    function setLimits(address[] calldata addresses, uint256[] calldata limitPeriods, uint256[] calldata limitsETH) public onlyOwner{
        require(addresses.length == limitPeriods.length && limitPeriods.length == limitsETH.length, "Array lengths don't match");
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].limitPeriod = limitPeriods[i];
            _limits[addresses[i]].limitETH = limitsETH[i];
        }

    }

    function addPrivateSalers(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isPrivateSaler = true;
        }
    }

    function removePrivateSalers(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isPrivateSaler = false;
        }
    }

    function addExcludedFromLimits(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isExcluded = true;
        }
    }

    function removeExcludedFromLimits(address[] calldata addresses) public onlyOwner{
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isExcluded = false;
        }
    }

    // Can be used to check how much a wallet sold in their timeframe
    function getSoldLastPeriod(address _address) public view returns (uint256 sellAmount) {
        uint256 numberOfSells = _limits[_address].sellAmounts.length;

        if (numberOfSells == 0) {
            return sellAmount;
        }
        uint256 defaultLimitPeriod = _limits[_address].isPrivateSaler ? privateSaleGlobalLimitPeriod : globalLimitPeriod;
        uint256 limitPeriod = _limits[_address].limitPeriod == 0 ? defaultLimitPeriod : _limits[_address].limitPeriod;
        while (true) {
            if (numberOfSells == 0) {
                break;
            }
            numberOfSells--;
            uint256 sellTimestamp = _limits[_address].sellTimestamps[numberOfSells];
            if (block.timestamp - limitPeriod <= sellTimestamp) {
                sellAmount += _limits[_address].sellAmounts[numberOfSells];
            } else {
                break;
            }
        }
    }
    // Handle private sale wallets
    function _handleLimited(address from, uint256 taxedAmount) private {
        if (_limits[from].isExcluded || (!globalLimitsActive && !_limits[from].isPrivateSaler) || (!globalLimitsPrivateSaleActive && _limits[from].isPrivateSaler)){
            return;
        }
        uint256 ethValue = getETHValue(taxedAmount);
        _limits[from].sellTimestamps.push(block.timestamp);
        _limits[from].sellAmounts.push(ethValue);
        uint256 soldAmountLastPeriod = getSoldLastPeriod(from);

        uint256 defaultLimit = _limits[from].isPrivateSaler ? privateSaleGlobalLimit : globalLimit;
        uint256 limit = _limits[from].limitETH == 0 ? defaultLimit : _limits[from].limitETH;
        require(soldAmountLastPeriod <= limit, "Amount over the limit for time period");
    }
    
    function multiSendTokens(address[] calldata addresses, uint256[] calldata amounts) public onlyOwner{
        require(addresses.length == amounts.length, "Array lengths don't match");
        require(addresses.length <= 1000, "Array too long");
        for(uint256 i=0; i < addresses.length; i++){
            _transfer(msg.sender, addresses[i], amounts[i]);
        }
    }
    // Get tokens that are on the contract
    function sweepTokens(address token, address recipient) public onlyOwner {
        uint256 amount = IERC20(token).balanceOf(address(this));
        IERC20(token).transfer(recipient, amount);
    }

    function withdraw() public onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":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":[{"internalType":"address","name":"_address","type":"address"}],"name":"AMMStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addPrivateSalers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackLowerLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","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":[],"name":"defaultDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getLimits","outputs":[{"components":[{"internalType":"uint256[]","name":"sellAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"sellTimestamps","type":"uint256[]"},{"internalType":"uint256","name":"limitPeriod","type":"uint256"},{"internalType":"uint256","name":"limitETH","type":"uint256"},{"internalType":"bool","name":"isPrivateSaler","type":"bool"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"internalType":"struct OOO.LimitedWallet","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSoldLastPeriod","outputs":[{"internalType":"uint256","name":"sellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsPrivateSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","outputs":[],"stateMutability":"nonpayable","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":"_address","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isContractExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isMaxWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"manualBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removePrivateSalers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setAMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllSaleFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBuybackDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setBuybackLowerLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractsAllowedStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriodPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimitPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsPrivateSaleActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"limitPeriods","type":"uint256[]"},{"internalType":"uint256[]","name":"limitsETH","type":"uint256[]"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxBuyAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxSellAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"setTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTransferTaxStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6003805460ff1916905560c0604052600a6080819052694f6e65206f66204f6e6560b01b60a09081526200003791600e91906200068c565b50604080518082019091526003808252624f4f4f60e81b60209092019182526200006491600f916200068c565b5060108054600960ff1991821681179092556001601481905560036015818155601682905560178054851684179055601855601a819055601b829055601c55601d8054831690911790556007601e55601f80549091169055606460205560006023556024805461dead6001600160a01b03199091161790556026805463ffffffff60a81b1916630101010160a81b1790556200010290600a620007ad565b620001139064e8d4a510006200086e565b602755601054620001299060ff16600a620007ad565b6200013a906404a817c8006200086e565b602855601054620001509060ff16600a620007ad565b62000161906412a05f20006200086e565b602955601054620001779060ff16600a620007ad565b6200018790633b9aca006200086e565b602a556010546200019d9060ff16600a620007ad565b620001ae906412a05f20006200086e565b602b55670de0b6b3a7640000602c5564e8d4a51000602d55602e805460ff191690556034805461ffff1916610101179055348015620001ec57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600460208181526040808420805460ff19908116600190811790925530865294829020805490951617909355602180546001600160a01b031990811673197ec0e98cc562284bfc8db0f5c08d0eba6bf922179091556022805490911673d5e7a8bc74ded9050e05dfd348a27df76ca55048179055825163c45a015560e01b81529251737a250d5630b4cf539739df2c5dacb4c659f2488d938493849363c45a0155938383019391929091829003018186803b158015620002f357600080fd5b505afa15801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e919062000732565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037757600080fd5b505afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062000732565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003fb57600080fd5b505af115801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062000732565b602680546001600160a01b03199081166001600160a01b0393841617909155602580549091169183169190911790556001600760006200047e6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260079092528120805490921660011790915560275490600690620004d96000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160009081209490945530808552600984528285208054600160ff1991821681179092558884168088528588208054831684179055602180548616895286892080548416851790556022805487168a52878a2080548516861790556026805488168b52888b208054861687179055868b52600a8a52888b208054861687179055838b52888b208054861687179055915487168a52878a2080548516861790555486168952868920805484168517905580548616895286892080548416851790558854861689528689208054841685179055885486168952602f88528689206004908101805461010061ff00199182168117909255968b52888b2082018054881682179055838b52888b20909101805490961617909455925484168752600c865284872080549091169091179055671bc16d674ec800006032556201518060335584549091168452600583528184209084528252808320600019905560275490519081523392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620008e3565b8280546200069a9062000890565b90600052602060002090601f016020900481019282620006be576000855562000709565b82601f10620006d957805160ff191683800117855562000709565b8280016001018555821562000709579182015b8281111562000709578251825591602001919060010190620006ec565b50620007179291506200071b565b5090565b5b808211156200071757600081556001016200071c565b6000602082840312156200074557600080fd5b81516001600160a01b03811681146200075d57600080fd5b9392505050565b600181815b80851115620007a5578160001904821115620007895762000789620008cd565b808516156200079757918102915b93841c939080029062000769565b509250929050565b60006200075d60ff841683600082620007c95750600162000868565b81620007d85750600062000868565b8160018114620007f15760028114620007fc576200081c565b600191505062000868565b60ff841115620008105762000810620008cd565b50506001821b62000868565b5060208310610133831016604e8410600b841016171562000841575081810a62000868565b6200084d838362000764565b8060001904821115620008645762000864620008cd565b0290505b92915050565b60008160001904831182151516156200088b576200088b620008cd565b500290565b600181811c90821680620008a557607f821691505b60208210811415620008c757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b614a1d80620008f36000396000f3fe60806040526004361061061a5760003560e01c806370e5024111610329578063a457c2d7116101b6578063d17761cf11610102578063f064321f116100a0578063f34eb0b81161007a578063f34eb0b81461124e578063f6887cd31461126e578063fb201b1d146112a7578063fe575a87146112bc57600080fd5b8063f064321f146111ee578063f0f165af1461120e578063f2fde38b1461122e57600080fd5b8063da29c27f116100dc578063da29c27f14611152578063dd46706414611168578063dd62ed3e14611188578063e99c9d09146111ce57600080fd5b8063d17761cf146110fc578063d1d3a05f14611112578063d7c6e3601461113257600080fd5b8063b49841231161016f578063c49b9a8011610149578063c49b9a8014611090578063c5f34b9c146110b0578063ca450788146110d0578063d12a7688146110e657600080fd5b8063b49841231461102f578063bf7856b71461104f578063c480512e1461107057600080fd5b8063a457c2d714610f84578063a69df4b514610fa4578063a9059cbb14610fb9578063aa45026b14610fd9578063ae02cd5c14610fef578063af9549e01461100f57600080fd5b80638b5259031161027557806395d89b411161022e57806399fa296f1161020857806399fa296f14610f175780639d5710d114610f385780639f64621414610f4e578063a36322c614610f6457600080fd5b806395d89b4114610ec857806396f9e9be14610edd57806398e2a5e214610ef757600080fd5b80638b52590314610e065780638baeefce14610e265780638c672a2614610e3b5780638da5cb5b14610e745780638ea5220f14610e9257806390987e0914610eb257600080fd5b80637ba6b4ee116102e257806385141a77116102bc57806385141a7714610d90578063867a1dc214610db057806388e765ff14610dd05780638b16549a14610de657600080fd5b80637ba6b4ee14610d405780638124f7ac14610d5a57806382d2a4bb14610d7057600080fd5b806370e5024114610c94578063715018a614610caa578063728d41c914610cbf57806375f0a87414610cdf5780637638e15114610cff5780637b94943b14610d1f57600080fd5b80634198d1bb116104a75780635d38ab85116103f357806366a88d96116103ac5780636bc87c3a116103865780636bc87c3a14610c095780636fb9fbfe14610c1f57806370a0823114610c3f57806370bfcf2114610c7557600080fd5b806366a88d9614610bc757806366d602ae14610bdd57806369550efd14610bf357600080fd5b80635d38ab8514610b0b578063602bc62b14610b2b5780636053a0e314610b405780636199d05e14610b5a57806361a13b4a14610b7a57806363e8f37014610ba757600080fd5b806349bd5a5e1161046057806350286f641161043a57806350286f6414610a595780635342acb414610a79578063545fb32814610ab25780635ca52d6714610aeb57600080fd5b806349bd5a5e146109f85780634a74bb0214610a185780634d87c64414610a3957600080fd5b80634198d1bb14610952578063424ba8481461097257806343614d2814610992578063437d9840146109a857806347535d7b146109be57806348914c99146109d857600080fd5b806322461173116105665780632610eaca1161051f578063313ce567116104f9578063313ce567146108e557806339509351146109075780633ccfd60b1461092757806340615b8b1461093c57600080fd5b80632610eaca1461088557806329370cc6146108a55780632b9b4f78146108c557600080fd5b806322461173146107d557806322976e0d146107f557806322c98d341461080b578063232898b41461082557806323b635851461084557806323b872dd1461086557600080fd5b8063147745e5116105d3578063170dde6a116105ad578063170dde6a1461077457806318160ddd1461078a5780631f53ac021461079f57806321ba5081146107bf57600080fd5b8063147745e5146106f85780631609be1d1461071c5780631694505e1461073c57600080fd5b806301339c211461062657806303d29d281461063d5780630609511e1461065d57806306fdde031461067d578063095ea7b3146106a85780630b6bb6f5146106d857600080fd5b3661062157005b600080fd5b34801561063257600080fd5b5061063b6112f5565b005b34801561064957600080fd5b5061063b610658366004614207565b611345565b34801561066957600080fd5b5061063b610678366004614515565b61139a565b34801561068957600080fd5b506106926113c9565b60405161069f919061464a565b60405180910390f35b3480156106b457600080fd5b506106c86106c3366004614235565b61145b565b604051901515815260200161069f565b3480156106e457600080fd5b5061063b6106f33660046143a9565b611472565b34801561070457600080fd5b5061070e60205481565b60405190815260200161069f565b34801561072857600080fd5b5061063b61073736600461418d565b61150e565b34801561074857600080fd5b5060255461075c906001600160a01b031681565b6040516001600160a01b03909116815260200161069f565b34801561078057600080fd5b5061070e601b5481565b34801561079657600080fd5b5060275461070e565b3480156107ab57600080fd5b5061063b6107ba366004614153565b61163e565b3480156107cb57600080fd5b5061070e60315481565b3480156107e157600080fd5b5061063b6107f0366004614153565b61168a565b34801561080157600080fd5b5061070e60135481565b34801561081757600080fd5b506034546106c89060ff1681565b34801561083157600080fd5b5061063b610840366004614261565b6116d6565b34801561085157600080fd5b5061063b610860366004614515565b6117a3565b34801561087157600080fd5b506106c86108803660046141c6565b6117f7565b34801561089157600080fd5b5061063b6108a03660046142a3565b611860565b3480156108b157600080fd5b5061063b6108c03660046144db565b611964565b3480156108d157600080fd5b5061063b6108e03660046144db565b6119d6565b3480156108f157600080fd5b5060105460405160ff909116815260200161069f565b34801561091357600080fd5b506106c8610922366004614235565b611a13565b34801561093357600080fd5b5061063b611a49565b34801561094857600080fd5b5061070e601c5481565b34801561095e57600080fd5b5061063b61096d366004614515565b611a9f565b34801561097e57600080fd5b5061063b61098d366004614207565b611b34565b34801561099e57600080fd5b5061070e601a5481565b3480156109b457600080fd5b5061070e60335481565b3480156109ca57600080fd5b506003546106c89060ff1681565b3480156109e457600080fd5b5061063b6109f3366004614547565b611b89565b348015610a0457600080fd5b5060265461075c906001600160a01b031681565b348015610a2457600080fd5b506026546106c890600160a81b900460ff1681565b348015610a4557600080fd5b5061063b610a54366004614547565b611bc1565b348015610a6557600080fd5b5061063b610a74366004614207565b611bf9565b348015610a8557600080fd5b506106c8610a94366004614153565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610abe57600080fd5b506106c8610acd366004614153565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610af757600080fd5b5061063b610b063660046144db565b611c4e565b348015610b1757600080fd5b5061063b610b263660046144db565b611c92565b348015610b3757600080fd5b5060025461070e565b348015610b4c57600080fd5b50602e546106c89060ff1681565b348015610b6657600080fd5b5061063b610b75366004614515565b611ccf565b348015610b8657600080fd5b50610b9a610b95366004614153565b611cfe565b60405161069f91906146fc565b348015610bb357600080fd5b5061063b610bc2366004614261565b611e40565b348015610bd357600080fd5b5061070e602b5481565b348015610be957600080fd5b5061070e60285481565b348015610bff57600080fd5b5061070e60155481565b348015610c1557600080fd5b5061070e60125481565b348015610c2b57600080fd5b5061063b610c3a3660046144db565b611f01565b348015610c4b57600080fd5b5061070e610c5a366004614153565b6001600160a01b031660009081526006602052604090205490565b348015610c8157600080fd5b506034546106c890610100900460ff1681565b348015610ca057600080fd5b5061070e602c5481565b348015610cb657600080fd5b5061063b611f49565b348015610ccb57600080fd5b5061063b610cda366004614515565b611fab565b348015610ceb57600080fd5b5060215461075c906001600160a01b031681565b348015610d0b57600080fd5b5061063b610d1a366004614207565b611fda565b348015610d2b57600080fd5b506026546106c890600160c01b900460ff1681565b348015610d4c57600080fd5b50601f546106c89060ff1681565b348015610d6657600080fd5b5061070e601e5481565b348015610d7c57600080fd5b5061063b610d8b366004614515565b61202f565b348015610d9c57600080fd5b5060245461075c906001600160a01b031681565b348015610dbc57600080fd5b5061063b610dcb366004614261565b61205e565b348015610ddc57600080fd5b5061070e60295481565b348015610df257600080fd5b5061070e610e01366004614153565b612126565b348015610e1257600080fd5b5061063b610e21366004614515565b612286565b348015610e3257600080fd5b5061063b6122b5565b348015610e4757600080fd5b506106c8610e56366004614153565b6001600160a01b03166000908152600c602052604090205460ff1690565b348015610e8057600080fd5b506000546001600160a01b031661075c565b348015610e9e57600080fd5b5060225461075c906001600160a01b031681565b348015610ebe57600080fd5b5061070e60145481565b348015610ed457600080fd5b506106926122eb565b348015610ee957600080fd5b50601d546106c89060ff1681565b348015610f0357600080fd5b5061063b610f12366004614515565b6122fa565b348015610f2357600080fd5b506026546106c890600160b81b900460ff1681565b348015610f4457600080fd5b5061070e60325481565b348015610f5a57600080fd5b5061070e60165481565b348015610f7057600080fd5b5061063b610f7f366004614515565b612329565b348015610f9057600080fd5b506106c8610f9f366004614235565b612358565b348015610fb057600080fd5b5061063b6123a7565b348015610fc557600080fd5b506106c8610fd4366004614235565b6124ad565b348015610fe557600080fd5b5061070e60115481565b348015610ffb57600080fd5b5061063b61100a366004614261565b6124ba565b34801561101b57600080fd5b5061063b61102a366004614207565b61257b565b34801561103b57600080fd5b5061063b61104a366004614515565b6125d0565b34801561105b57600080fd5b506026546106c890600160b01b900460ff1681565b34801561107c57600080fd5b5061063b61108b366004614515565b6125ff565b34801561109c57600080fd5b5061063b6110ab3660046144db565b612632565b3480156110bc57600080fd5b5061063b6110cb3660046144db565b6126a9565b3480156110dc57600080fd5b5061070e60305481565b3480156110f257600080fd5b5061070e602a5481565b34801561110857600080fd5b5061070e602d5481565b34801561111e57600080fd5b5061063b61112d3660046144db565b6126f1565b34801561113e57600080fd5b5061063b61114d3660046144db565b61272e565b34801561115e57600080fd5b5061070e60235481565b34801561117457600080fd5b5061063b611183366004614515565b612776565b34801561119457600080fd5b5061070e6111a336600461418d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156111da57600080fd5b5061063b6111e9366004614515565b6127fb565b3480156111fa57600080fd5b5061063b61120936600461430f565b61282a565b34801561121a57600080fd5b5061063b611229366004614515565b6129b4565b34801561123a57600080fd5b5061063b611249366004614153565b6129e3565b34801561125a57600080fd5b5061063b611269366004614515565b612abb565b34801561127a57600080fd5b506106c8611289366004614153565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156112b357600080fd5b5061063b612aea565b3480156112c857600080fd5b506106c86112d7366004614153565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146113285760405162461bcd60e51b815260040161131f9061469f565b60405180910390fd5b42600d81905560195560636012556000602355611343612aea565b565b6000546001600160a01b0316331461136f5760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c45760405162461bcd60e51b815260040161131f9061469f565b603155565b6060600e80546113d89061489f565b80601f01602080910402602001604051908101604052809291908181526020018280546114049061489f565b80156114515780601f1061142657610100808354040283529160200191611451565b820191906000526020600020905b81548152906001019060200180831161143457829003601f168201915b5050505050905090565b6000611468338484612b23565b5060015b92915050565b6000546001600160a01b0316331461149c5760405162461bcd60e51b815260040161131f9061469f565b60005b81518160ff16101561150a57600160046000848460ff16815181106114c6576114c661492b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611502816148f5565b91505061149f565b5050565b6000546001600160a01b031633146115385760405162461bcd60e51b815260040161131f9061469f565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561157a57600080fd5b505afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b2919061452e565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163891906144f8565b50505050565b6000546001600160a01b031633146116685760405162461bcd60e51b815260040161131f9061469f565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116b45760405162461bcd60e51b815260040161131f9061469f565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117005760405162461bcd60e51b815260040161131f9061469f565b6103e88111156117225760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576001602f60008585858181106117455761174561492b565b905060200201602081019061175a9190614153565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611796816148da565b915050611725565b505050565b6000546001600160a01b031633146117cd5760405162461bcd60e51b815260040161131f9061469f565b6117f46117e26000546001600160a01b031690565b6024546001600160a01b031683612c47565b50565b6000611804848484612c47565b61185684336118518560405180606001604052806028815260200161497b602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906134b8565b612b23565b5060019392505050565b6000546001600160a01b0316331461188a5760405162461bcd60e51b815260040161131f9061469f565b8281146118d55760405162461bcd60e51b8152602060048201526019602482015278082e4e4c2f240d8cadccee8d0e640c8dedc4ee840dac2e8c6d603b1b604482015260640161131f565b6103e88311156118f75760405162461bcd60e51b815260040161131f906146d4565b60005b8381101561195d5761194b338686848181106119185761191861492b565b905060200201602081019061192d9190614153565b85858581811061193f5761193f61492b565b90506020020135612c47565b80611955816148da565b9150506118fa565b5050505050565b6000546001600160a01b0316331461198e5760405162461bcd60e51b815260040161131f9061469f565b602e805460ff19168215159081179091556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0906020015b60405180910390a150565b6000546001600160a01b03163314611a005760405162461bcd60e51b815260040161131f9061469f565b6034805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161146891859061185190866134f2565b6000546001600160a01b03163314611a735760405162461bcd60e51b815260040161131f9061469f565b60405133904780156108fc02916000818181858888f193505050501580156117f4573d6000803e3d6000fd5b6000546001600160a01b03163314611ac95760405162461bcd60e51b815260040161131f9061469f565b601254811115611b2f5760405162461bcd60e51b815260206004820152602b60248201527f56616c756520686967686572207468616e206c6971756964697479206665652060448201526a1b9bdd08185b1b1bddd95960aa1b606482015260840161131f565b602355565b6000546001600160a01b03163314611b5e5760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611bb35760405162461bcd60e51b815260040161131f9061469f565b601192909255601255601355565b6000546001600160a01b03163314611beb5760405162461bcd60e51b815260040161131f9061469f565b601a92909255601b55601c55565b6000546001600160a01b03163314611c235760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611c785760405162461bcd60e51b815260040161131f9061469f565b603480549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611cbc5760405162461bcd60e51b815260040161131f9061469f565b601d805460ff1916911515919091179055565b6000546001600160a01b03163314611cf95760405162461bcd60e51b815260040161131f9061469f565b603255565b611d3b6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152602f60209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611da557602002820191906000526020600020905b815481526020019060010190808311611d91575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611dfd57602002820191906000526020600020905b815481526020019060010190808311611de9575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611e6a5760405162461bcd60e51b815260040161131f9061469f565b6103e8811115611e8c5760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576001602f6000858585818110611eaf57611eaf61492b565b9050602002016020810190611ec49190614153565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611ef9816148da565b915050611e8f565b6000546001600160a01b03163314611f2b5760405162461bcd60e51b815260040161131f9061469f565b60268054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611f735760405162461bcd60e51b815260040161131f9061469f565b600080546040516001600160a01b03909116906000805160206149a3833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611fd55760405162461bcd60e51b815260040161131f9061469f565b602b55565b6000546001600160a01b031633146120045760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146120595760405162461bcd60e51b815260040161131f9061469f565b602c55565b6000546001600160a01b031633146120885760405162461bcd60e51b815260040161131f9061469f565b6103e88111156120aa5760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576000602f60008585858181106120cd576120cd61492b565b90506020020160208101906120e29190614153565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff00199092169190911790558061211e816148da565b9150506120ad565b6001600160a01b0381166000908152602f60205260408120548061214a5750919050565b6001600160a01b0383166000908152602f602052604081206004015460ff1661217557603354612179565b6031545b6001600160a01b0385166000908152602f602052604081206002015491925090156121bf576001600160a01b0385166000908152602f60205260409020600201546121c1565b815b90505b826121ce5761227e565b826121d881614888565b6001600160a01b0387166000908152602f602052604081206001018054929650909250908590811061220c5761220c61492b565b906000526020600020015490508082426122269190614871565b11612272576001600160a01b0386166000908152602f602052604090208054859081106122555761225561492b565b90600052602060002001548561226b9190614818565b9450612278565b5061227e565b506121c4565b505050919050565b6000546001600160a01b031633146122b05760405162461bcd60e51b815260040161131f9061469f565b601e55565b6000546001600160a01b031633146122df5760405162461bcd60e51b815260040161131f9061469f565b6003805460ff19169055565b6060600f80546113d89061489f565b6000546001600160a01b031633146123245760405162461bcd60e51b815260040161131f9061469f565b603055565b6000546001600160a01b031633146123535760405162461bcd60e51b815260040161131f9061469f565b602d55565b60006114683384611851856040518060600160405280602581526020016149c3602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906134b8565b6001546001600160a01b0316331461240d5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161131f565b600254421061245e5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161131f565b600154600080546040516001600160a01b0393841693909116916000805160206149a383398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000611468338484612c47565b6000546001600160a01b031633146124e45760405162461bcd60e51b815260040161131f9061469f565b6103e88111156125065760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576000602f60008585858181106125295761252961492b565b905060200201602081019061253e9190614153565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580612573816148da565b915050612509565b6000546001600160a01b031633146125a55760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146125fa5760405162461bcd60e51b815260040161131f9061469f565b603355565b6000546001600160a01b031633146126295760405162461bcd60e51b815260040161131f9061469f565b6117f481613558565b6000546001600160a01b0316331461265c5760405162461bcd60e51b815260040161131f9061469f565b60268054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906119cb90831515815260200190565b6000546001600160a01b031633146126d35760405162461bcd60e51b815260040161131f9061469f565b60268054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461271b5760405162461bcd60e51b815260040161131f9061469f565b601f805460ff1916911515919091179055565b6000546001600160a01b031633146127585760405162461bcd60e51b815260040161131f9061469f565b60268054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146127a05760405162461bcd60e51b815260040161131f9061469f565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556127cf8142614818565b600255600080546040516001600160a01b03909116906000805160206149a3833981519152908390a350565b6000546001600160a01b031633146128255760405162461bcd60e51b815260040161131f9061469f565b602855565b6000546001600160a01b031633146128545760405162461bcd60e51b815260040161131f9061469f565b848314801561286257508281145b6128aa5760405162461bcd60e51b8152602060048201526019602482015278082e4e4c2f240d8cadccee8d0e640c8dedc4ee840dac2e8c6d603b1b604482015260640161131f565b6103e88511156128cc5760405162461bcd60e51b815260040161131f906146d4565b60005b858110156129ab578484828181106128e9576128e961492b565b90506020020135602f60008989858181106129065761290661492b565b905060200201602081019061291b9190614153565b6001600160a01b0316815260208101919091526040016000206002015582828281811061294a5761294a61492b565b90506020020135602f60008989858181106129675761296761492b565b905060200201602081019061297c9190614153565b6001600160a01b03168152602081019190915260400160002060030155806129a3816148da565b9150506128cf565b50505050505050565b6000546001600160a01b031633146129de5760405162461bcd60e51b815260040161131f9061469f565b602a55565b6000546001600160a01b03163314612a0d5760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b038116612a725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161131f565b600080546040516001600160a01b03808516939216916000805160206149a383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612ae55760405162461bcd60e51b815260040161131f9061469f565b602955565b6000546001600160a01b03163314612b145760405162461bcd60e51b815260040161131f9061469f565b6003805460ff19166001179055565b6001600160a01b038316612b855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161131f565b6001600160a01b038216612be65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161131f565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612c7457506001600160a01b03821660009081526004602052604090205460ff165b80612c9757506001600160a01b03811660009081526004602052604090205460ff165b612cce5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161131f565b6001600160a01b038516612d325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161131f565b6001600160a01b038416612d945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161131f565b60008311612df65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161131f565b6001600160a01b038516600090815260066020526040902054831115612e5e5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161131f565b6001600160a01b03851660009081526008602052604090205460ff1680612e9d57506001600160a01b03841660009081526008602052604090205460ff165b15612eea5760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161131f565b601f5460ff1680612f0a5750612f08856001600160a01b031661358a565b155b80612f2d57506001600160a01b03851660009081526009602052604090205460ff165b612f705760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161131f565b30600090815260066020526040902054602a5481108015908190612f9e5750602654600160a01b900460ff16155b8015612fc357506001600160a01b0387166000908152600c602052604090205460ff16155b8015612fd85750602654600160a81b900460ff165b15612ff357612fe56135c6565b602a549150612ff38261360c565b612ffb6137c3565b6001600160a01b03871660009081526007602052604081205460ff168061303a57506001600160a01b03871660009081526007602052604090205460ff165b8061304e5750602654600160a01b900460ff165b1561305b57506000613286565b6001600160a01b0387166000908152600c602052604090205460ff161561311857602854861115806130975750602654600160b01b900460ff16155b6130ee5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161131f565b613111601a5461310b601c54601b546134f290919063ffffffff16565b906134f2565b9050613286565b6001600160a01b0388166000908152600c602052604090205460ff16156131f557600d54421415613167576001600160a01b0387166000908152600860205260409020805460ff191660011790555b602954861115806131825750602654600160b81b900460ff16155b6131d85760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161131f565b61311160115461310b6013546012546134f290919063ffffffff16565b6001600160a01b0388166000908152602f602052604090206004015460ff161580156132225750600d5442115b61326e5760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161131f565b601d5460ff1661327f576000613283565b601e545b90505b60006132928783613878565b905060006132a08883613896565b6001600160a01b038b166000908152600660205260409020549091506132c69089613896565b6001600160a01b038b166000908152600660205260408082209290925530815220546132f290826134f2565b30600090815260066020526040808220929092556001600160a01b038b168152205461331e90836134f2565b6001600160a01b038a166000908152600660205260409020819055602b5410158061336157506001600160a01b0389166000908152600a602052604090205460ff165b806133765750602654600160c01b900460ff16155b6133d65760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161131f565b602654600160a01b900460ff1615801561340957506001600160a01b038a166000908152600c602052604090205460ff16155b15613418576134188a836138d8565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161345d91815260200190565b60405180910390a380156134ac5760405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050505050565b600081848411156134dc5760405162461bcd60e51b815260040161131f919061464a565b5060006134e98486614871565b95945050505050565b6000806134ff8385614818565b9050838110156135515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161131f565b9392505050565b6026805460ff60a01b1916600160a01b179055801561357a5761357a81613aae565b506026805460ff60a01b19169055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906135be57508115155b949350505050565b6026805460ff60a01b1916600160a01b179055602e54479060ff1680156135ef5750602d548110155b1561357a57602c548111156136035750602c545b61357a81613558565b6026805460ff60a01b1916600160a01b17905560115460135460125460009261363a92909161310b916134f2565b905080156137b2576000613672600261366c60235460125461365c9190614871565b6136668787613c4d565b90613c8f565b90613c4d565b905060006136808483613896565b90504761368c82613d0e565b60006136984783613896565b905060006136be600261366c6023546012546136b49190614871565b613666868b613c4d565b90508015613712576136d08582613e6f565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6021546013546001600160a01b03909116906108fc9061373690613666868b613c4d565b6040518115909202916000818181858888f1935050505015801561375e573d6000803e3d6000fd5b506022546011546001600160a01b03909116906108fc9061378390613666868b613c4d565b6040518115909202916000818181858888f193505050501580156137ab573d6000803e3d6000fd5b5050505050505b50506026805460ff60a01b19169055565b60175460ff1680156137d65750600d5415155b15611343576000601954426137eb9190614871565b90506000601854826137fd9190614830565b905060005b818110156138445760036012541161381957613844565b60036012600082825461382c9190614871565b9091555081905061383c816148da565b915050613802565b5042601955601254600c1061150a576017805460ff1916905560145460125560165460135560155460115560026023555050565b6020546000906135519061366c61388f8286613896565b8690613c8f565b600061355183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134b8565b6001600160a01b0382166000908152602f6020526040902060040154610100900460ff1680613931575060345460ff1615801561393157506001600160a01b0382166000908152602f602052604090206004015460ff16155b8061396a5750603454610100900460ff1615801561396a57506001600160a01b0382166000908152602f602052604090206004015460ff165b15613973575050565b600061397e82613f4c565b6001600160a01b0384166000908152602f6020908152604082206001808201805480830182559085528385204291015581549081018255908352908220018290559091506139cb84612126565b6001600160a01b0385166000908152602f60205260408120600401549192509060ff166139fa576032546139fe565b6030545b6001600160a01b0386166000908152602f60205260408120600301549192509015613a44576001600160a01b0386166000908152602f6020526040902060030154613a46565b815b905080831115613aa65760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161131f565b505050505050565b6040805160028082526060820183526000926020830190803683375050602554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613b1357600080fd5b505afa158015613b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b4b9190614170565b81600081518110613b5e57613b5e61492b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613b9257613b9261492b565b6001600160a01b03928316602091820292909201015260255460245460405163b6f9de9560e01b81529183169263b6f9de95928692613bde926000928892909116904290600401614615565b6000604051808303818588803b158015613bf757600080fd5b505af1158015613c0b573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051613c4192919061476e565b60405180910390a15050565b600061355183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140d9565b600082613c9e5750600061146c565b6000613caa8385614852565b905082613cb78583614830565b146135515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161131f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613d4357613d4361492b565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613d9757600080fd5b505afa158015613dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dcf9190614170565b81600181518110613de257613de261492b565b6001600160a01b039283166020918202929092010152602554613e089130911684612b23565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790613e41908590600090869030904290600401614787565b600060405180830381600087803b158015613e5b57600080fd5b505af1158015613aa6573d6000803e3d6000fd5b602554613e879030906001600160a01b031684612b23565b6025546001600160a01b031663f305d719823085600080613eb06000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613f1357600080fd5b505af1158015613f27573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061195d9190614573565b604080516002808252606082018352600092839291906020830190803683370190505090503081600081518110613f8557613f8561492b565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613fd957600080fd5b505afa158015613fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140119190614170565b816001815181106140245761402461492b565b6001600160a01b03928316602091820292909201015260255460405163d06ca61f60e01b815291169063d06ca61f90614063908690859060040161476e565b60006040518083038186803b15801561407b57600080fd5b505afa15801561408f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140b7919081019061444f565b6001815181106140c9576140c961492b565b6020026020010151915050919050565b600081836140fa5760405162461bcd60e51b815260040161131f919061464a565b5060006134e98486614830565b60008083601f84011261411957600080fd5b50813567ffffffffffffffff81111561413157600080fd5b6020830191508360208260051b850101111561414c57600080fd5b9250929050565b60006020828403121561416557600080fd5b813561355181614957565b60006020828403121561418257600080fd5b815161355181614957565b600080604083850312156141a057600080fd5b82356141ab81614957565b915060208301356141bb81614957565b809150509250929050565b6000806000606084860312156141db57600080fd5b83356141e681614957565b925060208401356141f681614957565b929592945050506040919091013590565b6000806040838503121561421a57600080fd5b823561422581614957565b915060208301356141bb8161496c565b6000806040838503121561424857600080fd5b823561425381614957565b946020939093013593505050565b6000806020838503121561427457600080fd5b823567ffffffffffffffff81111561428b57600080fd5b61429785828601614107565b90969095509350505050565b600080600080604085870312156142b957600080fd5b843567ffffffffffffffff808211156142d157600080fd5b6142dd88838901614107565b909650945060208701359150808211156142f657600080fd5b5061430387828801614107565b95989497509550505050565b6000806000806000806060878903121561432857600080fd5b863567ffffffffffffffff8082111561434057600080fd5b61434c8a838b01614107565b9098509650602089013591508082111561436557600080fd5b6143718a838b01614107565b9096509450604089013591508082111561438a57600080fd5b5061439789828a01614107565b979a9699509497509295939492505050565b600060208083850312156143bc57600080fd5b823567ffffffffffffffff8111156143d357600080fd5b8301601f810185136143e457600080fd5b80356143f76143f2826147f4565b6147c3565b80828252848201915084840188868560051b870101111561441757600080fd5b600094505b8385101561444357803561442f81614957565b83526001949094019391850191850161441c565b50979650505050505050565b6000602080838503121561446257600080fd5b825167ffffffffffffffff81111561447957600080fd5b8301601f8101851361448a57600080fd5b80516144986143f2826147f4565b80828252848201915084840188868560051b87010111156144b857600080fd5b600094505b838510156144435780518352600194909401939185019185016144bd565b6000602082840312156144ed57600080fd5b81356135518161496c565b60006020828403121561450a57600080fd5b81516135518161496c565b60006020828403121561452757600080fd5b5035919050565b60006020828403121561454057600080fd5b5051919050565b60008060006060848603121561455c57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561458857600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156145da5781516001600160a01b0316875295820195908201906001016145b5565b509495945050505050565b600081518084526020808501945080840160005b838110156145da578151875295820195908201906001016145f9565b84815260806020820152600061462e60808301866145a1565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156146775785810183015185820160400152820161465b565b81811115614689576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d417272617920746f6f206c6f6e6760901b604082015260600190565b602081526000825160c0602084015261471860e08401826145e5565b90506020840151601f1984830301604085015261473582826145e5565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b8281526040602082015260006135be60408301846145a1565b85815284602082015260a0604082015260006147a660a08301866145a1565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156147ec576147ec614941565b604052919050565b600067ffffffffffffffff82111561480e5761480e614941565b5060051b60200190565b6000821982111561482b5761482b614915565b500190565b60008261484d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561486c5761486c614915565b500290565b60008282101561488357614883614915565b500390565b60008161489757614897614915565b506000190190565b600181811c908216806148b357607f821691505b602082108114156148d457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148ee576148ee614915565b5060010190565b600060ff821660ff81141561490c5761490c614915565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146117f457600080fd5b80151581146117f457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f3609106977e3b6310397299ecb53a7c46c8002105248ae9e93ef540d3452b0064736f6c63430008070033

Deployed Bytecode

0x60806040526004361061061a5760003560e01c806370e5024111610329578063a457c2d7116101b6578063d17761cf11610102578063f064321f116100a0578063f34eb0b81161007a578063f34eb0b81461124e578063f6887cd31461126e578063fb201b1d146112a7578063fe575a87146112bc57600080fd5b8063f064321f146111ee578063f0f165af1461120e578063f2fde38b1461122e57600080fd5b8063da29c27f116100dc578063da29c27f14611152578063dd46706414611168578063dd62ed3e14611188578063e99c9d09146111ce57600080fd5b8063d17761cf146110fc578063d1d3a05f14611112578063d7c6e3601461113257600080fd5b8063b49841231161016f578063c49b9a8011610149578063c49b9a8014611090578063c5f34b9c146110b0578063ca450788146110d0578063d12a7688146110e657600080fd5b8063b49841231461102f578063bf7856b71461104f578063c480512e1461107057600080fd5b8063a457c2d714610f84578063a69df4b514610fa4578063a9059cbb14610fb9578063aa45026b14610fd9578063ae02cd5c14610fef578063af9549e01461100f57600080fd5b80638b5259031161027557806395d89b411161022e57806399fa296f1161020857806399fa296f14610f175780639d5710d114610f385780639f64621414610f4e578063a36322c614610f6457600080fd5b806395d89b4114610ec857806396f9e9be14610edd57806398e2a5e214610ef757600080fd5b80638b52590314610e065780638baeefce14610e265780638c672a2614610e3b5780638da5cb5b14610e745780638ea5220f14610e9257806390987e0914610eb257600080fd5b80637ba6b4ee116102e257806385141a77116102bc57806385141a7714610d90578063867a1dc214610db057806388e765ff14610dd05780638b16549a14610de657600080fd5b80637ba6b4ee14610d405780638124f7ac14610d5a57806382d2a4bb14610d7057600080fd5b806370e5024114610c94578063715018a614610caa578063728d41c914610cbf57806375f0a87414610cdf5780637638e15114610cff5780637b94943b14610d1f57600080fd5b80634198d1bb116104a75780635d38ab85116103f357806366a88d96116103ac5780636bc87c3a116103865780636bc87c3a14610c095780636fb9fbfe14610c1f57806370a0823114610c3f57806370bfcf2114610c7557600080fd5b806366a88d9614610bc757806366d602ae14610bdd57806369550efd14610bf357600080fd5b80635d38ab8514610b0b578063602bc62b14610b2b5780636053a0e314610b405780636199d05e14610b5a57806361a13b4a14610b7a57806363e8f37014610ba757600080fd5b806349bd5a5e1161046057806350286f641161043a57806350286f6414610a595780635342acb414610a79578063545fb32814610ab25780635ca52d6714610aeb57600080fd5b806349bd5a5e146109f85780634a74bb0214610a185780634d87c64414610a3957600080fd5b80634198d1bb14610952578063424ba8481461097257806343614d2814610992578063437d9840146109a857806347535d7b146109be57806348914c99146109d857600080fd5b806322461173116105665780632610eaca1161051f578063313ce567116104f9578063313ce567146108e557806339509351146109075780633ccfd60b1461092757806340615b8b1461093c57600080fd5b80632610eaca1461088557806329370cc6146108a55780632b9b4f78146108c557600080fd5b806322461173146107d557806322976e0d146107f557806322c98d341461080b578063232898b41461082557806323b635851461084557806323b872dd1461086557600080fd5b8063147745e5116105d3578063170dde6a116105ad578063170dde6a1461077457806318160ddd1461078a5780631f53ac021461079f57806321ba5081146107bf57600080fd5b8063147745e5146106f85780631609be1d1461071c5780631694505e1461073c57600080fd5b806301339c211461062657806303d29d281461063d5780630609511e1461065d57806306fdde031461067d578063095ea7b3146106a85780630b6bb6f5146106d857600080fd5b3661062157005b600080fd5b34801561063257600080fd5b5061063b6112f5565b005b34801561064957600080fd5b5061063b610658366004614207565b611345565b34801561066957600080fd5b5061063b610678366004614515565b61139a565b34801561068957600080fd5b506106926113c9565b60405161069f919061464a565b60405180910390f35b3480156106b457600080fd5b506106c86106c3366004614235565b61145b565b604051901515815260200161069f565b3480156106e457600080fd5b5061063b6106f33660046143a9565b611472565b34801561070457600080fd5b5061070e60205481565b60405190815260200161069f565b34801561072857600080fd5b5061063b61073736600461418d565b61150e565b34801561074857600080fd5b5060255461075c906001600160a01b031681565b6040516001600160a01b03909116815260200161069f565b34801561078057600080fd5b5061070e601b5481565b34801561079657600080fd5b5060275461070e565b3480156107ab57600080fd5b5061063b6107ba366004614153565b61163e565b3480156107cb57600080fd5b5061070e60315481565b3480156107e157600080fd5b5061063b6107f0366004614153565b61168a565b34801561080157600080fd5b5061070e60135481565b34801561081757600080fd5b506034546106c89060ff1681565b34801561083157600080fd5b5061063b610840366004614261565b6116d6565b34801561085157600080fd5b5061063b610860366004614515565b6117a3565b34801561087157600080fd5b506106c86108803660046141c6565b6117f7565b34801561089157600080fd5b5061063b6108a03660046142a3565b611860565b3480156108b157600080fd5b5061063b6108c03660046144db565b611964565b3480156108d157600080fd5b5061063b6108e03660046144db565b6119d6565b3480156108f157600080fd5b5060105460405160ff909116815260200161069f565b34801561091357600080fd5b506106c8610922366004614235565b611a13565b34801561093357600080fd5b5061063b611a49565b34801561094857600080fd5b5061070e601c5481565b34801561095e57600080fd5b5061063b61096d366004614515565b611a9f565b34801561097e57600080fd5b5061063b61098d366004614207565b611b34565b34801561099e57600080fd5b5061070e601a5481565b3480156109b457600080fd5b5061070e60335481565b3480156109ca57600080fd5b506003546106c89060ff1681565b3480156109e457600080fd5b5061063b6109f3366004614547565b611b89565b348015610a0457600080fd5b5060265461075c906001600160a01b031681565b348015610a2457600080fd5b506026546106c890600160a81b900460ff1681565b348015610a4557600080fd5b5061063b610a54366004614547565b611bc1565b348015610a6557600080fd5b5061063b610a74366004614207565b611bf9565b348015610a8557600080fd5b506106c8610a94366004614153565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610abe57600080fd5b506106c8610acd366004614153565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610af757600080fd5b5061063b610b063660046144db565b611c4e565b348015610b1757600080fd5b5061063b610b263660046144db565b611c92565b348015610b3757600080fd5b5060025461070e565b348015610b4c57600080fd5b50602e546106c89060ff1681565b348015610b6657600080fd5b5061063b610b75366004614515565b611ccf565b348015610b8657600080fd5b50610b9a610b95366004614153565b611cfe565b60405161069f91906146fc565b348015610bb357600080fd5b5061063b610bc2366004614261565b611e40565b348015610bd357600080fd5b5061070e602b5481565b348015610be957600080fd5b5061070e60285481565b348015610bff57600080fd5b5061070e60155481565b348015610c1557600080fd5b5061070e60125481565b348015610c2b57600080fd5b5061063b610c3a3660046144db565b611f01565b348015610c4b57600080fd5b5061070e610c5a366004614153565b6001600160a01b031660009081526006602052604090205490565b348015610c8157600080fd5b506034546106c890610100900460ff1681565b348015610ca057600080fd5b5061070e602c5481565b348015610cb657600080fd5b5061063b611f49565b348015610ccb57600080fd5b5061063b610cda366004614515565b611fab565b348015610ceb57600080fd5b5060215461075c906001600160a01b031681565b348015610d0b57600080fd5b5061063b610d1a366004614207565b611fda565b348015610d2b57600080fd5b506026546106c890600160c01b900460ff1681565b348015610d4c57600080fd5b50601f546106c89060ff1681565b348015610d6657600080fd5b5061070e601e5481565b348015610d7c57600080fd5b5061063b610d8b366004614515565b61202f565b348015610d9c57600080fd5b5060245461075c906001600160a01b031681565b348015610dbc57600080fd5b5061063b610dcb366004614261565b61205e565b348015610ddc57600080fd5b5061070e60295481565b348015610df257600080fd5b5061070e610e01366004614153565b612126565b348015610e1257600080fd5b5061063b610e21366004614515565b612286565b348015610e3257600080fd5b5061063b6122b5565b348015610e4757600080fd5b506106c8610e56366004614153565b6001600160a01b03166000908152600c602052604090205460ff1690565b348015610e8057600080fd5b506000546001600160a01b031661075c565b348015610e9e57600080fd5b5060225461075c906001600160a01b031681565b348015610ebe57600080fd5b5061070e60145481565b348015610ed457600080fd5b506106926122eb565b348015610ee957600080fd5b50601d546106c89060ff1681565b348015610f0357600080fd5b5061063b610f12366004614515565b6122fa565b348015610f2357600080fd5b506026546106c890600160b81b900460ff1681565b348015610f4457600080fd5b5061070e60325481565b348015610f5a57600080fd5b5061070e60165481565b348015610f7057600080fd5b5061063b610f7f366004614515565b612329565b348015610f9057600080fd5b506106c8610f9f366004614235565b612358565b348015610fb057600080fd5b5061063b6123a7565b348015610fc557600080fd5b506106c8610fd4366004614235565b6124ad565b348015610fe557600080fd5b5061070e60115481565b348015610ffb57600080fd5b5061063b61100a366004614261565b6124ba565b34801561101b57600080fd5b5061063b61102a366004614207565b61257b565b34801561103b57600080fd5b5061063b61104a366004614515565b6125d0565b34801561105b57600080fd5b506026546106c890600160b01b900460ff1681565b34801561107c57600080fd5b5061063b61108b366004614515565b6125ff565b34801561109c57600080fd5b5061063b6110ab3660046144db565b612632565b3480156110bc57600080fd5b5061063b6110cb3660046144db565b6126a9565b3480156110dc57600080fd5b5061070e60305481565b3480156110f257600080fd5b5061070e602a5481565b34801561110857600080fd5b5061070e602d5481565b34801561111e57600080fd5b5061063b61112d3660046144db565b6126f1565b34801561113e57600080fd5b5061063b61114d3660046144db565b61272e565b34801561115e57600080fd5b5061070e60235481565b34801561117457600080fd5b5061063b611183366004614515565b612776565b34801561119457600080fd5b5061070e6111a336600461418d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156111da57600080fd5b5061063b6111e9366004614515565b6127fb565b3480156111fa57600080fd5b5061063b61120936600461430f565b61282a565b34801561121a57600080fd5b5061063b611229366004614515565b6129b4565b34801561123a57600080fd5b5061063b611249366004614153565b6129e3565b34801561125a57600080fd5b5061063b611269366004614515565b612abb565b34801561127a57600080fd5b506106c8611289366004614153565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156112b357600080fd5b5061063b612aea565b3480156112c857600080fd5b506106c86112d7366004614153565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146113285760405162461bcd60e51b815260040161131f9061469f565b60405180910390fd5b42600d81905560195560636012556000602355611343612aea565b565b6000546001600160a01b0316331461136f5760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c45760405162461bcd60e51b815260040161131f9061469f565b603155565b6060600e80546113d89061489f565b80601f01602080910402602001604051908101604052809291908181526020018280546114049061489f565b80156114515780601f1061142657610100808354040283529160200191611451565b820191906000526020600020905b81548152906001019060200180831161143457829003601f168201915b5050505050905090565b6000611468338484612b23565b5060015b92915050565b6000546001600160a01b0316331461149c5760405162461bcd60e51b815260040161131f9061469f565b60005b81518160ff16101561150a57600160046000848460ff16815181106114c6576114c661492b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611502816148f5565b91505061149f565b5050565b6000546001600160a01b031633146115385760405162461bcd60e51b815260040161131f9061469f565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561157a57600080fd5b505afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b2919061452e565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163891906144f8565b50505050565b6000546001600160a01b031633146116685760405162461bcd60e51b815260040161131f9061469f565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116b45760405162461bcd60e51b815260040161131f9061469f565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117005760405162461bcd60e51b815260040161131f9061469f565b6103e88111156117225760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576001602f60008585858181106117455761174561492b565b905060200201602081019061175a9190614153565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611796816148da565b915050611725565b505050565b6000546001600160a01b031633146117cd5760405162461bcd60e51b815260040161131f9061469f565b6117f46117e26000546001600160a01b031690565b6024546001600160a01b031683612c47565b50565b6000611804848484612c47565b61185684336118518560405180606001604052806028815260200161497b602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906134b8565b612b23565b5060019392505050565b6000546001600160a01b0316331461188a5760405162461bcd60e51b815260040161131f9061469f565b8281146118d55760405162461bcd60e51b8152602060048201526019602482015278082e4e4c2f240d8cadccee8d0e640c8dedc4ee840dac2e8c6d603b1b604482015260640161131f565b6103e88311156118f75760405162461bcd60e51b815260040161131f906146d4565b60005b8381101561195d5761194b338686848181106119185761191861492b565b905060200201602081019061192d9190614153565b85858581811061193f5761193f61492b565b90506020020135612c47565b80611955816148da565b9150506118fa565b5050505050565b6000546001600160a01b0316331461198e5760405162461bcd60e51b815260040161131f9061469f565b602e805460ff19168215159081179091556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0906020015b60405180910390a150565b6000546001600160a01b03163314611a005760405162461bcd60e51b815260040161131f9061469f565b6034805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161146891859061185190866134f2565b6000546001600160a01b03163314611a735760405162461bcd60e51b815260040161131f9061469f565b60405133904780156108fc02916000818181858888f193505050501580156117f4573d6000803e3d6000fd5b6000546001600160a01b03163314611ac95760405162461bcd60e51b815260040161131f9061469f565b601254811115611b2f5760405162461bcd60e51b815260206004820152602b60248201527f56616c756520686967686572207468616e206c6971756964697479206665652060448201526a1b9bdd08185b1b1bddd95960aa1b606482015260840161131f565b602355565b6000546001600160a01b03163314611b5e5760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611bb35760405162461bcd60e51b815260040161131f9061469f565b601192909255601255601355565b6000546001600160a01b03163314611beb5760405162461bcd60e51b815260040161131f9061469f565b601a92909255601b55601c55565b6000546001600160a01b03163314611c235760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611c785760405162461bcd60e51b815260040161131f9061469f565b603480549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611cbc5760405162461bcd60e51b815260040161131f9061469f565b601d805460ff1916911515919091179055565b6000546001600160a01b03163314611cf95760405162461bcd60e51b815260040161131f9061469f565b603255565b611d3b6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152602f60209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611da557602002820191906000526020600020905b815481526020019060010190808311611d91575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611dfd57602002820191906000526020600020905b815481526020019060010190808311611de9575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611e6a5760405162461bcd60e51b815260040161131f9061469f565b6103e8811115611e8c5760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576001602f6000858585818110611eaf57611eaf61492b565b9050602002016020810190611ec49190614153565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611ef9816148da565b915050611e8f565b6000546001600160a01b03163314611f2b5760405162461bcd60e51b815260040161131f9061469f565b60268054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611f735760405162461bcd60e51b815260040161131f9061469f565b600080546040516001600160a01b03909116906000805160206149a3833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611fd55760405162461bcd60e51b815260040161131f9061469f565b602b55565b6000546001600160a01b031633146120045760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146120595760405162461bcd60e51b815260040161131f9061469f565b602c55565b6000546001600160a01b031633146120885760405162461bcd60e51b815260040161131f9061469f565b6103e88111156120aa5760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576000602f60008585858181106120cd576120cd61492b565b90506020020160208101906120e29190614153565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff00199092169190911790558061211e816148da565b9150506120ad565b6001600160a01b0381166000908152602f60205260408120548061214a5750919050565b6001600160a01b0383166000908152602f602052604081206004015460ff1661217557603354612179565b6031545b6001600160a01b0385166000908152602f602052604081206002015491925090156121bf576001600160a01b0385166000908152602f60205260409020600201546121c1565b815b90505b826121ce5761227e565b826121d881614888565b6001600160a01b0387166000908152602f602052604081206001018054929650909250908590811061220c5761220c61492b565b906000526020600020015490508082426122269190614871565b11612272576001600160a01b0386166000908152602f602052604090208054859081106122555761225561492b565b90600052602060002001548561226b9190614818565b9450612278565b5061227e565b506121c4565b505050919050565b6000546001600160a01b031633146122b05760405162461bcd60e51b815260040161131f9061469f565b601e55565b6000546001600160a01b031633146122df5760405162461bcd60e51b815260040161131f9061469f565b6003805460ff19169055565b6060600f80546113d89061489f565b6000546001600160a01b031633146123245760405162461bcd60e51b815260040161131f9061469f565b603055565b6000546001600160a01b031633146123535760405162461bcd60e51b815260040161131f9061469f565b602d55565b60006114683384611851856040518060600160405280602581526020016149c3602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906134b8565b6001546001600160a01b0316331461240d5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161131f565b600254421061245e5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161131f565b600154600080546040516001600160a01b0393841693909116916000805160206149a383398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000611468338484612c47565b6000546001600160a01b031633146124e45760405162461bcd60e51b815260040161131f9061469f565b6103e88111156125065760405162461bcd60e51b815260040161131f906146d4565b60005b8181101561179e576000602f60008585858181106125295761252961492b565b905060200201602081019061253e9190614153565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580612573816148da565b915050612509565b6000546001600160a01b031633146125a55760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146125fa5760405162461bcd60e51b815260040161131f9061469f565b603355565b6000546001600160a01b031633146126295760405162461bcd60e51b815260040161131f9061469f565b6117f481613558565b6000546001600160a01b0316331461265c5760405162461bcd60e51b815260040161131f9061469f565b60268054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906119cb90831515815260200190565b6000546001600160a01b031633146126d35760405162461bcd60e51b815260040161131f9061469f565b60268054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461271b5760405162461bcd60e51b815260040161131f9061469f565b601f805460ff1916911515919091179055565b6000546001600160a01b031633146127585760405162461bcd60e51b815260040161131f9061469f565b60268054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146127a05760405162461bcd60e51b815260040161131f9061469f565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556127cf8142614818565b600255600080546040516001600160a01b03909116906000805160206149a3833981519152908390a350565b6000546001600160a01b031633146128255760405162461bcd60e51b815260040161131f9061469f565b602855565b6000546001600160a01b031633146128545760405162461bcd60e51b815260040161131f9061469f565b848314801561286257508281145b6128aa5760405162461bcd60e51b8152602060048201526019602482015278082e4e4c2f240d8cadccee8d0e640c8dedc4ee840dac2e8c6d603b1b604482015260640161131f565b6103e88511156128cc5760405162461bcd60e51b815260040161131f906146d4565b60005b858110156129ab578484828181106128e9576128e961492b565b90506020020135602f60008989858181106129065761290661492b565b905060200201602081019061291b9190614153565b6001600160a01b0316815260208101919091526040016000206002015582828281811061294a5761294a61492b565b90506020020135602f60008989858181106129675761296761492b565b905060200201602081019061297c9190614153565b6001600160a01b03168152602081019190915260400160002060030155806129a3816148da565b9150506128cf565b50505050505050565b6000546001600160a01b031633146129de5760405162461bcd60e51b815260040161131f9061469f565b602a55565b6000546001600160a01b03163314612a0d5760405162461bcd60e51b815260040161131f9061469f565b6001600160a01b038116612a725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161131f565b600080546040516001600160a01b03808516939216916000805160206149a383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612ae55760405162461bcd60e51b815260040161131f9061469f565b602955565b6000546001600160a01b03163314612b145760405162461bcd60e51b815260040161131f9061469f565b6003805460ff19166001179055565b6001600160a01b038316612b855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161131f565b6001600160a01b038216612be65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161131f565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612c7457506001600160a01b03821660009081526004602052604090205460ff165b80612c9757506001600160a01b03811660009081526004602052604090205460ff165b612cce5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161131f565b6001600160a01b038516612d325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161131f565b6001600160a01b038416612d945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161131f565b60008311612df65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161131f565b6001600160a01b038516600090815260066020526040902054831115612e5e5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161131f565b6001600160a01b03851660009081526008602052604090205460ff1680612e9d57506001600160a01b03841660009081526008602052604090205460ff165b15612eea5760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161131f565b601f5460ff1680612f0a5750612f08856001600160a01b031661358a565b155b80612f2d57506001600160a01b03851660009081526009602052604090205460ff165b612f705760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161131f565b30600090815260066020526040902054602a5481108015908190612f9e5750602654600160a01b900460ff16155b8015612fc357506001600160a01b0387166000908152600c602052604090205460ff16155b8015612fd85750602654600160a81b900460ff165b15612ff357612fe56135c6565b602a549150612ff38261360c565b612ffb6137c3565b6001600160a01b03871660009081526007602052604081205460ff168061303a57506001600160a01b03871660009081526007602052604090205460ff165b8061304e5750602654600160a01b900460ff165b1561305b57506000613286565b6001600160a01b0387166000908152600c602052604090205460ff161561311857602854861115806130975750602654600160b01b900460ff16155b6130ee5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161131f565b613111601a5461310b601c54601b546134f290919063ffffffff16565b906134f2565b9050613286565b6001600160a01b0388166000908152600c602052604090205460ff16156131f557600d54421415613167576001600160a01b0387166000908152600860205260409020805460ff191660011790555b602954861115806131825750602654600160b81b900460ff16155b6131d85760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161131f565b61311160115461310b6013546012546134f290919063ffffffff16565b6001600160a01b0388166000908152602f602052604090206004015460ff161580156132225750600d5442115b61326e5760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161131f565b601d5460ff1661327f576000613283565b601e545b90505b60006132928783613878565b905060006132a08883613896565b6001600160a01b038b166000908152600660205260409020549091506132c69089613896565b6001600160a01b038b166000908152600660205260408082209290925530815220546132f290826134f2565b30600090815260066020526040808220929092556001600160a01b038b168152205461331e90836134f2565b6001600160a01b038a166000908152600660205260409020819055602b5410158061336157506001600160a01b0389166000908152600a602052604090205460ff165b806133765750602654600160c01b900460ff16155b6133d65760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161131f565b602654600160a01b900460ff1615801561340957506001600160a01b038a166000908152600c602052604090205460ff16155b15613418576134188a836138d8565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161345d91815260200190565b60405180910390a380156134ac5760405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050505050565b600081848411156134dc5760405162461bcd60e51b815260040161131f919061464a565b5060006134e98486614871565b95945050505050565b6000806134ff8385614818565b9050838110156135515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161131f565b9392505050565b6026805460ff60a01b1916600160a01b179055801561357a5761357a81613aae565b506026805460ff60a01b19169055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906135be57508115155b949350505050565b6026805460ff60a01b1916600160a01b179055602e54479060ff1680156135ef5750602d548110155b1561357a57602c548111156136035750602c545b61357a81613558565b6026805460ff60a01b1916600160a01b17905560115460135460125460009261363a92909161310b916134f2565b905080156137b2576000613672600261366c60235460125461365c9190614871565b6136668787613c4d565b90613c8f565b90613c4d565b905060006136808483613896565b90504761368c82613d0e565b60006136984783613896565b905060006136be600261366c6023546012546136b49190614871565b613666868b613c4d565b90508015613712576136d08582613e6f565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6021546013546001600160a01b03909116906108fc9061373690613666868b613c4d565b6040518115909202916000818181858888f1935050505015801561375e573d6000803e3d6000fd5b506022546011546001600160a01b03909116906108fc9061378390613666868b613c4d565b6040518115909202916000818181858888f193505050501580156137ab573d6000803e3d6000fd5b5050505050505b50506026805460ff60a01b19169055565b60175460ff1680156137d65750600d5415155b15611343576000601954426137eb9190614871565b90506000601854826137fd9190614830565b905060005b818110156138445760036012541161381957613844565b60036012600082825461382c9190614871565b9091555081905061383c816148da565b915050613802565b5042601955601254600c1061150a576017805460ff1916905560145460125560165460135560155460115560026023555050565b6020546000906135519061366c61388f8286613896565b8690613c8f565b600061355183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134b8565b6001600160a01b0382166000908152602f6020526040902060040154610100900460ff1680613931575060345460ff1615801561393157506001600160a01b0382166000908152602f602052604090206004015460ff16155b8061396a5750603454610100900460ff1615801561396a57506001600160a01b0382166000908152602f602052604090206004015460ff165b15613973575050565b600061397e82613f4c565b6001600160a01b0384166000908152602f6020908152604082206001808201805480830182559085528385204291015581549081018255908352908220018290559091506139cb84612126565b6001600160a01b0385166000908152602f60205260408120600401549192509060ff166139fa576032546139fe565b6030545b6001600160a01b0386166000908152602f60205260408120600301549192509015613a44576001600160a01b0386166000908152602f6020526040902060030154613a46565b815b905080831115613aa65760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161131f565b505050505050565b6040805160028082526060820183526000926020830190803683375050602554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613b1357600080fd5b505afa158015613b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b4b9190614170565b81600081518110613b5e57613b5e61492b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613b9257613b9261492b565b6001600160a01b03928316602091820292909201015260255460245460405163b6f9de9560e01b81529183169263b6f9de95928692613bde926000928892909116904290600401614615565b6000604051808303818588803b158015613bf757600080fd5b505af1158015613c0b573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051613c4192919061476e565b60405180910390a15050565b600061355183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140d9565b600082613c9e5750600061146c565b6000613caa8385614852565b905082613cb78583614830565b146135515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161131f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613d4357613d4361492b565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613d9757600080fd5b505afa158015613dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dcf9190614170565b81600181518110613de257613de261492b565b6001600160a01b039283166020918202929092010152602554613e089130911684612b23565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790613e41908590600090869030904290600401614787565b600060405180830381600087803b158015613e5b57600080fd5b505af1158015613aa6573d6000803e3d6000fd5b602554613e879030906001600160a01b031684612b23565b6025546001600160a01b031663f305d719823085600080613eb06000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613f1357600080fd5b505af1158015613f27573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061195d9190614573565b604080516002808252606082018352600092839291906020830190803683370190505090503081600081518110613f8557613f8561492b565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613fd957600080fd5b505afa158015613fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140119190614170565b816001815181106140245761402461492b565b6001600160a01b03928316602091820292909201015260255460405163d06ca61f60e01b815291169063d06ca61f90614063908690859060040161476e565b60006040518083038186803b15801561407b57600080fd5b505afa15801561408f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140b7919081019061444f565b6001815181106140c9576140c961492b565b6020026020010151915050919050565b600081836140fa5760405162461bcd60e51b815260040161131f919061464a565b5060006134e98486614830565b60008083601f84011261411957600080fd5b50813567ffffffffffffffff81111561413157600080fd5b6020830191508360208260051b850101111561414c57600080fd5b9250929050565b60006020828403121561416557600080fd5b813561355181614957565b60006020828403121561418257600080fd5b815161355181614957565b600080604083850312156141a057600080fd5b82356141ab81614957565b915060208301356141bb81614957565b809150509250929050565b6000806000606084860312156141db57600080fd5b83356141e681614957565b925060208401356141f681614957565b929592945050506040919091013590565b6000806040838503121561421a57600080fd5b823561422581614957565b915060208301356141bb8161496c565b6000806040838503121561424857600080fd5b823561425381614957565b946020939093013593505050565b6000806020838503121561427457600080fd5b823567ffffffffffffffff81111561428b57600080fd5b61429785828601614107565b90969095509350505050565b600080600080604085870312156142b957600080fd5b843567ffffffffffffffff808211156142d157600080fd5b6142dd88838901614107565b909650945060208701359150808211156142f657600080fd5b5061430387828801614107565b95989497509550505050565b6000806000806000806060878903121561432857600080fd5b863567ffffffffffffffff8082111561434057600080fd5b61434c8a838b01614107565b9098509650602089013591508082111561436557600080fd5b6143718a838b01614107565b9096509450604089013591508082111561438a57600080fd5b5061439789828a01614107565b979a9699509497509295939492505050565b600060208083850312156143bc57600080fd5b823567ffffffffffffffff8111156143d357600080fd5b8301601f810185136143e457600080fd5b80356143f76143f2826147f4565b6147c3565b80828252848201915084840188868560051b870101111561441757600080fd5b600094505b8385101561444357803561442f81614957565b83526001949094019391850191850161441c565b50979650505050505050565b6000602080838503121561446257600080fd5b825167ffffffffffffffff81111561447957600080fd5b8301601f8101851361448a57600080fd5b80516144986143f2826147f4565b80828252848201915084840188868560051b87010111156144b857600080fd5b600094505b838510156144435780518352600194909401939185019185016144bd565b6000602082840312156144ed57600080fd5b81356135518161496c565b60006020828403121561450a57600080fd5b81516135518161496c565b60006020828403121561452757600080fd5b5035919050565b60006020828403121561454057600080fd5b5051919050565b60008060006060848603121561455c57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561458857600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156145da5781516001600160a01b0316875295820195908201906001016145b5565b509495945050505050565b600081518084526020808501945080840160005b838110156145da578151875295820195908201906001016145f9565b84815260806020820152600061462e60808301866145a1565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156146775785810183015185820160400152820161465b565b81811115614689576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d417272617920746f6f206c6f6e6760901b604082015260600190565b602081526000825160c0602084015261471860e08401826145e5565b90506020840151601f1984830301604085015261473582826145e5565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b8281526040602082015260006135be60408301846145a1565b85815284602082015260a0604082015260006147a660a08301866145a1565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156147ec576147ec614941565b604052919050565b600067ffffffffffffffff82111561480e5761480e614941565b5060051b60200190565b6000821982111561482b5761482b614915565b500190565b60008261484d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561486c5761486c614915565b500290565b60008282101561488357614883614915565b500390565b60008161489757614897614915565b506000190190565b600181811c908216806148b357607f821691505b602082108114156148d457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148ee576148ee614915565b5060010190565b600060ff821660ff81141561490c5761490c614915565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146117f457600080fd5b80151581146117f457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f3609106977e3b6310397299ecb53a7c46c8002105248ae9e93ef540d3452b0064736f6c63430008070033

Deployed Bytecode Sourcemap

9786:24347:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14979:207;;;;;;;;;;;;;:::i;:::-;;26675:125;;;;;;;;;;-1:-1:-1;26675:125:0;;;;;:::i;:::-;;:::i;29012:136::-;;;;;;;;;;-1:-1:-1;29012:136:0;;;;;:::i;:::-;;:::i;15194:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16032:161;;;;;;;;;;-1:-1:-1;16032:161:0;;;;;:::i;:::-;;:::i;:::-;;;10543:14:1;;10536:22;10518:41;;10506:2;10491:18;16032:161:0;10378:187:1;9593:186:0;;;;;;;;;;-1:-1:-1;9593:186:0;;;;;:::i;:::-;;:::i;11147:32::-;;;;;;;;;;;;;;;;;;;21751:25:1;;;21739:2;21724:18;11147:32:0;21605:177:1;33817:198:0;;;;;;;;;;-1:-1:-1;33817:198:0;;;;;:::i;:::-;;:::i;11511:41::-;;;;;;;;;;-1:-1:-1;11511:41:0;;;;-1:-1:-1;;;;;11511:41:0;;;;;;-1:-1:-1;;;;;9219:32:1;;;9201:51;;9189:2;9174:18;11511:41:0;9055:203:1;10933:36:0;;;;;;;;;;;;;;;;15471:100;;;;;;;;;;-1:-1:-1;15551:12:0;;15471:100;;24368:109;;;;;;;;;;-1:-1:-1;24368:109:0;;;;;:::i;:::-;;:::i;28242:43::-;;;;;;;;;;;;;;;;24239:121;;;;;;;;;;-1:-1:-1;24239:121:0;;;;;:::i;:::-;;:::i;10624:28::-;;;;;;;;;;;;;;;;28453:37;;;;;;;;;;-1:-1:-1;28453:37:0;;;;;;;;30998:266;;;;;;;;;;-1:-1:-1;30998:266:0;;;;;:::i;:::-;;:::i;23685:118::-;;;;;;;;;;-1:-1:-1;23685:118:0;;;;;:::i;:::-;;:::i;16201:313::-;;;;;;;;;;-1:-1:-1;16201:313:0;;;;;:::i;:::-;;:::i;33388:379::-;;;;;;;;;;-1:-1:-1;33388:379:0;;;;;:::i;:::-;;:::i;26387:150::-;;;;;;;;;;-1:-1:-1;26387:150:0;;;;;:::i;:::-;;:::i;29530:113::-;;;;;;;;;;-1:-1:-1;29530:113:0;;;;;:::i;:::-;;:::i;15380:83::-;;;;;;;;;;-1:-1:-1;15446:9:0;;15380:83;;15446:9;;;;23177:36:1;;23165:2;23150:18;15380:83:0;23035:184:1;16522:218:0;;;;;;;;;;-1:-1:-1;16522:218:0;;;;;:::i;:::-;;:::i;34023:107::-;;;;;;;;;;;;;:::i;10976:36::-;;;;;;;;;;;;;;;;24595:194;;;;;;;;;;-1:-1:-1;24595:194:0;;;;;:::i;:::-;;:::i;17543:113::-;;;;;;;;;;-1:-1:-1;17543:113:0;;;;;:::i;:::-;;:::i;10896:30::-;;;;;;;;;;;;;;;;28391:32;;;;;;;;;;;;;;;;9094:26;;;;;;;;;;-1:-1:-1;9094:26:0;;;;;;;;14520:215;;;;;;;;;;-1:-1:-1;14520:215:0;;;;;:::i;:::-;;:::i;11559:28::-;;;;;;;;;;-1:-1:-1;11559:28:0;;;;-1:-1:-1;;;;;11559:28:0;;;11628:40;;;;;;;;;;-1:-1:-1;11628:40:0;;;;-1:-1:-1;;;11628:40:0;;;;;;14743:228;;;;;;;;;;-1:-1:-1;14743:228:0;;;;;:::i;:::-;;:::i;27616:146::-;;;;;;;;;;-1:-1:-1;27616:146:0;;;;;:::i;:::-;;:::i;17066:124::-;;;;;;;;;;-1:-1:-1;17066:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;17155:27:0;17131:4;17155:27;;;:18;:27;;;;;;;;;17066:124;27367:133;;;;;;;;;;-1:-1:-1;27367:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;27461:31:0;27437:4;27461:31;;;:21;:31;;;;;;;;;27367:133;29387:135;;;;;;;;;;-1:-1:-1;29387:135:0;;;;;:::i;:::-;;:::i;22720:105::-;;;;;;;;;;-1:-1:-1;22720:105:0;;;;;:::i;:::-;;:::i;6964:90::-;;;;;;;;;;-1:-1:-1;7037:9:0;;6964:90;;12291:34;;;;;;;;;;-1:-1:-1;12291:34:0;;;;;;;;29156:100;;;;;;;;;;-1:-1:-1;29156:100:0;;;;;:::i;:::-;;:::i;29651:122::-;;;;;;;;;;-1:-1:-1;29651:122:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;30448:265::-;;;;;;;;;;-1:-1:-1;30448:265:0;;;;;:::i;:::-;;:::i;12110:64::-;;;;;;;;;;;;;;;;11886:63;;;;;;;;;;;;;;;;10706:32;;;;;;;;;;;;;;;;10589:28;;;;;;;;;;;;;;;;23167:110;;;;;;;;;;-1:-1:-1;23167:110:0;;;;;:::i;:::-;;:::i;15579:119::-;;;;;;;;;;-1:-1:-1;15579:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15672:18:0;15645:7;15672:18;;;:9;:18;;;;;;;15579:119;28497:48;;;;;;;;;;-1:-1:-1;28497:48:0;;;;;;;;;;;12183:47;;;;;;;;;;;;;;;;6554:148;;;;;;;;;;;;;:::i;27508:100::-;;;;;;;;;;-1:-1:-1;27508:100:0;;;;;:::i;:::-;;:::i;11188:38::-;;;;;;;;;;-1:-1:-1;11188:38:0;;;;-1:-1:-1;;;;;11188:38:0;;;27206:134;;;;;;;;;;-1:-1:-1;27206:134:0;;;;;:::i;:::-;;:::i;11766:39::-;;;;;;;;;;-1:-1:-1;11766:39:0;;;;-1:-1:-1;;;11766:39:0;;;;;;11104:36;;;;;;;;;;-1:-1:-1;11104:36:0;;;;;;;;11065:30;;;;;;;;;;;;;;;;26255:124;;;;;;;;;;-1:-1:-1;26255:124:0;;;;;:::i;:::-;;:::i;11428:70::-;;;;;;;;;;-1:-1:-1;11428:70:0;;;;-1:-1:-1;;;;;11428:70:0;;;31272:270;;;;;;;;;;-1:-1:-1;31272:270:0;;;;;:::i;:::-;;:::i;11956:62::-;;;;;;;;;;;;;;;;31621:922;;;;;;;;;;-1:-1:-1;31621:922:0;;;;;:::i;:::-;;:::i;22833:95::-;;;;;;;;;;-1:-1:-1;22833:95:0;;;;;:::i;:::-;;:::i;9512:73::-;;;;;;;;;;;;;:::i;17664:105::-;;;;;;;;;;-1:-1:-1;17664:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;17745:15:0;17721:4;17745:15;;;:5;:15;;;;;;;;;17664:105;6338:79;;;;;;;;;;-1:-1:-1;6376:7:0;6403:6;-1:-1:-1;;;;;6403:6:0;6338:79;;11233:32;;;;;;;;;;-1:-1:-1;11233:32:0;;;;-1:-1:-1;;;;;11233:32:0;;;10661:38;;;;;;;;;;;;;;;;15285:87;;;;;;;;;;;;;:::i;11021:37::-;;;;;;;;;;-1:-1:-1;11021:37:0;;;;;;;;28881:122;;;;;;;;;;-1:-1:-1;28881:122:0;;;;;:::i;:::-;;:::i;11722:37::-;;;;;;;;;;-1:-1:-1;11722:37:0;;;;-1:-1:-1;;;11722:37:0;;;;;;28326:26;;;;;;;;;;;;;;;;10745:38;;;;;;;;;;;;;;;;25224:106;;;;;;;;;;-1:-1:-1;25224:106:0;;;;;:::i;:::-;;:::i;16748:269::-;;;;;;;;;;-1:-1:-1;16748:269:0;;;;;:::i;:::-;;:::i;7304:305::-;;;;;;;;;;;;;:::i;15706:167::-;;;;;;;;;;-1:-1:-1;15706:167:0;;;;;:::i;:::-;;:::i;10560:22::-;;;;;;;;;;;;;;;;30721:269;;;;;;;;;;-1:-1:-1;30721:269:0;;;;;:::i;:::-;;:::i;24094:133::-;;;;;;;;;;-1:-1:-1;24094:133:0;;;;;:::i;:::-;;:::i;29265:114::-;;;;;;;;;;-1:-1:-1;29265:114:0;;;;;:::i;:::-;;:::i;11677:38::-;;;;;;;;;;-1:-1:-1;11677:38:0;;;;-1:-1:-1;;;11677:38:0;;;;;;26549:100;;;;;;;;;;-1:-1:-1;26549:100:0;;;;;:::i;:::-;;:::i;24905:171::-;;;;;;;;;;-1:-1:-1;24905:171:0;;;;;:::i;:::-;;:::i;23051:108::-;;;;;;;;;;-1:-1:-1;23051:108:0;;;;;:::i;:::-;;:::i;28155:37::-;;;;;;;;;;;;;;;;12025:78;;;;;;;;;;;;;;;;12237:47;;;;;;;;;;;;;;;;26959:109;;;;;;;;;;-1:-1:-1;26959:109:0;;;;;:::i;:::-;;:::i;22936:106::-;;;;;;;;;;-1:-1:-1;22936:106:0;;;;;:::i;:::-;;:::i;11278:33::-;;;;;;;;;;;;;;;;7064:226;;;;;;;;;;-1:-1:-1;7064:226:0;;;;;:::i;:::-;;:::i;15881:143::-;;;;;;;;;;-1:-1:-1;15881:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15989:18:0;;;15962:7;15989:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15881:143;24485:102;;;;;;;;;;-1:-1:-1;24485:102:0;;;;;:::i;:::-;;:::i;29918:522::-;;;;;;;;;;-1:-1:-1;29918:522:0;;;;;:::i;:::-;;:::i;25084:132::-;;;;;;;;;;-1:-1:-1;25084:132:0;;;;;:::i;:::-;;:::i;6712:244::-;;;;;;;;;;-1:-1:-1;6712:244:0;;;;;:::i;:::-;;:::i;24797:100::-;;;;;;;;;;-1:-1:-1;24797:100:0;;;;;:::i;:::-;;:::i;27076:122::-;;;;;;;;;;-1:-1:-1;27076:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;27165:25:0;27141:4;27165:25;;;:15;:25;;;;;;;;;27076:122;9434:70;;;;;;;;;;;;;:::i;26808:116::-;;;;;;;;;;-1:-1:-1;26808:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;26894:22:0;26870:4;26894:22;;;:12;:22;;;;;;;;;26808:116;14979:207;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;;;;;;;;;15040:15:::1;15027:10;:28:::0;;;15066:14:::1;:32:::0;15125:2:::1;15109:13;:18:::0;-1:-1:-1;15138:14:0::1;:18:::0;15167:11:::1;:9;:11::i;:::-;14979:207::o:0;26675:125::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26761:22:0;;;::::1;;::::0;;;:12:::1;:22;::::0;;;;:31;;-1:-1:-1;;26761:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26675:125::o;29012:136::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;29100:28:::1;:40:::0;29012:136::o;15194:83::-;15231:13;15264:5;15257:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15194:83;:::o;16032:161::-;16107:4;16124:39;3332:10;16147:7;16156:6;16124:8;:39::i;:::-;-1:-1:-1;16181:4:0;16032:161;;;;;:::o;9593:186::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;9680:7:::1;9676:96;9697:6;:13;9693:1;:17;;;9676:96;;;9756:4;9732:10;:21;9743:6;9750:1;9743:9;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;9732:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;9732:21:0;:28;;-1:-1:-1;;9732:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9712:3;::::1;::::0;::::1;:::i;:::-;;;;9676:96;;;;9593:186:::0;:::o;33817:198::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;33917:38:::1;::::0;-1:-1:-1;;;33917:38:0;;33949:4:::1;33917:38;::::0;::::1;9201:51:1::0;33900:14:0::1;::::0;-1:-1:-1;;;;;33917:23:0;::::1;::::0;::::1;::::0;9174:18:1;;33917:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33966:41;::::0;-1:-1:-1;;;33966:41:0;;-1:-1:-1;;;;;9679:32:1;;;33966:41:0::1;::::0;::::1;9661:51:1::0;9728:18;;;9721:34;;;33900:55:0;;-1:-1:-1;33966:22:0;;::::1;::::0;::::1;::::0;9634:18:1;;33966:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33889:126;33817:198:::0;;:::o;24368:109::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;24439:9:::1;:30:::0;;-1:-1:-1;;;;;;24439:30:0::1;-1:-1:-1::0;;;;;24439:30:0;;;::::1;::::0;;;::::1;::::0;;24368:109::o;24239:121::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;24316:15:::1;:36:::0;;-1:-1:-1;;;;;;24316:36:0::1;-1:-1:-1::0;;;;;24316:36:0;;;::::1;::::0;;;::::1;::::0;;24239:121::o;30998:266::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;31114:4:::1;31094:24:::0;::::1;;31086:51;;;;-1:-1:-1::0;;;31086:51:0::1;;;;;;;:::i;:::-;31152:9;31148:109;31165:20:::0;;::::1;31148:109;;;31241:4;31206:7;:21;31214:9;;31224:1;31214:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31206:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;31206:21:0;:32:::1;;:39:::0;;;::::1;;;;-1:-1:-1::0;;31206:39:0;;::::1;::::0;;;::::1;::::0;;31187:3;::::1;::::0;::::1;:::i;:::-;;;;31148:109;;;;30998:266:::0;;:::o;23685:118::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;23753:42:::1;23763:7;6376::::0;6403:6;-1:-1:-1;;;;;6403:6:0;;6338:79;23763:7:::1;23772:10;::::0;-1:-1:-1;;;;;23772:10:0::1;23784::::0;23753:9:::1;:42::i;:::-;23685:118:::0;:::o;16201:313::-;16299:4;16316:36;16326:6;16334:9;16345:6;16316:9;:36::i;:::-;16363:121;16372:6;3332:10;16394:89;16432:6;16394:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16394:19:0;;;;;;:11;:19;;;;;;;;3332:10;16394:33;;;;;;;;;;:37;:89::i;:::-;16363:8;:121::i;:::-;-1:-1:-1;16502:4:0;16201:313;;;;;:::o;33388:379::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;33506:34;;::::1;33498:72;;;::::0;-1:-1:-1;;;33498:72:0;;18251:2:1;33498:72:0::1;::::0;::::1;18233:21:1::0;18290:2;18270:18;;;18263:30;-1:-1:-1;;;18309:18:1;;;18302:55;18374:18;;33498:72:0::1;18049:349:1::0;33498:72:0::1;33609:4;33589:24:::0;::::1;;33581:51;;;;-1:-1:-1::0;;;33581:51:0::1;;;;;;;:::i;:::-;33647:9;33643:117;33660:20:::0;;::::1;33643:117;;;33701:47;33711:10;33723:9;;33733:1;33723:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;33737:7;;33745:1;33737:10;;;;;;;:::i;:::-;;;;;;;33701:9;:47::i;:::-;33682:3:::0;::::1;::::0;::::1;:::i;:::-;;;;33643:117;;;;33388:379:::0;;;;:::o;26387:150::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;26457:14:::1;:25:::0;;-1:-1:-1;;26457:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;26498:31:::1;::::0;10518:41:1;;;26498:31:0::1;::::0;10506:2:1;10491:18;26498:31:0::1;;;;;;;;26387:150:::0;:::o;29530:113::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;29608:18:::1;:27:::0;;-1:-1:-1;;29608:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29530:113::o;16522:218::-;3332:10;16610:4;16659:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16659:34:0;;;;;;;;;;16610:4;;16627:83;;16650:7;;16659:50;;16698:10;16659:38;:50::i;34023:107::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;34071:51:::1;::::0;34079:10:::1;::::0;34100:21:::1;34071:51:::0;::::1;;;::::0;::::1;::::0;;;34100:21;34079:10;34071:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;24595:194:::0;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;24686:13:::1;;24676:6;:23;;24668:79;;;::::0;-1:-1:-1;;;24668:79:0;;15200:2:1;24668:79:0::1;::::0;::::1;15182:21:1::0;15239:2;15219:18;;;15212:30;15278:34;15258:18;;;15251:62;-1:-1:-1;;;15329:18:1;;;15322:41;15380:19;;24668:79:0::1;14998:407:1::0;24668:79:0::1;24758:14;:23:::0;24595:194::o;17543:113::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17624:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:24;;-1:-1:-1;;17624:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17543:113::o;14520:215::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;14633:7:::1;:16:::0;;;;14660:13:::1;:28:::0;14699:13:::1;:28:::0;14520:215::o;14743:228::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;14857:11:::1;:20:::0;;;;14888:17:::1;:32:::0;14931:17:::1;:32:::0;14743:228::o;27616:146::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27714:31:0;;;::::1;;::::0;;;:21:::1;:31;::::0;;;;:40;;-1:-1:-1;;27714:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27616:146::o;29387:135::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;29476:29:::1;:38:::0;;;::::1;;;;-1:-1:-1::0;;29476:38:0;;::::1;::::0;;;::::1;::::0;;29387:135::o;22720:105::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;22790:18:::1;:27:::0;;-1:-1:-1;;22790:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22720:105::o;29156:100::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;29226:11:::1;:22:::0;29156:100::o;29651:122::-;29709:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29709:20:0;-1:-1:-1;;;;;29748:17:0;;;;;;:7;:17;;;;;;;;;29741:24;;;;;;;;;;;;;;;;;;;;;;;29748:17;;29741:24;;29748:17;;29741:24;;29748:17;29741:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29741:24:0;;;-1:-1:-1;;29741:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29651:122;-1:-1:-1;;29651:122:0:o;30448:265::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;30559:4:::1;30539:24:::0;::::1;;30531:51;;;;-1:-1:-1::0;;;30531:51:0::1;;;;;;;:::i;:::-;30597:9;30593:113;30610:20:::0;;::::1;30593:113;;;30690:4;30651:7;:21;30659:9;;30669:1;30659:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30651:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;30651:21:0;:36:::1;;:43:::0;;-1:-1:-1;;30651:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30632:3;::::1;::::0;::::1;:::i;:::-;;;;30593:113;;23167:110:::0;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;23240:20:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;23240:29:0::1;-1:-1:-1::0;;;;23240:29:0;;::::1;::::0;;;::::1;::::0;;23167:110::o;6554:148::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;6661:1:::1;6645:6:::0;;6624:40:::1;::::0;-1:-1:-1;;;;;6645:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6624:40:0;6661:1;;6624:40:::1;6692:1;6675:19:::0;;-1:-1:-1;;;;;;6675:19:0::1;::::0;;6554:148::o;27508:100::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;27578:14:::1;:22:::0;27508:100::o;27206:134::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27298:25:0;;;::::1;;::::0;;;:15:::1;:25;::::0;;;;:34;;-1:-1:-1;;27298:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27206:134::o;26255:124::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;26339:17:::1;:32:::0;26255:124::o;31272:270::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;31391:4:::1;31371:24:::0;::::1;;31363:51;;;;-1:-1:-1::0;;;31363:51:0::1;;;;;;;:::i;:::-;31429:9;31425:110;31442:20:::0;;::::1;31425:110;;;31518:5;31483:7;:21;31491:9;;31501:1;31491:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31483:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;31483:21:0;:32:::1;;:40:::0;;;::::1;;;;-1:-1:-1::0;;31483:40:0;;::::1;::::0;;;::::1;::::0;;31464:3;::::1;::::0;::::1;:::i;:::-;;;;31425:110;;31621:922:::0;-1:-1:-1;;;;;31742:17:0;;31687:18;31742:17;;;:7;:17;;;;;:36;31795:18;31791:68;;31830:17;31621:922;;;:::o;31791:68::-;-1:-1:-1;;;;;31898:17:0;;31869:26;31898:17;;;:7;:17;;;;;:32;;;;;:83;;31964:17;;31898:83;;;31933:28;;31898:83;-1:-1:-1;;;;;32014:17:0;;31992:19;32014:17;;;:7;:17;;;;;:29;;;31869:112;;-1:-1:-1;31992:19:0;32014:34;:87;;-1:-1:-1;;;;;32072:17:0;;;;;;:7;:17;;;;;:29;;;32014:87;;;32051:18;32014:87;31992:109;;32112:424;32144:18;32140:64;;32183:5;;32140:64;32218:15;;;;:::i;:::-;-1:-1:-1;;;;;32272:17:0;;32248:21;32272:17;;;:7;:17;;;;;:32;;:47;;32218:15;;-1:-1:-1;32248:21:0;;-1:-1:-1;32272:32:0;32218:15;;32272:47;;;;;;:::i;:::-;;;;;;;;;32248:71;;32371:13;32356:11;32338:15;:29;;;;:::i;:::-;:46;32334:191;;-1:-1:-1;;;;;32419:17:0;;;;;;:7;:17;;;;;:44;;32449:13;;32419:44;;;;;;:::i;:::-;;;;;;;;;32405:58;;;;;:::i;:::-;;;32334:191;;;32504:5;;;32334:191;32125:411;32112:424;;;31707:836;;;31621:922;;;:::o;22833:95::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;22900:11:::1;:20:::0;22833:95::o;9512:73::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;9563:6:::1;:14:::0;;-1:-1:-1;;9563:14:0::1;::::0;;9512:73::o;15285:87::-;15324:13;15357:7;15350:14;;;;;:::i;28881:122::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;28962:22:::1;:33:::0;28881:122::o;25224:106::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;25297:17:::1;:25:::0;25224:106::o;16748:269::-;16841:4;16858:129;3332:10;16881:7;16890:96;16929:15;16890:96;;;;;;;;;;;;;;;;;3332:10;16890:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16890:34:0;;;;;;;;;;;;:38;:96::i;7304:305::-;7356:14;;-1:-1:-1;;;;;7356:14:0;7374:10;7356:28;7348:76;;;;-1:-1:-1;;;7348:76:0;;20531:2:1;7348:76:0;;;20513:21:1;20570:2;20550:18;;;20543:30;20609:34;20589:18;;;20582:62;-1:-1:-1;;;20660:18:1;;;20653:33;20703:19;;7348:76:0;20329:399:1;7348:76:0;7461:9;;7443:15;:27;7435:72;;;;-1:-1:-1;;;7435:72:0;;19416:2:1;7435:72:0;;;19398:21:1;19455:2;19435:18;;;19428:30;19494:33;19474:18;;;19467:61;19545:18;;7435:72:0;19214:355:1;7435:72:0;7552:14;;;7544:6;;7523:44;;-1:-1:-1;;;;;7552:14:0;;;;7544:6;;;;-1:-1:-1;;;;;;;;;;;7523:44:0;;7587:14;;;7578:23;;-1:-1:-1;;;;;;7578:23:0;-1:-1:-1;;;;;7587:14:0;;;7578:23;;;;;;7304:305::o;15706:167::-;15784:4;15801:42;3332:10;15825:9;15836:6;15801:9;:42::i;30721:269::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;30835:4:::1;30815:24:::0;::::1;;30807:51;;;;-1:-1:-1::0;;;30807:51:0::1;;;;;;;:::i;:::-;30873:9;30869:114;30886:20:::0;;::::1;30869:114;;;30966:5;30927:7;:21;30935:9;;30945:1;30935:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30927:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;30927:21:0;:36:::1;;:44:::0;;-1:-1:-1;;30927:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30908:3;::::1;::::0;::::1;:::i;:::-;;;;30869:114;;24094:133:::0;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24181:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;24181:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24094:133::o;29265:114::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;29342:17:::1;:29:::0;29265:114::o;26549:100::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;26620:21:::1;26634:6;26620:13;:21::i;24905:171::-:0;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;24982:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;24982:32:0::1;-1:-1:-1::0;;;;24982:32:0;;::::1;;::::0;;25030:38:::1;::::0;::::1;::::0;::::1;::::0;25006:8;10543:14:1;10536:22;10518:41;;10506:2;10491:18;;10378:187;23051:108:0;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;23123:19:::1;:28:::0;;;::::1;;-1:-1:-1::0;;;23123:28:0::1;-1:-1:-1::0;;;;23123:28:0;;::::1;::::0;;;::::1;::::0;;23051:108::o;26959:109::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;27035:16:::1;:25:::0;;-1:-1:-1;;27035:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26959:109::o;22936:106::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;23007:18:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;23007:27:0::1;-1:-1:-1::0;;;;23007:27:0;;::::1;::::0;;;::::1;::::0;;22936:106::o;7064:226::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;7145:6:::1;::::0;;;7128:23;;-1:-1:-1;;;;;;7128:23:0;;::::1;-1:-1:-1::0;;;;;7145:6:0;::::1;7128:23;::::0;;;7162:19:::1;::::0;;7204:22:::1;7222:4:::0;7204:15:::1;:22;:::i;:::-;7192:9;:34:::0;7279:1:::1;7263:6:::0;;7242:40:::1;::::0;-1:-1:-1;;;;;7263:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7242:40:0;7279:1;;7242:40:::1;7064:226:::0;:::o;24485:102::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;24557:13:::1;:22:::0;24485:102::o;29918:522::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;30065:39;;::::1;:82:::0;::::1;;;-1:-1:-1::0;30108:39:0;;::::1;30065:82;30057:120;;;::::0;-1:-1:-1;;;30057:120:0;;18251:2:1;30057:120:0::1;::::0;::::1;18233:21:1::0;18290:2;18270:18;;;18263:30;-1:-1:-1;;;18309:18:1;;;18302:55;18374:18;;30057:120:0::1;18049:349:1::0;30057:120:0::1;30216:4;30196:24:::0;::::1;;30188:51;;;;-1:-1:-1::0;;;30188:51:0::1;;;;;;;:::i;:::-;30254:9;30250:181;30267:20:::0;;::::1;30250:181;;;30344:12;;30357:1;30344:15;;;;;;;:::i;:::-;;;;;;;30308:7;:21;30316:9;;30326:1;30316:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30308:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;30308:21:0;:33:::1;;:51:::0;30407:9;;30417:1;30407:12;;::::1;;;;;:::i;:::-;;;;;;;30374:7;:21;30382:9;;30392:1;30382:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30374:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;30374:21:0;:30:::1;;:45:::0;30289:3;::::1;::::0;::::1;:::i;:::-;;;;30250:181;;;;29918:522:::0;;;;;;:::o;25084:132::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;25170:29:::1;:38:::0;25084:132::o;6712:244::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6801:22:0;::::1;6793:73;;;::::0;-1:-1:-1;;;6793:73:0;;12939:2:1;6793:73:0::1;::::0;::::1;12921:21:1::0;12978:2;12958:18;;;12951:30;13017:34;12997:18;;;12990:62;-1:-1:-1;;;13068:18:1;;;13061:36;13114:19;;6793:73:0::1;12737:402:1::0;6793:73:0::1;6903:6;::::0;;6882:38:::1;::::0;-1:-1:-1;;;;;6882:38:0;;::::1;::::0;6903:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6882:38:0;::::1;6931:6;:17:::0;;-1:-1:-1;;;;;;6931:17:0::1;-1:-1:-1::0;;;;;6931:17:0;;;::::1;::::0;;;::::1;::::0;;6712:244::o;24797:100::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;24868:12:::1;:21:::0;24797:100::o;9434:70::-;6465:6;;-1:-1:-1;;;;;6465:6:0;3332:10;6465:22;6457:67;;;;-1:-1:-1;;;6457:67:0;;;;;;;:::i;:::-;9483:6:::1;:13:::0;;-1:-1:-1;;9483:13:0::1;9492:4;9483:13;::::0;;9434:70::o;17198:337::-;-1:-1:-1;;;;;17291:19:0;;17283:68;;;;-1:-1:-1;;;17283:68:0;;19011:2:1;17283:68:0;;;18993:21:1;19050:2;19030:18;;;19023:30;19089:34;19069:18;;;19062:62;-1:-1:-1;;;19140:18:1;;;19133:34;19184:19;;17283:68:0;18809:400:1;17283:68:0;-1:-1:-1;;;;;17370:21:0;;17362:68;;;;-1:-1:-1;;;17362:68:0;;13346:2:1;17362:68:0;;;13328:21:1;13385:2;13365:18;;;13358:30;13424:34;13404:18;;;13397:62;-1:-1:-1;;;13475:18:1;;;13468:32;13517:19;;17362:68:0;13144:398:1;17362:68:0;-1:-1:-1;;;;;17443:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17495:32;;21751:25:1;;;17495:32:0;;21724:18:1;17495:32:0;;;;;;;17198:337;;;:::o;17777:2982::-;9236:6;;17857:4;;17863:2;;9236:6;;;:26;;-1:-1:-1;;;;;;9246:16:0;;;;;;:10;:16;;;;;;;;9236:26;:44;;;-1:-1:-1;;;;;;9266:14:0;;;;;;:10;:14;;;;;;;;9236:44;9228:65;;;;-1:-1:-1;;;9228:65:0;;14105:2:1;9228:65:0;;;14087:21:1;14144:1;14124:18;;;14117:29;-1:-1:-1;;;14162:18:1;;;14155:38;14210:18;;9228:65:0;13903:331:1;9228:65:0;-1:-1:-1;;;;;17891:18:0;::::1;17883:68;;;::::0;-1:-1:-1;;;17883:68:0;;18605:2:1;17883:68:0::1;::::0;::::1;18587:21:1::0;18644:2;18624:18;;;18617:30;18683:34;18663:18;;;18656:62;-1:-1:-1;;;18734:18:1;;;18727:35;18779:19;;17883:68:0::1;18403:401:1::0;17883:68:0::1;-1:-1:-1::0;;;;;17970:16:0;::::1;17962:64;;;::::0;-1:-1:-1;;;17962:64:0;;12535:2:1;17962:64:0::1;::::0;::::1;12517:21:1::0;12574:2;12554:18;;;12547:30;12613:34;12593:18;;;12586:62;-1:-1:-1;;;12664:18:1;;;12657:33;12707:19;;17962:64:0::1;12333:399:1::0;17962:64:0::1;18054:1;18045:6;:10;18037:64;;;::::0;-1:-1:-1;;;18037:64:0;;17438:2:1;18037:64:0::1;::::0;::::1;17420:21:1::0;17477:2;17457:18;;;17450:30;17516:34;17496:18;;;17489:62;-1:-1:-1;;;17567:18:1;;;17560:39;17616:19;;18037:64:0::1;17236:405:1::0;18037:64:0::1;-1:-1:-1::0;;;;;18120:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:25;-1:-1:-1;18120:25:0::1;18112:69;;;::::0;-1:-1:-1;;;18112:69:0;;15972:2:1;18112:69:0::1;::::0;::::1;15954:21:1::0;16011:2;15991:18;;;15984:30;16050:33;16030:18;;;16023:61;16101:18;;18112:69:0::1;15770:355:1::0;18112:69:0::1;-1:-1:-1::0;;;;;18202:18:0;::::1;;::::0;;;:12:::1;:18;::::0;;;;;::::1;;::::0;:38:::1;;-1:-1:-1::0;;;;;;18224:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;::::1;;18202:38;18200:41;18192:82;;;::::0;-1:-1:-1;;;18192:82:0;;14843:2:1;18192:82:0::1;::::0;::::1;14825:21:1::0;14882:2;14862:18;;;14855:30;14921;14901:18;;;14894:58;14969:18;;18192:82:0::1;14641:352:1::0;18192:82:0::1;18293:16;::::0;::::1;;::::0;:38:::1;;;18314:17;:4;-1:-1:-1::0;;;;;18314:15:0::1;;:17::i;:::-;18313:18;18293:38;:64;;;-1:-1:-1::0;;;;;;27165:25:0;;27141:4;27165:25;;;:15;:25;;;;;;;;18335:22:::1;18285:97;;;::::0;-1:-1:-1;;;18285:97:0;;20182:2:1;18285:97:0::1;::::0;::::1;20164:21:1::0;20221:2;20201:18;;;20194:30;-1:-1:-1;;;20240:18:1;;;20233:50;20300:18;;18285:97:0::1;19980:344:1::0;18285:97:0::1;18442:4;18393:28;15672:18:::0;;;:9;:18;;;;;;18512:29:::1;::::0;18488:53;::::1;::::0;::::1;::::0;;;18556:40:::1;;-1:-1:-1::0;18580:16:0::1;::::0;-1:-1:-1;;;18580:16:0;::::1;;;18579:17;18556:40;:56;;;;-1:-1:-1::0;;;;;;18601:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;18600:12;18556:56;:81;;;;-1:-1:-1::0;18616:21:0::1;::::0;-1:-1:-1;;;18616:21:0;::::1;;;18556:81;18552:248;;;18653:17;:15;:17::i;:::-;18708:29;;18685:52;;18752:36;18767:20;18752:14;:36::i;:::-;18810:16;:14;:16::i;:::-;-1:-1:-1::0;;;;;18862:24:0;::::1;18837:11;18862:24:::0;;;:18:::1;:24;::::0;;;;;::::1;;::::0;:50:::1;;-1:-1:-1::0;;;;;;18890:22:0;::::1;;::::0;;;:18:::1;:22;::::0;;;;;::::1;;18862:50;:70;;;-1:-1:-1::0;18916:16:0::1;::::0;-1:-1:-1;;;18916:16:0;::::1;;;18862:70;18859:1090;;;-1:-1:-1::0;19058:1:0::1;18859:1090;;;-1:-1:-1::0;;;;;19095:9:0;::::1;;::::0;;;:5:::1;:9;::::0;;;;;::::1;;19092:846;;;19167:13;;19157:6;:23;;:47;;;-1:-1:-1::0;19185:19:0::1;::::0;-1:-1:-1;;;19185:19:0;::::1;;;19184:20;19157:47;19149:94;;;::::0;-1:-1:-1;;;19149:94:0;;17848:2:1;19149:94:0::1;::::0;::::1;17830:21:1::0;17887:2;17867:18;;;17860:30;17926:34;17906:18;;;17899:62;-1:-1:-1;;;17977:18:1;;;17970:32;18019:19;;19149:94:0::1;17646:398:1::0;19149:94:0::1;19268:57;19313:11;;19268:40;19290:17;;19268;;:21;;:40;;;;:::i;:::-;:44:::0;::::1;:57::i;:::-;19262:63;;19092:846;;;-1:-1:-1::0;;;;;19351:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;19347:591;;;19406:10;;19387:15;:29;19383:100;;;-1:-1:-1::0;;;;;19440:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;:23;;-1:-1:-1;;19440:23:0::1;19459:4;19440:23;::::0;;19383:100:::1;19543:12;;19533:6;:22;;:45;;;-1:-1:-1::0;19560:18:0::1;::::0;-1:-1:-1;;;19560:18:0;::::1;;;19559:19;19533:45;19525:91;;;::::0;-1:-1:-1;;;19525:91:0;;14441:2:1;19525:91:0::1;::::0;::::1;14423:21:1::0;14480:2;14460:18;;;14453:30;14519:34;14499:18;;;14492:62;-1:-1:-1;;;14570:18:1;;;14563:31;14611:19;;19525:91:0::1;14239:397:1::0;19525:91:0::1;19641:45;19678:7;;19641:32;19659:13;;19641;;:17;;:32;;;;:::i;19347:591::-;-1:-1:-1::0;;;;;19765:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:28:::1;;::::0;::::1;;19764:29;:61:::0;::::1;;;;19815:10;;19797:15;:28;19764:61;19756:105;;;::::0;-1:-1:-1;;;19756:105:0;;15612:2:1;19756:105:0::1;::::0;::::1;15594:21:1::0;15651:2;15631:18;;;15624:30;15690:33;15670:18;;;15663:61;15741:18;;19756:105:0::1;15410:355:1::0;19756:105:0::1;19886:18;::::0;::::1;;:36;;19921:1;19886:36;;;19907:11;;19886:36;19880:42;;19347:591;19993:19;20015:22;20025:6;20033:3;20015:9;:22::i;:::-;19993:44:::0;-1:-1:-1;20048:17:0::1;20068:23;:6:::0;19993:44;20068:10:::1;:23::i;:::-;-1:-1:-1::0;;;;;20121:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;20048:43;;-1:-1:-1;20121:27:0::1;::::0;20141:6;20121:19:::1;:27::i;:::-;-1:-1:-1::0;;;;;20103:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:45;;;;20204:4:::1;20186:24:::0;;;;:39:::1;::::0;20215:9;20186:28:::1;:39::i;:::-;20177:4;20159:24;::::0;;;:9:::1;:24;::::0;;;;;:66;;;;-1:-1:-1;;;;;20252:13:0;::::1;::::0;;;;:30:::1;::::0;20270:11;20252:17:::1;:30::i;:::-;-1:-1:-1::0;;;;;20236:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;:46;;;20318:14:::1;::::0;-1:-1:-1;20301:31:0::1;::::0;:60:::1;;-1:-1:-1::0;;;;;;20336:25:0;::::1;;::::0;;;:21:::1;:25;::::0;;;;;::::1;;20301:60;:85;;;-1:-1:-1::0;20366:20:0::1;::::0;-1:-1:-1;;;20366:20:0;::::1;;;20365:21;20301:85;20293:141;;;::::0;-1:-1:-1;;;20293:141:0;;12123:2:1;20293:141:0::1;::::0;::::1;12105:21:1::0;12162:2;12142:18;;;12135:30;12201:34;12181:18;;;12174:62;-1:-1:-1;;;12252:18:1;;;12245:41;12303:19;;20293:141:0::1;11921:407:1::0;20293:141:0::1;20505:16;::::0;-1:-1:-1;;;20505:16:0;::::1;;;20504:17;:33:::0;::::1;;;-1:-1:-1::0;;;;;;20526:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;20525:12;20504:33;20500:98;;;20553:33;20568:4;20574:11;20553:14;:33::i;:::-;20637:2;-1:-1:-1::0;;;;;20623:29:0::1;20632:4;-1:-1:-1::0;;;;;20623:29:0::1;;20640:11;20623:29;;;;21751:25:1::0;;21739:2;21724:18;;21605:177;20623:29:0::1;;;;;;;;20667:14:::0;;20663:89:::1;;20702:38;::::0;21751:25:1;;;20724:4:0::1;::::0;-1:-1:-1;;;;;20702:38:0;::::1;::::0;::::1;::::0;21739:2:1;21724:18;20702:38:0::1;;;;;;;20663:89;17872:2887;;;;;17777:2982:::0;;;;;:::o;2008:192::-;2094:7;2130:12;2122:6;;;;2114:29;;;;-1:-1:-1;;;2114:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2154:9:0;2166:5;2170:1;2166;:5;:::i;:::-;2154:17;2008:192;-1:-1:-1;;;;;2008:192:0:o;1677:179::-;1735:7;;1767:5;1771:1;1767;:5;:::i;:::-;1755:17;;1796:1;1791;:6;;1783:46;;;;-1:-1:-1;;;1783:46:0;;13749:2:1;1783:46:0;;;13731:21:1;13788:2;13768:18;;;13761:30;13827:29;13807:18;;;13800:57;13874:18;;1783:46:0;13547:351:1;1783:46:0;1847:1;1677:179;-1:-1:-1;;;1677:179:0:o;25338:135::-;12739:16;:23;;-1:-1:-1;;;;12739:23:0;-1:-1:-1;;;12739:23:0;;;25409:10;;25405:61:::1;;25433:24;25450:6;25433:16;:24::i;:::-;-1:-1:-1::0;12785:16:0;:24;;-1:-1:-1;;;;12785:24:0;;;25338:135::o;3624:317::-;3684:4;3850:20;;3750:66;3890:23;;;;;;:42;;-1:-1:-1;3917:15:0;;;3890:42;3882:51;3624:317;-1:-1:-1;;;;3624:317:0:o;25481:343::-;12739:16;:23;;-1:-1:-1;;;;12739:23:0;-1:-1:-1;;;12739:23:0;;;25593:14:::1;::::0;25557:21:::1;::::0;12739:23;25593:14:::1;:46:::0;::::1;;;;25622:17;;25611:7;:28;;25593:46;25589:228;;;25684:17;;25674:7;:27;25670:99;;;-1:-1:-1::0;25732:17:0::1;::::0;25670:99:::1;25783:22;25797:7;25783:13;:22::i;20767:1063::-:0;12739:16;:23;;-1:-1:-1;;;;12739:23:0;-1:-1:-1;;;12739:23:0;;;20906:7:::1;::::0;20887:13:::1;::::0;20869::::1;::::0;12739:23;;20869:45:::1;::::0;20906:7;;20869:32:::1;::::0;:17:::1;:32::i;:45::-;20852:62:::0;-1:-1:-1;20929:11:0;;20925:898:::1;;20956:27;20986:73;21057:1;20986:66;21037:14;;21023:13;;:28;;;;:::i;:::-;20986:32;:20:::0;21011:6;20986:24:::1;:32::i;:::-;:36:::0;::::1;:66::i;:::-;:70:::0;::::1;:73::i;:::-;20956:103:::0;-1:-1:-1;21074:22:0::1;21099:45;:20:::0;20956:103;21099:24:::1;:45::i;:::-;21074:70:::0;-1:-1:-1;21184:21:0::1;21220:32;21074:70:::0;21220:16:::1;:32::i;:::-;21267:18;21288:41;:21;21314:14:::0;21288:25:::1;:41::i;:::-;21267:62;;21344:23;21370:63;21431:1;21370:56;21411:14;;21397:13;;:28;;;;:::i;:::-;21370:22;:10:::0;21385:6;21370:14:::1;:22::i;:63::-;21344:89:::0;-1:-1:-1;21451:19:0;;21448:212:::1;;21501:50;21514:19;21535:15;21501:12;:50::i;:::-;21571:73;::::0;;22913:25:1;;;22969:2;22954:18;;22947:34;;;22997:18;;;22990:34;;;21571:73:0::1;::::0;22901:2:1;22886:18;21571:73:0::1;;;;;;;21448:212;21674:15;::::0;21726:13:::1;::::0;-1:-1:-1;;;;;21674:15:0;;::::1;::::0;:67:::1;::::0;21699:41:::1;::::0;:22:::1;:10:::0;21714:6;21699:14:::1;:22::i;:41::-;21674:67;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21756:9:0::1;::::0;21802:7:::1;::::0;-1:-1:-1;;;;;21756:9:0;;::::1;::::0;:55:::1;::::0;21775:35:::1;::::0;:22:::1;:10:::0;21790:6;21775:14:::1;:22::i;:35::-;21756:55;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20941:882;;;;;20925:898;-1:-1:-1::0;;12785:16:0;:24;;-1:-1:-1;;;;12785:24:0;;;20767:1063::o;21838:696::-;21887:9;;;;:28;;;;-1:-1:-1;21900:10:0;;:15;;21887:28;21883:644;;;21931:17;21969:14;;21951:15;:32;;;;:::i;:::-;21931:52;;21998:13;22026:17;;22014:9;:29;;;;:::i;:::-;21998:45;;22062:9;22058:134;22079:5;22075:1;:9;22058:134;;;22130:1;22113:13;;:18;22109:29;;22133:5;;22109:29;22175:1;22157:13;;:19;;;;;;;:::i;:::-;;;;-1:-1:-1;22086:3:0;;-1:-1:-1;22086:3:0;;;:::i;:::-;;;;22058:134;;;-1:-1:-1;22223:15:0;22206:14;:32;22257:13;;22274:2;-1:-1:-1;22253:263:0;;22296:9;:17;;-1:-1:-1;;22296:17:0;;;22348:19;;22332:13;:35;22402:19;;22386:13;:35;22450:13;;22440:7;:23;-1:-1:-1;22482:14:0;:18;21916:611;;21838:696::o;22542:170::-;22692:11;;22617:13;;22650:54;;:37;22666:20;22692:11;22682:3;22666:15;:20::i;:::-;22650:11;;:15;:37::i;1864:136::-;1922:7;1949:43;1953:1;1956;1949:43;;;;;;;;;;;;;;;;;:3;:43::i;32585:791::-;-1:-1:-1;;;;;32667:13:0;;;;;;:7;:13;;;;;:24;;;;;;;;;:82;;-1:-1:-1;32697:18:0;;;;32696:19;:52;;;;-1:-1:-1;;;;;;32720:13:0;;;;;;:7;:13;;;;;:28;;;;;32719:29;32696:52;32667:150;;;-1:-1:-1;32755:29:0;;;;;;;32754:30;:62;;;;-1:-1:-1;;;;;;32788:13:0;;;;;;:7;:13;;;;;:28;;;;;32754:62;32663:188;;;32585:791;;:::o;32663:188::-;32861:16;32880:24;32892:11;32880;:24::i;:::-;-1:-1:-1;;;;;32915:13:0;;;;;;:7;:13;;;;;;;:28;;;;:50;;;;;;;;;;;;;32949:15;32915:50;;;32976:40;;;;;;;;;;;;;;;;;32861:43;;-1:-1:-1;33058:23:0;32923:4;33058:17;:23::i;:::-;-1:-1:-1;;;;;33117:13:0;;33094:20;33117:13;;;:7;:13;;;;;:28;;;33027:54;;-1:-1:-1;33094:20:0;33117:28;;:67;;33173:11;;33117:67;;;33148:22;;33117:67;-1:-1:-1;;;;;33211:13:0;;33195;33211;;;:7;:13;;;;;:22;;;33094:90;;-1:-1:-1;33195:13:0;33211:27;:67;;-1:-1:-1;;;;;33256:13:0;;;;;;:7;:13;;;;;:22;;;33211:67;;;33241:12;33211:67;33195:83;;33321:5;33297:20;:29;;33289:79;;;;-1:-1:-1;;;33289:79:0;;19776:2:1;33289:79:0;;;19758:21:1;19815:2;19795:18;;;19788:30;19854:34;19834:18;;;19827:62;-1:-1:-1;;;19905:18:1;;;19898:35;19950:19;;33289:79:0;19574:401:1;33289:79:0;32652:724;;;;32585:791;;:::o;25832:415::-;25917:16;;;25931:1;25917:16;;;;;;;;25893:21;;25917:16;;;;;;;;-1:-1:-1;;25954:15:0;;:22;;;-1:-1:-1;;;25954:22:0;;;;25893:40;;-1:-1:-1;;;;;;25954:15:0;;;;:20;;-1:-1:-1;25954:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25944:4;25949:1;25944:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;25944:32:0;;;-1:-1:-1;;;;;25944:32:0;;;;;26005:4;25987;25992:1;25987:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25987:23:0;;;:7;;;;;;;;;:23;26021:15;;26152:10;;26021:172;;-1:-1:-1;;;26021:172:0;;:15;;;;:66;;26095:6;;26021:172;;:15;;26133:4;;26152:10;;;;26177:15;;26021:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26209:30;26226:6;26234:4;26209:30;;;;;;;:::i;:::-;;;;;;;;25882:365;25832:415;:::o;2466:132::-;2524:7;2551:39;2555:1;2558;2551:39;;;;;;;;;;;;;;;;;:3;:39::i;2208:250::-;2266:7;2290:6;2286:47;;-1:-1:-1;2320:1:0;2313:8;;2286:47;2345:9;2357:5;2361:1;2357;:5;:::i;:::-;2345:17;-1:-1:-1;2390:1:0;2381:5;2385:1;2345:17;2381:5;:::i;:::-;:10;2373:56;;;;-1:-1:-1;;;2373:56:0;;16332:2:1;2373:56:0;;;16314:21:1;16371:2;16351:18;;;16344:30;16410:34;16390:18;;;16383:62;-1:-1:-1;;;16461:18:1;;;16454:31;16502:19;;2373:56:0;16130:397:1;23285:392:0;23375:16;;;23389:1;23375:16;;;;;;;;23351:21;;23375:16;;;;;;;;;;-1:-1:-1;23375:16:0;23351:40;;23420:4;23402;23407:1;23402:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23402:23:0;;;:7;;;;;;;;;;:23;;;;23446:15;;:22;;;-1:-1:-1;;;23446:22:0;;;;:15;;;;;:20;;:22;;;;;23402:7;;23446:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23436:4;23441:1;23436:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23436:32:0;;;:7;;;;;;;;;:32;23511:15;;23479:62;;23496:4;;23511:15;23529:11;23479:8;:62::i;:::-;23552:15;;:117;;-1:-1:-1;;;23552:117:0;;-1:-1:-1;;;;;23552:15:0;;;;:66;;:117;;23619:11;;23552:15;;23633:4;;23646;;23653:15;;23552:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23815:271;23928:15;;23896:62;;23913:4;;-1:-1:-1;;;;;23928:15:0;23946:11;23896:8;:62::i;:::-;23969:15;;-1:-1:-1;;;;;23969:15:0;:31;24008:9;24027:4;24034:11;23969:15;;24053:7;6376;6403:6;-1:-1:-1;;;;;6403:6:0;;6338:79;24053:7;23969:109;;;;;;-1:-1:-1;;;;;;23969:109:0;;;-1:-1:-1;;;;;10125:15:1;;;23969:109:0;;;10107:34:1;10157:18;;;10150:34;;;;10200:18;;;10193:34;;;;10243:18;;;10236:34;10307:15;;;10286:19;;;10279:44;24062:15:0;10339:19:1;;;10332:35;10041:19;;23969:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27770:291::-;27887:16;;;27901:1;27887:16;;;;;;;;27834;;;;27887;27901:1;27887:16;;;;;;;;;;-1:-1:-1;27887:16:0;27863:40;;27932:4;27914;27919:1;27914:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27914:23:0;;;:7;;;;;;;;;;:23;;;;27958:15;;:22;;;-1:-1:-1;;;27958:22:0;;;;:15;;;;;:20;;:22;;;;;27914:7;;27958:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27948:4;27953:1;27948:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27948:32:0;;;:7;;;;;;;;;:32;28002:15;;:48;;-1:-1:-1;;;28002:48:0;;:15;;;:29;;:48;;28032:11;;28045:4;;28002:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28002:48:0;;;;;;;;;;;;:::i;:::-;28051:1;28002:51;;;;;;;;:::i;:::-;;;;;;;27991:62;;27852:209;27770:291;;;:::o;2606:278::-;2692:7;2727:12;2720:5;2712:28;;;;-1:-1:-1;;;2712:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2751:9:0;2763:5;2767:1;2763;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:247::-;445:6;498:2;486:9;477:7;473:23;469:32;466:52;;;514:1;511;504:12;466:52;553:9;540:23;572:31;597:5;572:31;:::i;638:251::-;708:6;761:2;749:9;740:7;736:23;732:32;729:52;;;777:1;774;767:12;729:52;809:9;803:16;828:31;853:5;828:31;:::i;894:388::-;962:6;970;1023:2;1011:9;1002:7;998:23;994:32;991:52;;;1039:1;1036;1029:12;991:52;1078:9;1065:23;1097:31;1122:5;1097:31;:::i;:::-;1147:5;-1:-1:-1;1204:2:1;1189:18;;1176:32;1217:33;1176:32;1217:33;:::i;:::-;1269:7;1259:17;;;894:388;;;;;:::o;1287:456::-;1364:6;1372;1380;1433:2;1421:9;1412:7;1408:23;1404:32;1401:52;;;1449:1;1446;1439:12;1401:52;1488:9;1475:23;1507:31;1532:5;1507:31;:::i;:::-;1557:5;-1:-1:-1;1614:2:1;1599:18;;1586:32;1627:33;1586:32;1627:33;:::i;:::-;1287:456;;1679:7;;-1:-1:-1;;;1733:2:1;1718:18;;;;1705:32;;1287:456::o;1748:382::-;1813:6;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1929:9;1916:23;1948:31;1973:5;1948:31;:::i;:::-;1998:5;-1:-1:-1;2055:2:1;2040:18;;2027:32;2068:30;2027:32;2068:30;:::i;2135:315::-;2203:6;2211;2264:2;2252:9;2243:7;2239:23;2235:32;2232:52;;;2280:1;2277;2270:12;2232:52;2319:9;2306:23;2338:31;2363:5;2338:31;:::i;:::-;2388:5;2440:2;2425:18;;;;2412:32;;-1:-1:-1;;;2135:315:1:o;2455:437::-;2541:6;2549;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2658:9;2645:23;2691:18;2683:6;2680:30;2677:50;;;2723:1;2720;2713:12;2677:50;2762:70;2824:7;2815:6;2804:9;2800:22;2762:70;:::i;:::-;2851:8;;2736:96;;-1:-1:-1;2455:437:1;-1:-1:-1;;;;2455:437:1:o;2897:773::-;3019:6;3027;3035;3043;3096:2;3084:9;3075:7;3071:23;3067:32;3064:52;;;3112:1;3109;3102:12;3064:52;3152:9;3139:23;3181:18;3222:2;3214:6;3211:14;3208:34;;;3238:1;3235;3228:12;3208:34;3277:70;3339:7;3330:6;3319:9;3315:22;3277:70;:::i;:::-;3366:8;;-1:-1:-1;3251:96:1;-1:-1:-1;3454:2:1;3439:18;;3426:32;;-1:-1:-1;3470:16:1;;;3467:36;;;3499:1;3496;3489:12;3467:36;;3538:72;3602:7;3591:8;3580:9;3576:24;3538:72;:::i;:::-;2897:773;;;;-1:-1:-1;3629:8:1;-1:-1:-1;;;;2897:773:1:o;3675:1088::-;3833:6;3841;3849;3857;3865;3873;3926:2;3914:9;3905:7;3901:23;3897:32;3894:52;;;3942:1;3939;3932:12;3894:52;3982:9;3969:23;4011:18;4052:2;4044:6;4041:14;4038:34;;;4068:1;4065;4058:12;4038:34;4107:70;4169:7;4160:6;4149:9;4145:22;4107:70;:::i;:::-;4196:8;;-1:-1:-1;4081:96:1;-1:-1:-1;4284:2:1;4269:18;;4256:32;;-1:-1:-1;4300:16:1;;;4297:36;;;4329:1;4326;4319:12;4297:36;4368:72;4432:7;4421:8;4410:9;4406:24;4368:72;:::i;:::-;4459:8;;-1:-1:-1;4342:98:1;-1:-1:-1;4547:2:1;4532:18;;4519:32;;-1:-1:-1;4563:16:1;;;4560:36;;;4592:1;4589;4582:12;4560:36;;4631:72;4695:7;4684:8;4673:9;4669:24;4631:72;:::i;:::-;3675:1088;;;;-1:-1:-1;3675:1088:1;;-1:-1:-1;3675:1088:1;;4722:8;;3675:1088;-1:-1:-1;;;3675:1088:1:o;4768:977::-;4852:6;4883:2;4926;4914:9;4905:7;4901:23;4897:32;4894:52;;;4942:1;4939;4932:12;4894:52;4982:9;4969:23;5015:18;5007:6;5004:30;5001:50;;;5047:1;5044;5037:12;5001:50;5070:22;;5123:4;5115:13;;5111:27;-1:-1:-1;5101:55:1;;5152:1;5149;5142:12;5101:55;5188:2;5175:16;5211:60;5227:43;5267:2;5227:43;:::i;:::-;5211:60;:::i;:::-;5293:3;5317:2;5312:3;5305:15;5345:2;5340:3;5336:12;5329:19;;5376:2;5372;5368:11;5424:7;5419:2;5413;5410:1;5406:10;5402:2;5398:19;5394:28;5391:41;5388:61;;;5445:1;5442;5435:12;5388:61;5467:1;5458:10;;5477:238;5491:2;5488:1;5485:9;5477:238;;;5562:3;5549:17;5579:31;5604:5;5579:31;:::i;:::-;5623:18;;5509:1;5502:9;;;;;5661:12;;;;5693;;5477:238;;;-1:-1:-1;5734:5:1;4768:977;-1:-1:-1;;;;;;;4768:977:1:o;5750:892::-;5845:6;5876:2;5919;5907:9;5898:7;5894:23;5890:32;5887:52;;;5935:1;5932;5925:12;5887:52;5968:9;5962:16;6001:18;5993:6;5990:30;5987:50;;;6033:1;6030;6023:12;5987:50;6056:22;;6109:4;6101:13;;6097:27;-1:-1:-1;6087:55:1;;6138:1;6135;6128:12;6087:55;6167:2;6161:9;6190:60;6206:43;6246:2;6206:43;:::i;6190:60::-;6272:3;6296:2;6291:3;6284:15;6324:2;6319:3;6315:12;6308:19;;6355:2;6351;6347:11;6403:7;6398:2;6392;6389:1;6385:10;6381:2;6377:19;6373:28;6370:41;6367:61;;;6424:1;6421;6414:12;6367:61;6446:1;6437:10;;6456:156;6470:2;6467:1;6464:9;6456:156;;;6527:10;;6515:23;;6488:1;6481:9;;;;;6558:12;;;;6590;;6456:156;;6647:241;6703:6;6756:2;6744:9;6735:7;6731:23;6727:32;6724:52;;;6772:1;6769;6762:12;6724:52;6811:9;6798:23;6830:28;6852:5;6830:28;:::i;6893:245::-;6960:6;7013:2;7001:9;6992:7;6988:23;6984:32;6981:52;;;7029:1;7026;7019:12;6981:52;7061:9;7055:16;7080:28;7102:5;7080:28;:::i;7143:180::-;7202:6;7255:2;7243:9;7234:7;7230:23;7226:32;7223:52;;;7271:1;7268;7261:12;7223:52;-1:-1:-1;7294:23:1;;7143:180;-1:-1:-1;7143:180:1:o;7328:184::-;7398:6;7451:2;7439:9;7430:7;7426:23;7422:32;7419:52;;;7467:1;7464;7457:12;7419:52;-1:-1:-1;7490:16:1;;7328:184;-1:-1:-1;7328:184:1:o;7517:316::-;7594:6;7602;7610;7663:2;7651:9;7642:7;7638:23;7634:32;7631:52;;;7679:1;7676;7669:12;7631:52;-1:-1:-1;;7702:23:1;;;7772:2;7757:18;;7744:32;;-1:-1:-1;7823:2:1;7808:18;;;7795:32;;7517:316;-1:-1:-1;7517:316:1:o;7838:306::-;7926:6;7934;7942;7995:2;7983:9;7974:7;7970:23;7966:32;7963:52;;;8011:1;8008;8001:12;7963:52;8040:9;8034:16;8024:26;;8090:2;8079:9;8075:18;8069:25;8059:35;;8134:2;8123:9;8119:18;8113:25;8103:35;;7838:306;;;;;:::o;8149:461::-;8202:3;8240:5;8234:12;8267:6;8262:3;8255:19;8293:4;8322:2;8317:3;8313:12;8306:19;;8359:2;8352:5;8348:14;8380:1;8390:195;8404:6;8401:1;8398:13;8390:195;;;8469:13;;-1:-1:-1;;;;;8465:39:1;8453:52;;8525:12;;;;8560:15;;;;8501:1;8419:9;8390:195;;;-1:-1:-1;8601:3:1;;8149:461;-1:-1:-1;;;;;8149:461:1:o;8615:435::-;8668:3;8706:5;8700:12;8733:6;8728:3;8721:19;8759:4;8788:2;8783:3;8779:12;8772:19;;8825:2;8818:5;8814:14;8846:1;8856:169;8870:6;8867:1;8864:13;8856:169;;;8931:13;;8919:26;;8965:12;;;;9000:15;;;;8892:1;8885:9;8856:169;;10804:510;11075:6;11064:9;11057:25;11118:3;11113:2;11102:9;11098:18;11091:31;11038:4;11139:57;11191:3;11180:9;11176:19;11168:6;11139:57;:::i;:::-;-1:-1:-1;;;;;11232:32:1;;;;11227:2;11212:18;;11205:60;-1:-1:-1;11296:2:1;11281:18;11274:34;11131:65;10804:510;-1:-1:-1;;10804:510:1:o;11319:597::-;11431:4;11460:2;11489;11478:9;11471:21;11521:6;11515:13;11564:6;11559:2;11548:9;11544:18;11537:34;11589:1;11599:140;11613:6;11610:1;11607:13;11599:140;;;11708:14;;;11704:23;;11698:30;11674:17;;;11693:2;11670:26;11663:66;11628:10;;11599:140;;;11757:6;11754:1;11751:13;11748:91;;;11827:1;11822:2;11813:6;11802:9;11798:22;11794:31;11787:42;11748:91;-1:-1:-1;11900:2:1;11879:15;-1:-1:-1;;11875:29:1;11860:45;;;;11907:2;11856:54;;11319:597;-1:-1:-1;;;11319:597:1:o;16532:356::-;16734:2;16716:21;;;16753:18;;;16746:30;16812:34;16807:2;16792:18;;16785:62;16879:2;16864:18;;16532:356::o;16893:338::-;17095:2;17077:21;;;17134:2;17114:18;;;17107:30;-1:-1:-1;;;17168:2:1;17153:18;;17146:44;17222:2;17207:18;;16893:338::o;20733:867::-;20924:2;20913:9;20906:21;20887:4;20962:6;20956:13;21005:4;21000:2;20989:9;20985:18;20978:32;21033:63;21091:3;21080:9;21076:19;21062:12;21033:63;:::i;:::-;21019:77;;21145:2;21137:6;21133:15;21127:22;21217:2;21213:7;21201:9;21193:6;21189:22;21185:36;21180:2;21169:9;21165:18;21158:64;21245:52;21290:6;21274:14;21245:52;:::i;:::-;21231:66;;;21351:2;21343:6;21339:15;21333:22;21328:2;21317:9;21313:18;21306:50;21411:2;21403:6;21399:15;21393:22;21387:3;21376:9;21372:19;21365:51;21485:3;21477:6;21473:16;21467:23;21460:31;21453:39;21447:3;21436:9;21432:19;21425:68;21563:3;21555:6;21551:16;21545:23;21538:31;21531:39;21524:4;21513:9;21509:20;21502:69;21588:6;21580:14;;;20733:867;;;;:::o;21787:332::-;21994:6;21983:9;21976:25;22037:2;22032;22021:9;22017:18;22010:30;21957:4;22057:56;22109:2;22098:9;22094:18;22086:6;22057:56;:::i;22124:582::-;22423:6;22412:9;22405:25;22466:6;22461:2;22450:9;22446:18;22439:34;22509:3;22504:2;22493:9;22489:18;22482:31;22386:4;22530:57;22582:3;22571:9;22567:19;22559:6;22530:57;:::i;:::-;-1:-1:-1;;;;;22623:32:1;;;;22618:2;22603:18;;22596:60;-1:-1:-1;22687:3:1;22672:19;22665:35;22522:65;22124:582;-1:-1:-1;;;22124:582:1:o;23224:275::-;23295:2;23289:9;23360:2;23341:13;;-1:-1:-1;;23337:27:1;23325:40;;23395:18;23380:34;;23416:22;;;23377:62;23374:88;;;23442:18;;:::i;:::-;23478:2;23471:22;23224:275;;-1:-1:-1;23224:275:1:o;23504:183::-;23564:4;23597:18;23589:6;23586:30;23583:56;;;23619:18;;:::i;:::-;-1:-1:-1;23664:1:1;23660:14;23676:4;23656:25;;23504:183::o;23692:128::-;23732:3;23763:1;23759:6;23756:1;23753:13;23750:39;;;23769:18;;:::i;:::-;-1:-1:-1;23805:9:1;;23692:128::o;23825:217::-;23865:1;23891;23881:132;;23935:10;23930:3;23926:20;23923:1;23916:31;23970:4;23967:1;23960:15;23998:4;23995:1;23988:15;23881:132;-1:-1:-1;24027:9:1;;23825:217::o;24047:168::-;24087:7;24153:1;24149;24145:6;24141:14;24138:1;24135:21;24130:1;24123:9;24116:17;24112:45;24109:71;;;24160:18;;:::i;:::-;-1:-1:-1;24200:9:1;;24047:168::o;24220:125::-;24260:4;24288:1;24285;24282:8;24279:34;;;24293:18;;:::i;:::-;-1:-1:-1;24330:9:1;;24220:125::o;24350:136::-;24389:3;24417:5;24407:39;;24426:18;;:::i;:::-;-1:-1:-1;;;24462:18:1;;24350:136::o;24491:380::-;24570:1;24566:12;;;;24613;;;24634:61;;24688:4;24680:6;24676:17;24666:27;;24634:61;24741:2;24733:6;24730:14;24710:18;24707:38;24704:161;;;24787:10;24782:3;24778:20;24775:1;24768:31;24822:4;24819:1;24812:15;24850:4;24847:1;24840:15;24704:161;;24491:380;;;:::o;24876:135::-;24915:3;-1:-1:-1;;24936:17:1;;24933:43;;;24956:18;;:::i;:::-;-1:-1:-1;25003:1:1;24992:13;;24876:135::o;25016:175::-;25053:3;25097:4;25090:5;25086:16;25126:4;25117:7;25114:17;25111:43;;;25134:18;;:::i;:::-;25183:1;25170:15;;25016:175;-1:-1:-1;;25016:175:1:o;25196:127::-;25257:10;25252:3;25248:20;25245:1;25238:31;25288:4;25285:1;25278:15;25312:4;25309:1;25302:15;25328:127;25389:10;25384:3;25380:20;25377:1;25370:31;25420:4;25417:1;25410:15;25444:4;25441:1;25434:15;25460:127;25521:10;25516:3;25512:20;25509:1;25502:31;25552:4;25549:1;25542:15;25576:4;25573:1;25566:15;25592:131;-1:-1:-1;;;;;25667:31:1;;25657:42;;25647:70;;25713:1;25710;25703:12;25728:118;25814:5;25807:13;25800:21;25793:5;25790:32;25780:60;;25836:1;25833;25826:12

Swarm Source

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