ETH Price: $2,551.20 (-4.89%)

Contract

0xd9753B2B09dfb0D7aa679759baAeF4B1eA944c06
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Remove Limits173618332023-05-29 2:59:23521 days ago1685329163IN
0xd9753B2B...1eA944c06
0 ETH0.0009205831.43322991
Approve173618262023-05-29 2:57:59521 days ago1685329079IN
0xd9753B2B...1eA944c06
0 ETH0.001506132.30387
Approve173618242023-05-29 2:57:35521 days ago1685329055IN
0xd9753B2B...1eA944c06
0 ETH0.0016780635.9923146
Approve173618242023-05-29 2:57:35521 days ago1685329055IN
0xd9753B2B...1eA944c06
0 ETH0.0016780635.9923146
Approve173618242023-05-29 2:57:35521 days ago1685329055IN
0xd9753B2B...1eA944c06
0 ETH0.0016780635.9923146
Enable Trading173618222023-05-29 2:57:11521 days ago1685329031IN
0xd9753B2B...1eA944c06
0 ETH0.0025198633.0417184
Approve173618132023-05-29 2:55:23521 days ago1685328923IN
0xd9753B2B...1eA944c06
0 ETH0.0016117634.76704286
0x60806040173616772023-05-29 2:27:47521 days ago1685327267IN
 Create: JINCHAN
0 ETH0.2164529237.84351061

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JINCHAN

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-29
*/

/**
  * https://t.me/JinChanERC
**/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) { return _name; }
    function symbol() public view virtual override returns (string memory) { return _symbol; }
    function decimals() public view virtual override returns (uint8) { return 18; }
    function totalSupply() public view virtual override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
    function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() external 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;
    }
}

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

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

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

    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin,
        uint256 amountETHMin, address to, uint256 deadline) external payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

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

contract JINCHAN is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;

    address devAddress;
    address operationsAddress;

    uint256 public maxTxAmount;
    uint256 public maxWalletAmount;
    uint256 public swapTokensAtAmount;

    struct Set { uint256 dev; uint256 operations; uint256 burn; uint256 liquidity; }

    Set public tokensFor;
    Set public buyFees;
    Set public sellFees;
    uint256 public buyTotalFees;
    uint256 public sellTotalFees;

    uint256 public tradingActiveBlock = 0;
    uint256 public deadBlocks = 1;
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool private swapping;
    bool public limitsInEffect  = true;
    bool public tradingActive   = false;
    bool public swapEnabled     = false;
 
    bool public transferDelayEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTx;

    mapping (address => bool) public automatedMarketMakerPairs;

    event EnabledTrading();
    event ExcludedFromFees(address indexed account, bool isExcluded);
    event ExcludedFromMaxTx(address _address, bool excluded);
    event UpdatedMaxTxAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event OwnerForcedSwapBack(uint256 timestamp);
    event CaughtEarlyBuyer(address bot);
    event RemovedLimits();

    constructor () ERC20 ("Jin Chan", unicode"金蟾") {
        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        excludeFromMaxTxAmount(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 100000000000 * 1e18;
        maxTxAmount         = totalSupply * 20 / 1e3; // 2.0%
        maxWalletAmount     = totalSupply * 20 / 1e3; // 2.0%
        swapTokensAtAmount  = totalSupply * 5 / 1e4; // 0.05%

        buyFees             = Set(5, 0, 0, 0); // dev, operations, burn, liquidity
        sellFees            = Set(20, 0, 0, 0);

        buyTotalFees        = buyFees.dev + buyFees.operations + buyFees.burn + buyFees.liquidity;
        sellTotalFees       = sellFees.dev + sellFees.operations + sellFees.burn + sellFees.liquidity;

        devAddress          = msg.sender;
        operationsAddress   = msg.sender;

        excludeFromMaxTxAmount(msg.sender, true);
        excludeFromMaxTxAmount(address(this), true);
        excludeFromMaxTxAmount(address(0xdead), true);

        excludeFromFees(msg.sender, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
         _createInitialSupply(msg.sender, totalSupply);
    }

    receive() external payable { }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
        excludeFromMaxTxAmount(operationsAddress, true);
        excludeFromFees(operationsAddress, true);
    }

    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading.");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        if (_deadBlocks == 0) deadBlocks = 1;
        else deadBlocks = _deadBlocks;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

    function excludeFromFees(address _account, bool _excluded) public onlyOwner {
        _isExcludedFromFees[_account] = _excluded;
        emit ExcludedFromFees(_account, _excluded);
    }

    function excludeFromMaxTxAmount(address _account, bool _excluded) public onlyOwner {
        if (_excluded == false) { require(_account != lpPair, "Cannot include Uniswap pair from maxTxAmount restriction."); }
        _isExcludedMaxTx[_account] = _excluded;
        emit ExcludedFromMaxTx(_account, _excluded);
    }

    function updateMaxTx(uint256 _newAmount) external onlyOwner {
        require(_newAmount >= (totalSupply() * 2 / 1e3) / 1e18, "Cannot set maxTxAmount lower than 0.2%");
        maxTxAmount = _newAmount * 1e18;
        emit UpdatedMaxTxAmount(maxTxAmount);
    }

    function updateMaxWallet(uint256 _newAmount) external onlyOwner {
        require(_newAmount >= (totalSupply() * 3 / 1e3) / 1e18, "Cannot set maxWalletAmount lower than 0.3%");
        maxWalletAmount = _newAmount * 1e18;
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function updateSwapTokens(uint256 _newAmount) external onlyOwner {
  	    require(_newAmount >= totalSupply() * 1 / 1e5, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(_newAmount <= totalSupply() * 1 / 1e4, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = _newAmount;
  	}

    function setBuyFees(uint256 _devFee, uint256 _operationsFee, uint256 _burnFee, uint256 _liquidityFee) external onlyOwner {
        buyFees.dev         = _devFee;
        buyFees.operations  = _operationsFee;
        buyFees.burn        = _burnFee;
        buyFees.liquidity   = _liquidityFee;
        buyTotalFees        = buyFees.dev + buyFees.operations + buyFees.burn + buyFees.liquidity;
        require(buyTotalFees <= 30, "Cannot set buyTotalFees higher than 30%");
    }

    function setSellFees(uint256 _devFee, uint256 _operationsFee, uint256 _burnFee, uint256 _liquidityFee) external onlyOwner {
        sellFees.dev        = _devFee;
        sellFees.operations = _operationsFee;
        sellFees.burn       = _burnFee;
        sellFees.liquidity  = _liquidityFee;
        sellTotalFees = sellFees.dev + sellFees.operations + sellFees.burn + sellFees.liquidity;
        require(sellTotalFees <= 99, "Cannot set sellTotalFees higher than 99%");
    }

    function setAutomatedMarketMakerPair(address _pair, bool _value) external onlyOwner {
        require(_pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs.");

        _setAutomatedMarketMakerPair(_pair, _value);
        emit SetAutomatedMarketMakerPair(_pair, _value);
    }

    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction.");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    ////

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if (!tradingActive) {
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if (blockForPenaltyEnd > 0) {
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(lpPair)) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer delay enabled. Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
    
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTx[to]) { // Buy
                    require(amount <= maxTxAmount, "Cannot exceed the maxTxAmount.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed the maxWalletAmount.");
                }
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTx[from]) { // Sell
                    require(amount <= maxTxAmount, "Cannot exceed the maxTxAmount.");
                }
                else if (!_isExcludedMaxTx[to]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed the maxWalletAmount.");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        uint256 fees = 0;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { // takeFee
            if (earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0) { // botPenalty
                if (!boughtEarly[to]) {
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
        	    tokensFor.dev += fees * buyFees.dev / buyTotalFees;
                tokensFor.operations += fees * buyFees.operations / buyTotalFees;
                tokensFor.burn += fees * buyFees.burn / buyTotalFees;
                tokensFor.liquidity += fees * buyFees.liquidity / buyTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { // Buy
        	    fees = amount * buyTotalFees / 100;
        	    tokensFor.dev += fees * buyFees.dev / buyTotalFees;
                tokensFor.operations += fees * buyFees.operations / buyTotalFees;
                tokensFor.burn += fees * buyFees.burn / buyTotalFees;
                tokensFor.liquidity += fees * buyFees.liquidity / buyTotalFees;
            }
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { // Sell
                fees = amount * sellTotalFees / 100;
                tokensFor.dev += fees * sellFees.dev / sellTotalFees;
                tokensFor.operations += fees * sellFees.operations / sellTotalFees;
                tokensFor.burn += fees * sellFees.burn / sellTotalFees;
                tokensFor.liquidity += fees * sellFees.liquidity / sellTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        excludeFromMaxTxAmount(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(dexRouter), tokenAmount);

        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {
        if (tokensFor.burn > 0 && balanceOf(address(this)) >= tokensFor.burn) {
            _burn(address(this), tokensFor.burn);
        }
        tokensFor.burn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensFor.dev + tokensFor.operations + tokensFor.liquidity;

        if (contractBalance == 0 || totalTokensToSwap == 0) { return; }

        if (contractBalance > swapTokensAtAmount * 60) {
            contractBalance = swapTokensAtAmount * 60;
        }

        uint256 liquidityTokens = contractBalance * tokensFor.liquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensFor.operations / (totalTokensToSwap - (tokensFor.liquidity / 2));
        uint256 ethForDev = ethBalance * tokensFor.dev / (totalTokensToSwap - (tokensFor.liquidity / 2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensFor.dev = 0;
        tokensFor.operations = 0;
        tokensFor.liquidity = 0;
        tokensFor.burn = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        bool success;
        (success,) = address(devAddress).call{value: ethForDev}("");
        (success,) = address(operationsAddress).call{value: 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":"address","name":"bot","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromMaxTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxTxAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"excludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensFor","outputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"updateMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f601b556001601c556020805464ffffffff0019166401000001001790553480156200002e575f80fd5b50604051806040016040528060088152602001672534b71021b430b760c11b8152506040518060400160405280600681526020016574c3c8f44fdf60d11b815250816003908162000080919062000836565b5060046200008f828262000836565b5050505f620000a36200045e60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000154573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017a9190620008fe565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ec9190620008fe565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000237573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025d9190620008fe565b600780546001600160a01b0319166001600160a01b039290921691821790556200028990600162000462565b600754620002a2906001600160a01b03166001620005a2565b6c01431e0fae6d7217caa00000006103e8620002c082601462000941565b620002cc919062000961565b600a556103e8620002df82601462000941565b620002eb919062000961565b600b55612710620002fe82600562000941565b6200030a919062000961565b600c55604080516080808201835260058083525f602080850182905284860182905260609485018290526011839055601282905560138290556014828155865194850187528085529084018290529483018190529190920181905260159290925560168290556017829055601882905581906200038990829062000981565b62000395919062000981565b620003a1919062000981565b601955601854601754601654601554620003bc919062000981565b620003c8919062000981565b620003d4919062000981565b601a5560088054336001600160a01b0319918216811790925560098054909116821790556200040590600162000462565b6200041230600162000462565b6200042161dead600162000462565b6200042e3360016200060c565b6200043b3060016200060c565b6200044a61dead60016200060c565b620004563382620006b4565b505062000997565b3390565b6005546001600160a01b03163314620004b05760405162461bcd60e51b815260206004820181905260248201525f805160206200373f83398151915260448201526064015b60405180910390fd5b8015155f0362000540576007546001600160a01b0390811690831603620005405760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f7420696e636c75646520556e697377617020706169722066726f6d60448201527f206d61785478416d6f756e74207265737472696374696f6e2e000000000000006064820152608401620004a7565b6001600160a01b0382165f81815260236020908152604091829020805460ff19168515159081179091558251938452908301527f77a0fec448da1c340eddbf781d9ff0520a78d5a35fd142eaaec4e04a81157a0f910160405180910390a15050565b6001600160a01b0382165f908152602460205260409020805460ff1916821515179055620005d1828262000462565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620006565760405162461bcd60e51b815260206004820181905260248201525f805160206200373f8339815191526044820152606401620004a7565b6001600160a01b0382165f81815260226020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb910160405180910390a25050565b6001600160a01b0382166200070c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004a7565b8060025f8282546200071f919062000981565b90915550506001600160a01b0382165f90815260208190526040812080548392906200074d90849062000981565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620007bf57607f821691505b602082108103620007de57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000831575f81815260208120601f850160051c810160208610156200080c5750805b601f850160051c820191505b818110156200082d5782815560010162000818565b5050505b505050565b81516001600160401b0381111562000852576200085262000796565b6200086a81620008638454620007aa565b84620007e4565b602080601f831160018114620008a0575f8415620008885750858301515b5f19600386901b1c1916600185901b1785556200082d565b5f85815260208120601f198616915b82811015620008d057888601518255948401946001909101908401620008af565b5085821015620008ee57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200090f575f80fd5b81516001600160a01b038116811462000926575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200095b576200095b6200092d565b92915050565b5f826200097c57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200095b576200095b6200092d565b612d9a80620009a55f395ff3fe6080604052600436106102a8575f3560e01c806382aa7c681161016f578063bbc0c742116100d8578063e0f3ccf511610092578063ee40166e1161006d578063ee40166e14610856578063f2fde38b1461086b578063f5648a4f1461088a578063fabb0b4f1461089e575f80fd5b8063e0f3ccf5146107fd578063e2f456051461081f578063e4748b9e14610834575f80fd5b8063bbc0c74214610726578063c024666814610745578063c2d0ffca14610764578063c876d0b914610783578063d85ba063146107a4578063dd62ed3e146107b9575f80fd5b80639a7a23d6116101295780639a7a23d614610671578063a457c2d714610690578063a62068ce146106af578063a9059cbb146106c4578063aa4bde28146106e3578063b62496f5146106f8575f80fd5b806382aa7c68146105b057806385ecfd28146105cf578063882c3d98146105fd5780638c0b5e221461062b5780638da5cb5b1461064057806395d89b411461065d575f80fd5b8063499b8394116102115780636b0a894c116101cb5780636b0a894c146105155780636c5b28551461052a5780636ddd17131461054957806370a0823114610569578063715018a614610588578063751039fc1461059c575f80fd5b8063499b83941461047a5780634a62bb651461049957806351f205e4146104b757806358a6d531146104cb578063595cc84f146104e15780636a486a8e14610500575f80fd5b806323b872dd1161026257806323b872dd146103a1578063313ce567146103c05780633373d18f146103db578063395093511461041d578063452ed4f11461043c57806346f1f5de1461045b575f80fd5b806306fdde03146102b35780630758d924146102dd578063095ea7b314610314578063178d9b8e1461034357806318160ddd146103645780631c499ab014610382575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c76108b3565b6040516102d4919061295e565b60405180910390f35b3480156102e8575f80fd5b506006546102fc906001600160a01b031681565b6040516001600160a01b0390911681526020016102d4565b34801561031f575f80fd5b5061033361032e3660046129bd565b610943565b60405190151581526020016102d4565b34801561034e575f80fd5b5061036261035d3660046129e7565b610959565b005b34801561036f575f80fd5b506002545b6040519081526020016102d4565b34801561038d575f80fd5b5061036261039c366004612a16565b610a2b565b3480156103ac575f80fd5b506103336103bb366004612a2d565b610b39565b3480156103cb575f80fd5b50604051601281526020016102d4565b3480156103e6575f80fd5b50600d54600e54600f546010546103fd9392919084565b6040805194855260208501939093529183015260608201526080016102d4565b348015610428575f80fd5b506103336104373660046129bd565b610be1565b348015610447575f80fd5b506007546102fc906001600160a01b031681565b348015610466575f80fd5b50610362610475366004612a16565b610c1c565b348015610485575f80fd5b50610362610494366004612a6b565b610d67565b3480156104a4575f80fd5b5060205461033390610100900460ff1681565b3480156104c2575f80fd5b50610362610e39565b3480156104d6575f80fd5b50601d544310610333565b3480156104ec575f80fd5b506103626104fb366004612a8d565b610f3f565b34801561050b575f80fd5b50610374601a5481565b348015610520575f80fd5b50610374601f5481565b348015610535575f80fd5b506103626105443660046129e7565b611058565b348015610554575f80fd5b50602054610333906301000000900460ff1681565b348015610574575f80fd5b50610374610583366004612a6b565b61111c565b348015610593575f80fd5b50610362611136565b3480156105a7575f80fd5b506103626111a9565b3480156105bb575f80fd5b506103626105ca366004612a16565b61120b565b3480156105da575f80fd5b506103336105e9366004612a6b565b601e6020525f908152604090205460ff1681565b348015610608575f80fd5b50610333610617366004612a6b565b60236020525f908152604090205460ff1681565b348015610636575f80fd5b50610374600a5481565b34801561064b575f80fd5b506005546001600160a01b03166102fc565b348015610668575f80fd5b506102c76112fb565b34801561067c575f80fd5b5061036261068b366004612a8d565b61130a565b34801561069b575f80fd5b506103336106aa3660046129bd565b6113fd565b3480156106ba575f80fd5b50610374601d5481565b3480156106cf575f80fd5b506103336106de3660046129bd565b611495565b3480156106ee575f80fd5b50610374600b5481565b348015610703575f80fd5b50610333610712366004612a6b565b60246020525f908152604090205460ff1681565b348015610731575f80fd5b506020546103339062010000900460ff1681565b348015610750575f80fd5b5061036261075f366004612a8d565b6114a1565b34801561076f575f80fd5b5061036261077e366004612a16565b611529565b34801561078e575f80fd5b5060205461033390640100000000900460ff1681565b3480156107af575f80fd5b5061037460195481565b3480156107c4575f80fd5b506103746107d3366004612ac8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610808575f80fd5b506015546016546017546018546103fd9392919084565b34801561082a575f80fd5b50610374600c5481565b34801561083f575f80fd5b506011546012546013546014546103fd9392919084565b348015610861575f80fd5b50610374601b5481565b348015610876575f80fd5b50610362610885366004612a6b565b61162c565b348015610895575f80fd5b50610362611716565b3480156108a9575f80fd5b50610374601c5481565b6060600380546108c290612af4565b80601f01602080910402602001604051908101604052809291908181526020018280546108ee90612af4565b80156109395780601f1061091057610100808354040283529160200191610939565b820191905f5260205f20905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b5f61094f33848461177f565b5060015b92915050565b6005546001600160a01b0316331461098c5760405162461bcd60e51b815260040161098390612b2c565b60405180910390fd5b601184905560128390556013829055601481905580826109ac8587612b75565b6109b69190612b75565b6109c09190612b75565b6019819055601e1015610a255760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742073657420627579546f74616c4665657320686967686572207460448201526668616e2033302560c81b6064820152608401610983565b50505050565b6005546001600160a01b03163314610a555760405162461bcd60e51b815260040161098390612b2c565b670de0b6b3a76400006103e8610a6a60025490565b610a75906003612b88565b610a7f9190612b9f565b610a899190612b9f565b811015610aeb5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015269207468616e20302e332560b01b6064820152608401610983565b610afd81670de0b6b3a7640000612b88565b600b8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b5f610b458484846118a3565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610bc95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610983565b610bd6853385840361177f565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161094f918590610c17908690612b75565b61177f565b6005546001600160a01b03163314610c465760405162461bcd60e51b815260040161098390612b2c565b620186a0610c5360025490565b610c5e906001612b88565b610c689190612b9f565b811015610cd55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610983565b612710610ce160025490565b610cec906001612b88565b610cf69190612b9f565b811115610d625760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610983565b600c55565b6005546001600160a01b03163314610d915760405162461bcd60e51b815260040161098390612b2c565b6001600160a01b038116610df65760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610983565b600980546001600160a01b0319166001600160a01b038316908117909155610e1f906001610f3f565b600954610e36906001600160a01b031660016114a1565b50565b6005546001600160a01b03163314610e635760405162461bcd60e51b815260040161098390612b2c565b600c54610e6f3061111c565b1015610eed5760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152601760f91b608482015260a401610983565b6020805460ff19166001179055610f02612284565b6020805460ff191681556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32910160405180910390a1565b6005546001600160a01b03163314610f695760405162461bcd60e51b815260040161098390612b2c565b8015155f03610ff6576007546001600160a01b0390811690831603610ff65760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f7420696e636c75646520556e697377617020706169722066726f6d60448201527f206d61785478416d6f756e74207265737472696374696f6e2e000000000000006064820152608401610983565b6001600160a01b0382165f81815260236020908152604091829020805460ff19168515159081179091558251938452908301527f77a0fec448da1c340eddbf781d9ff0520a78d5a35fd142eaaec4e04a81157a0f910160405180910390a15050565b6005546001600160a01b031633146110825760405162461bcd60e51b815260040161098390612b2c565b601584905560168390556017829055601881905580826110a28587612b75565b6110ac9190612b75565b6110b69190612b75565b601a81905560631015610a255760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f74207365742073656c6c546f74616c4665657320686967686572206044820152677468616e2039392560c01b6064820152608401610983565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146111605760405162461bcd60e51b815260040161098390612b2c565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111d35760405162461bcd60e51b815260040161098390612b2c565b6020805464ff0000ff00191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b031633146112355760405162461bcd60e51b815260040161098390612b2c565b60205462010000900460ff161561128e5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207265656e61626c652074726164696e672e00000000000000006044820152606401610983565b6020805463ffff00001916630101000017905543601b555f8190036112b7576001601c556112bd565b601c8190555b601c54601b546112cd9190612b75565b601d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6060600480546108c290612af4565b6005546001600160a01b031633146113345760405162461bcd60e51b815260040161098390612b2c565b6007546001600160a01b03908116908316036113b85760405162461bcd60e51b815260206004820152603a60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972732e0000000000006064820152608401610983565b6113c282826124bf565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561147e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610983565b61148b338585840361177f565b5060019392505050565b5f61094f3384846118a3565b6005546001600160a01b031633146114cb5760405162461bcd60e51b815260040161098390612b2c565b6001600160a01b0382165f81815260226020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb910160405180910390a25050565b6005546001600160a01b031633146115535760405162461bcd60e51b815260040161098390612b2c565b670de0b6b3a76400006103e861156860025490565b611573906002612b88565b61157d9190612b9f565b6115879190612b9f565b8110156115e55760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468616044820152656e20302e322560d01b6064820152608401610983565b6115f781670de0b6b3a7640000612b88565b600a8190556040519081527f9f5e246af7c18550ffbb625af523d90c3be8c2f4c33faede31f8005c517200fa90602001610b2e565b6005546001600160a01b031633146116565760405162461bcd60e51b815260040161098390612b2c565b6001600160a01b0381166116bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610983565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117405760405162461bcd60e51b815260040161098390612b2c565b6040515f90339047908381818185875af1925050503d805f8114610a25576040519150601f19603f3d011682016040523d82523d5f602084013e610a25565b6001600160a01b0383166117e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610983565b6001600160a01b0382166118425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610983565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118c95760405162461bcd60e51b815260040161098390612bbe565b6001600160a01b0382166118ef5760405162461bcd60e51b815260040161098390612c03565b5f811161193e5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610983565b60205462010000900460ff166119d0576001600160a01b0383165f9081526022602052604090205460ff168061198b57506001600160a01b0382165f9081526022602052604090205460ff165b6119d05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610983565b601d5415611aa2576001600160a01b0383165f908152601e602052604090205460ff161580611a0c57506005546001600160a01b038381169116145b80611a2157506001600160a01b03821661dead145b611aa25760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610983565b602054610100900460ff1615611e26576005546001600160a01b03848116911614801590611ade57506005546001600160a01b03838116911614155b8015611af257506001600160a01b03821615155b8015611b0957506001600160a01b03821661dead14155b8015611b2d57506001600160a01b0383165f9081526022602052604090205460ff16155b8015611b5157506001600160a01b0382165f9081526022602052604090205460ff16155b15611e2657602054640100000000900460ff1615611c6e576006546001600160a01b03838116911614801590611b9557506007546001600160a01b03838116911614155b15611c6e57611ba5600243612c46565b325f90815260216020526040902054108015611be15750611bc7600243612c46565b6001600160a01b0383165f90815260216020526040902054105b611c4a5760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a3a205472616e736665722064656c617920656e61626c60448201527332b217102a393c9030b3b0b4b7103630ba32b91760611b6064820152608401610983565b325f9081526021602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526024602052604090205460ff168015611cad57506001600160a01b0382165f9081526023602052604090205460ff16155b15611d3d57600a54811115611d045760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e00006044820152606401610983565b600b54611d108361111c565b611d1a9083612b75565b1115611d385760405162461bcd60e51b815260040161098390612c59565b611e26565b6001600160a01b0382165f9081526024602052604090205460ff168015611d7c57506001600160a01b0383165f9081526023602052604090205460ff16155b15611dd357600a54811115611d385760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e00006044820152606401610983565b6001600160a01b0382165f9081526023602052604090205460ff16611e2657600b54611dfe8361111c565b611e089083612b75565b1115611e265760405162461bcd60e51b815260040161098390612c59565b5f611e303061111c565b600c5490915081108015908190611e5057506020546301000000900460ff165b8015611e5f575060205460ff16155b8015611e8357506001600160a01b0385165f9081526024602052604090205460ff16155b8015611ea757506001600160a01b0385165f9081526022602052604090205460ff16155b8015611ecb57506001600160a01b0384165f9081526022602052604090205460ff16155b15611ef0576020805460ff19166001179055611ee5612284565b6020805460ff191690555b6001600160a01b0385165f9081526022602052604081205460ff1680611f2d57506001600160a01b0385165f9081526022602052604090205460ff165b1561227157601d5443108015611f5a57506001600160a01b0386165f9081526024602052604090205460ff165b8015611f7e57506001600160a01b0385165f9081526024602052604090205460ff16155b8015611f8b57505f601954115b1561210a576001600160a01b0385165f908152601e602052604090205460ff16612029576001600160a01b0385165f908152601e60205260408120805460ff19166001908117909155601f805491929091611fe7908490612b75565b90915550506040516001600160a01b03861681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612036856063612b88565b6120409190612b9f565b601954601154919250906120549083612b88565b61205e9190612b9f565b600d80545f9061206f908490612b75565b90915550506019546012546120849083612b88565b61208e9190612b9f565b600e80545f9061209f908490612b75565b90915550506019546013546120b49083612b88565b6120be9190612b9f565b600f80545f906120cf908490612b75565b90915550506019546014546120e49083612b88565b6120ee9190612b9f565b601080545f906120ff908490612b75565b909155506122539050565b6001600160a01b0386165f9081526024602052604090205460ff16801561213257505f601954115b15612147576064601954856120369190612b88565b6001600160a01b0385165f9081526024602052604090205460ff16801561216f57505f601a54115b15612253576064601a54856121849190612b88565b61218e9190612b9f565b601a54601554919250906121a29083612b88565b6121ac9190612b9f565b600d80545f906121bd908490612b75565b9091555050601a546016546121d29083612b88565b6121dc9190612b9f565b600e80545f906121ed908490612b75565b9091555050601a546017546122029083612b88565b61220c9190612b9f565b600f80545f9061221d908490612b75565b9091555050601a546018546122329083612b88565b61223c9190612b9f565b601080545f9061224d908490612b75565b90915550505b8015612264576122648630836124ec565b61226e8185612c46565b93505b61227c8686866124ec565b505050505050565b600f541580159061229f5750600f5461229c3061111c565b10155b156122b3576122b330600d6002015461263f565b5f600f8190556122c23061111c565b601054600e54600d549293505f926122da9190612b75565b6122e49190612b75565b90508115806122f1575080155b156122fa575050565b600c5461230890603c612b88565b82111561232057600c5461231d90603c612b88565b91505b5f600282600d60030154856123359190612b88565b61233f9190612b9f565b6123499190612b9f565b905061235d6123588285612c46565b612767565b601054479081905f9061237290600290612b9f565b61237c9086612c46565b600e546123899085612b88565b6123939190612b9f565b90505f6002600d600301546123a89190612b9f565b6123b29087612c46565b600d546123bf9086612b88565b6123c99190612b9f565b90506123d58183612b75565b6123df9084612c46565b5f600d819055600e8190556010819055600f559250841580159061240257505f83115b156124115761241185846128af565b6008546040515f916001600160a01b03169083908381818185875af1925050503d805f811461245b576040519150601f19603f3d011682016040523d82523d5f602084013e612460565b606091505b50506009546040519192506001600160a01b03169047905f81818185875af1925050503d805f81146124ad576040519150601f19603f3d011682016040523d82523d5f602084013e6124b2565b606091505b5050505050505050505050565b6001600160a01b0382165f908152602460205260409020805460ff19168215151790556113c28282610f3f565b6001600160a01b0383166125125760405162461bcd60e51b815260040161098390612bbe565b6001600160a01b0382166125385760405162461bcd60e51b815260040161098390612c03565b6001600160a01b0383165f90815260208190526040902054818110156125af5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610983565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906125e5908490612b75565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161263191815260200190565b60405180910390a350505050565b6001600160a01b03821661269f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610983565b6001600160a01b0382165f90815260208190526040902054818110156127125760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610983565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611896565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061279a5761279a612c9b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128159190612caf565b8160018151811061282857612828612c9b565b6001600160a01b03928316602091820292909201015260065461284e913091168461177f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906128869085905f90869030904290600401612cca565b5f604051808303815f87803b15801561289d575f80fd5b505af115801561227c573d5f803e3d5ffd5b6006546128c79030906001600160a01b03168461177f565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612932573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906129579190612d39565b5050505050565b5f6020808352835180828501525f5b818110156129895785810183015185820160400152820161296d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e36575f80fd5b5f80604083850312156129ce575f80fd5b82356129d9816129a9565b946020939093013593505050565b5f805f80608085870312156129fa575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612a26575f80fd5b5035919050565b5f805f60608486031215612a3f575f80fd5b8335612a4a816129a9565b92506020840135612a5a816129a9565b929592945050506040919091013590565b5f60208284031215612a7b575f80fd5b8135612a86816129a9565b9392505050565b5f8060408385031215612a9e575f80fd5b8235612aa9816129a9565b915060208301358015158114612abd575f80fd5b809150509250929050565b5f8060408385031215612ad9575f80fd5b8235612ae4816129a9565b91506020830135612abd816129a9565b600181811c90821680612b0857607f821691505b602082108103612b2657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561095357610953612b61565b808202811582820484141761095357610953612b61565b5f82612bb957634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561095357610953612b61565b60208082526022908201527f43616e6e6f742065786365656420746865206d617857616c6c6574416d6f756e6040820152613a1760f11b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612cbf575f80fd5b8151612a86816129a9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612d185784516001600160a01b031683529383019391830191600101612cf3565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612d4b575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220eb9730612f8223f818b536ae0a7df8df481fe8c1c9baf83af34c2b85f5c089ec64736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102a8575f3560e01c806382aa7c681161016f578063bbc0c742116100d8578063e0f3ccf511610092578063ee40166e1161006d578063ee40166e14610856578063f2fde38b1461086b578063f5648a4f1461088a578063fabb0b4f1461089e575f80fd5b8063e0f3ccf5146107fd578063e2f456051461081f578063e4748b9e14610834575f80fd5b8063bbc0c74214610726578063c024666814610745578063c2d0ffca14610764578063c876d0b914610783578063d85ba063146107a4578063dd62ed3e146107b9575f80fd5b80639a7a23d6116101295780639a7a23d614610671578063a457c2d714610690578063a62068ce146106af578063a9059cbb146106c4578063aa4bde28146106e3578063b62496f5146106f8575f80fd5b806382aa7c68146105b057806385ecfd28146105cf578063882c3d98146105fd5780638c0b5e221461062b5780638da5cb5b1461064057806395d89b411461065d575f80fd5b8063499b8394116102115780636b0a894c116101cb5780636b0a894c146105155780636c5b28551461052a5780636ddd17131461054957806370a0823114610569578063715018a614610588578063751039fc1461059c575f80fd5b8063499b83941461047a5780634a62bb651461049957806351f205e4146104b757806358a6d531146104cb578063595cc84f146104e15780636a486a8e14610500575f80fd5b806323b872dd1161026257806323b872dd146103a1578063313ce567146103c05780633373d18f146103db578063395093511461041d578063452ed4f11461043c57806346f1f5de1461045b575f80fd5b806306fdde03146102b35780630758d924146102dd578063095ea7b314610314578063178d9b8e1461034357806318160ddd146103645780631c499ab014610382575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c76108b3565b6040516102d4919061295e565b60405180910390f35b3480156102e8575f80fd5b506006546102fc906001600160a01b031681565b6040516001600160a01b0390911681526020016102d4565b34801561031f575f80fd5b5061033361032e3660046129bd565b610943565b60405190151581526020016102d4565b34801561034e575f80fd5b5061036261035d3660046129e7565b610959565b005b34801561036f575f80fd5b506002545b6040519081526020016102d4565b34801561038d575f80fd5b5061036261039c366004612a16565b610a2b565b3480156103ac575f80fd5b506103336103bb366004612a2d565b610b39565b3480156103cb575f80fd5b50604051601281526020016102d4565b3480156103e6575f80fd5b50600d54600e54600f546010546103fd9392919084565b6040805194855260208501939093529183015260608201526080016102d4565b348015610428575f80fd5b506103336104373660046129bd565b610be1565b348015610447575f80fd5b506007546102fc906001600160a01b031681565b348015610466575f80fd5b50610362610475366004612a16565b610c1c565b348015610485575f80fd5b50610362610494366004612a6b565b610d67565b3480156104a4575f80fd5b5060205461033390610100900460ff1681565b3480156104c2575f80fd5b50610362610e39565b3480156104d6575f80fd5b50601d544310610333565b3480156104ec575f80fd5b506103626104fb366004612a8d565b610f3f565b34801561050b575f80fd5b50610374601a5481565b348015610520575f80fd5b50610374601f5481565b348015610535575f80fd5b506103626105443660046129e7565b611058565b348015610554575f80fd5b50602054610333906301000000900460ff1681565b348015610574575f80fd5b50610374610583366004612a6b565b61111c565b348015610593575f80fd5b50610362611136565b3480156105a7575f80fd5b506103626111a9565b3480156105bb575f80fd5b506103626105ca366004612a16565b61120b565b3480156105da575f80fd5b506103336105e9366004612a6b565b601e6020525f908152604090205460ff1681565b348015610608575f80fd5b50610333610617366004612a6b565b60236020525f908152604090205460ff1681565b348015610636575f80fd5b50610374600a5481565b34801561064b575f80fd5b506005546001600160a01b03166102fc565b348015610668575f80fd5b506102c76112fb565b34801561067c575f80fd5b5061036261068b366004612a8d565b61130a565b34801561069b575f80fd5b506103336106aa3660046129bd565b6113fd565b3480156106ba575f80fd5b50610374601d5481565b3480156106cf575f80fd5b506103336106de3660046129bd565b611495565b3480156106ee575f80fd5b50610374600b5481565b348015610703575f80fd5b50610333610712366004612a6b565b60246020525f908152604090205460ff1681565b348015610731575f80fd5b506020546103339062010000900460ff1681565b348015610750575f80fd5b5061036261075f366004612a8d565b6114a1565b34801561076f575f80fd5b5061036261077e366004612a16565b611529565b34801561078e575f80fd5b5060205461033390640100000000900460ff1681565b3480156107af575f80fd5b5061037460195481565b3480156107c4575f80fd5b506103746107d3366004612ac8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610808575f80fd5b506015546016546017546018546103fd9392919084565b34801561082a575f80fd5b50610374600c5481565b34801561083f575f80fd5b506011546012546013546014546103fd9392919084565b348015610861575f80fd5b50610374601b5481565b348015610876575f80fd5b50610362610885366004612a6b565b61162c565b348015610895575f80fd5b50610362611716565b3480156108a9575f80fd5b50610374601c5481565b6060600380546108c290612af4565b80601f01602080910402602001604051908101604052809291908181526020018280546108ee90612af4565b80156109395780601f1061091057610100808354040283529160200191610939565b820191905f5260205f20905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b5f61094f33848461177f565b5060015b92915050565b6005546001600160a01b0316331461098c5760405162461bcd60e51b815260040161098390612b2c565b60405180910390fd5b601184905560128390556013829055601481905580826109ac8587612b75565b6109b69190612b75565b6109c09190612b75565b6019819055601e1015610a255760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742073657420627579546f74616c4665657320686967686572207460448201526668616e2033302560c81b6064820152608401610983565b50505050565b6005546001600160a01b03163314610a555760405162461bcd60e51b815260040161098390612b2c565b670de0b6b3a76400006103e8610a6a60025490565b610a75906003612b88565b610a7f9190612b9f565b610a899190612b9f565b811015610aeb5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015269207468616e20302e332560b01b6064820152608401610983565b610afd81670de0b6b3a7640000612b88565b600b8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b5f610b458484846118a3565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610bc95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610983565b610bd6853385840361177f565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161094f918590610c17908690612b75565b61177f565b6005546001600160a01b03163314610c465760405162461bcd60e51b815260040161098390612b2c565b620186a0610c5360025490565b610c5e906001612b88565b610c689190612b9f565b811015610cd55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610983565b612710610ce160025490565b610cec906001612b88565b610cf69190612b9f565b811115610d625760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610983565b600c55565b6005546001600160a01b03163314610d915760405162461bcd60e51b815260040161098390612b2c565b6001600160a01b038116610df65760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610983565b600980546001600160a01b0319166001600160a01b038316908117909155610e1f906001610f3f565b600954610e36906001600160a01b031660016114a1565b50565b6005546001600160a01b03163314610e635760405162461bcd60e51b815260040161098390612b2c565b600c54610e6f3061111c565b1015610eed5760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152601760f91b608482015260a401610983565b6020805460ff19166001179055610f02612284565b6020805460ff191681556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32910160405180910390a1565b6005546001600160a01b03163314610f695760405162461bcd60e51b815260040161098390612b2c565b8015155f03610ff6576007546001600160a01b0390811690831603610ff65760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f7420696e636c75646520556e697377617020706169722066726f6d60448201527f206d61785478416d6f756e74207265737472696374696f6e2e000000000000006064820152608401610983565b6001600160a01b0382165f81815260236020908152604091829020805460ff19168515159081179091558251938452908301527f77a0fec448da1c340eddbf781d9ff0520a78d5a35fd142eaaec4e04a81157a0f910160405180910390a15050565b6005546001600160a01b031633146110825760405162461bcd60e51b815260040161098390612b2c565b601584905560168390556017829055601881905580826110a28587612b75565b6110ac9190612b75565b6110b69190612b75565b601a81905560631015610a255760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f74207365742073656c6c546f74616c4665657320686967686572206044820152677468616e2039392560c01b6064820152608401610983565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146111605760405162461bcd60e51b815260040161098390612b2c565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111d35760405162461bcd60e51b815260040161098390612b2c565b6020805464ff0000ff00191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b031633146112355760405162461bcd60e51b815260040161098390612b2c565b60205462010000900460ff161561128e5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207265656e61626c652074726164696e672e00000000000000006044820152606401610983565b6020805463ffff00001916630101000017905543601b555f8190036112b7576001601c556112bd565b601c8190555b601c54601b546112cd9190612b75565b601d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6060600480546108c290612af4565b6005546001600160a01b031633146113345760405162461bcd60e51b815260040161098390612b2c565b6007546001600160a01b03908116908316036113b85760405162461bcd60e51b815260206004820152603a60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972732e0000000000006064820152608401610983565b6113c282826124bf565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561147e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610983565b61148b338585840361177f565b5060019392505050565b5f61094f3384846118a3565b6005546001600160a01b031633146114cb5760405162461bcd60e51b815260040161098390612b2c565b6001600160a01b0382165f81815260226020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb910160405180910390a25050565b6005546001600160a01b031633146115535760405162461bcd60e51b815260040161098390612b2c565b670de0b6b3a76400006103e861156860025490565b611573906002612b88565b61157d9190612b9f565b6115879190612b9f565b8110156115e55760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468616044820152656e20302e322560d01b6064820152608401610983565b6115f781670de0b6b3a7640000612b88565b600a8190556040519081527f9f5e246af7c18550ffbb625af523d90c3be8c2f4c33faede31f8005c517200fa90602001610b2e565b6005546001600160a01b031633146116565760405162461bcd60e51b815260040161098390612b2c565b6001600160a01b0381166116bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610983565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117405760405162461bcd60e51b815260040161098390612b2c565b6040515f90339047908381818185875af1925050503d805f8114610a25576040519150601f19603f3d011682016040523d82523d5f602084013e610a25565b6001600160a01b0383166117e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610983565b6001600160a01b0382166118425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610983565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118c95760405162461bcd60e51b815260040161098390612bbe565b6001600160a01b0382166118ef5760405162461bcd60e51b815260040161098390612c03565b5f811161193e5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610983565b60205462010000900460ff166119d0576001600160a01b0383165f9081526022602052604090205460ff168061198b57506001600160a01b0382165f9081526022602052604090205460ff165b6119d05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610983565b601d5415611aa2576001600160a01b0383165f908152601e602052604090205460ff161580611a0c57506005546001600160a01b038381169116145b80611a2157506001600160a01b03821661dead145b611aa25760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610983565b602054610100900460ff1615611e26576005546001600160a01b03848116911614801590611ade57506005546001600160a01b03838116911614155b8015611af257506001600160a01b03821615155b8015611b0957506001600160a01b03821661dead14155b8015611b2d57506001600160a01b0383165f9081526022602052604090205460ff16155b8015611b5157506001600160a01b0382165f9081526022602052604090205460ff16155b15611e2657602054640100000000900460ff1615611c6e576006546001600160a01b03838116911614801590611b9557506007546001600160a01b03838116911614155b15611c6e57611ba5600243612c46565b325f90815260216020526040902054108015611be15750611bc7600243612c46565b6001600160a01b0383165f90815260216020526040902054105b611c4a5760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a3a205472616e736665722064656c617920656e61626c60448201527332b217102a393c9030b3b0b4b7103630ba32b91760611b6064820152608401610983565b325f9081526021602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526024602052604090205460ff168015611cad57506001600160a01b0382165f9081526023602052604090205460ff16155b15611d3d57600a54811115611d045760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e00006044820152606401610983565b600b54611d108361111c565b611d1a9083612b75565b1115611d385760405162461bcd60e51b815260040161098390612c59565b611e26565b6001600160a01b0382165f9081526024602052604090205460ff168015611d7c57506001600160a01b0383165f9081526023602052604090205460ff16155b15611dd357600a54811115611d385760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e00006044820152606401610983565b6001600160a01b0382165f9081526023602052604090205460ff16611e2657600b54611dfe8361111c565b611e089083612b75565b1115611e265760405162461bcd60e51b815260040161098390612c59565b5f611e303061111c565b600c5490915081108015908190611e5057506020546301000000900460ff165b8015611e5f575060205460ff16155b8015611e8357506001600160a01b0385165f9081526024602052604090205460ff16155b8015611ea757506001600160a01b0385165f9081526022602052604090205460ff16155b8015611ecb57506001600160a01b0384165f9081526022602052604090205460ff16155b15611ef0576020805460ff19166001179055611ee5612284565b6020805460ff191690555b6001600160a01b0385165f9081526022602052604081205460ff1680611f2d57506001600160a01b0385165f9081526022602052604090205460ff165b1561227157601d5443108015611f5a57506001600160a01b0386165f9081526024602052604090205460ff165b8015611f7e57506001600160a01b0385165f9081526024602052604090205460ff16155b8015611f8b57505f601954115b1561210a576001600160a01b0385165f908152601e602052604090205460ff16612029576001600160a01b0385165f908152601e60205260408120805460ff19166001908117909155601f805491929091611fe7908490612b75565b90915550506040516001600160a01b03861681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612036856063612b88565b6120409190612b9f565b601954601154919250906120549083612b88565b61205e9190612b9f565b600d80545f9061206f908490612b75565b90915550506019546012546120849083612b88565b61208e9190612b9f565b600e80545f9061209f908490612b75565b90915550506019546013546120b49083612b88565b6120be9190612b9f565b600f80545f906120cf908490612b75565b90915550506019546014546120e49083612b88565b6120ee9190612b9f565b601080545f906120ff908490612b75565b909155506122539050565b6001600160a01b0386165f9081526024602052604090205460ff16801561213257505f601954115b15612147576064601954856120369190612b88565b6001600160a01b0385165f9081526024602052604090205460ff16801561216f57505f601a54115b15612253576064601a54856121849190612b88565b61218e9190612b9f565b601a54601554919250906121a29083612b88565b6121ac9190612b9f565b600d80545f906121bd908490612b75565b9091555050601a546016546121d29083612b88565b6121dc9190612b9f565b600e80545f906121ed908490612b75565b9091555050601a546017546122029083612b88565b61220c9190612b9f565b600f80545f9061221d908490612b75565b9091555050601a546018546122329083612b88565b61223c9190612b9f565b601080545f9061224d908490612b75565b90915550505b8015612264576122648630836124ec565b61226e8185612c46565b93505b61227c8686866124ec565b505050505050565b600f541580159061229f5750600f5461229c3061111c565b10155b156122b3576122b330600d6002015461263f565b5f600f8190556122c23061111c565b601054600e54600d549293505f926122da9190612b75565b6122e49190612b75565b90508115806122f1575080155b156122fa575050565b600c5461230890603c612b88565b82111561232057600c5461231d90603c612b88565b91505b5f600282600d60030154856123359190612b88565b61233f9190612b9f565b6123499190612b9f565b905061235d6123588285612c46565b612767565b601054479081905f9061237290600290612b9f565b61237c9086612c46565b600e546123899085612b88565b6123939190612b9f565b90505f6002600d600301546123a89190612b9f565b6123b29087612c46565b600d546123bf9086612b88565b6123c99190612b9f565b90506123d58183612b75565b6123df9084612c46565b5f600d819055600e8190556010819055600f559250841580159061240257505f83115b156124115761241185846128af565b6008546040515f916001600160a01b03169083908381818185875af1925050503d805f811461245b576040519150601f19603f3d011682016040523d82523d5f602084013e612460565b606091505b50506009546040519192506001600160a01b03169047905f81818185875af1925050503d805f81146124ad576040519150601f19603f3d011682016040523d82523d5f602084013e6124b2565b606091505b5050505050505050505050565b6001600160a01b0382165f908152602460205260409020805460ff19168215151790556113c28282610f3f565b6001600160a01b0383166125125760405162461bcd60e51b815260040161098390612bbe565b6001600160a01b0382166125385760405162461bcd60e51b815260040161098390612c03565b6001600160a01b0383165f90815260208190526040902054818110156125af5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610983565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906125e5908490612b75565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161263191815260200190565b60405180910390a350505050565b6001600160a01b03821661269f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610983565b6001600160a01b0382165f90815260208190526040902054818110156127125760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610983565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611896565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061279a5761279a612c9b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128159190612caf565b8160018151811061282857612828612c9b565b6001600160a01b03928316602091820292909201015260065461284e913091168461177f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906128869085905f90869030904290600401612cca565b5f604051808303815f87803b15801561289d575f80fd5b505af115801561227c573d5f803e3d5ffd5b6006546128c79030906001600160a01b03168461177f565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612932573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906129579190612d39565b5050505050565b5f6020808352835180828501525f5b818110156129895785810183015185820160400152820161296d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e36575f80fd5b5f80604083850312156129ce575f80fd5b82356129d9816129a9565b946020939093013593505050565b5f805f80608085870312156129fa575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612a26575f80fd5b5035919050565b5f805f60608486031215612a3f575f80fd5b8335612a4a816129a9565b92506020840135612a5a816129a9565b929592945050506040919091013590565b5f60208284031215612a7b575f80fd5b8135612a86816129a9565b9392505050565b5f8060408385031215612a9e575f80fd5b8235612aa9816129a9565b915060208301358015158114612abd575f80fd5b809150509250929050565b5f8060408385031215612ad9575f80fd5b8235612ae4816129a9565b91506020830135612abd816129a9565b600181811c90821680612b0857607f821691505b602082108103612b2657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561095357610953612b61565b808202811582820484141761095357610953612b61565b5f82612bb957634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561095357610953612b61565b60208082526022908201527f43616e6e6f742065786365656420746865206d617857616c6c6574416d6f756e6040820152613a1760f11b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612cbf575f80fd5b8151612a86816129a9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612d185784516001600160a01b031683529383019391830191600101612cf3565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612d4b575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220eb9730612f8223f818b536ae0a7df8df481fe8c1c9baf83af34c2b85f5c089ec64736f6c63430008140033

Deployed Bytecode Sourcemap

7272:14497:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1668:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7314:27;;;;;;;;;;-1:-1:-1;7314:27:0;;;;-1:-1:-1;;;;;7314:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;7314:27:0;567:221:1;2488:169:0;;;;;;;;;;-1:-1:-1;2488:169:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;2488:169:0;1249:187:1;12635:484:0;;;;;;;;;;-1:-1:-1;12635:484:0;;;;;:::i;:::-;;:::i;:::-;;1941:94;;;;;;;;;;-1:-1:-1;2020:12:0;;1941:94;;;1977:25:1;;;1965:2;1950:18;1941:94:0;1831:177:1;11996:285:0;;;;;;;;;;-1:-1:-1;11996:285:0;;;;;:::i;:::-;;:::i;2665:454::-;;;;;;;;;;-1:-1:-1;2665:454:0;;;;;:::i;:::-;;:::i;1856:79::-;;;;;;;;;;-1:-1:-1;1856:79:0;;1930:2;2801:36:1;;2789:2;2774:18;1856:79:0;2659:184:1;7637:20:0;;;;;;;;;;-1:-1:-1;7637:20:0;;;;;;;;;;;;;;;;;;;3079:25:1;;;3135:2;3120:18;;3113:34;;;;3163:18;;;3156:34;3221:2;3206:18;;3199:34;3066:3;3051:19;7637:20:0;2848:391:1;3127:215:0;;;;;;;;;;-1:-1:-1;3127:215:0;;;;;:::i;:::-;;:::i;7348:21::-;;;;;;;;;;-1:-1:-1;7348:21:0;;;;-1:-1:-1;;;;;7348:21:0;;;12289:338;;;;;;;;;;-1:-1:-1;12289:338:0;;;;;:::i;:::-;;:::i;10416:346::-;;;;;;;;;;-1:-1:-1;10416:346:0;;;;;:::i;:::-;;:::i;8019:34::-;;;;;;;;;;-1:-1:-1;8019:34:0;;;;;;;;;;;13931:313;;;;;;;;;;;;;:::i;18993:121::-;;;;;;;;;;-1:-1:-1;19088:18:0;;19073:12;:33;18993:121;;11394:321;;;;;;;;;;-1:-1:-1;11394:321:0;;;;;:::i;:::-;;:::i;7749:28::-;;;;;;;;;;;;;;;;7957:25;;;;;;;;;;;;;;;;13127:485;;;;;;;;;;-1:-1:-1;13127:485:0;;;;;:::i;:::-;;:::i;8102:35::-;;;;;;;;;;-1:-1:-1;8102:35:0;;;;;;;;;;;2041:113;;;;;;;;;;-1:-1:-1;2041:113:0;;;;;:::i;:::-;;:::i;6011:150::-;;;;;;;;;;;;;:::i;14420:154::-;;;;;;;;;;;;;:::i;10770:419::-;;;;;;;;;;-1:-1:-1;10770:419:0;;;;;:::i;:::-;;:::i;7906:44::-;;;;;;;;;;-1:-1:-1;7906:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8330:49;;;;;;;;;;-1:-1:-1;8330:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7437:26;;;;;;;;;;;;;;;;5797:79;;;;;;;;;;-1:-1:-1;5862:6:0;;-1:-1:-1;;;;;5862:6:0;5797:79;;1760:90;;;;;;;;;;;;;:::i;13620:303::-;;;;;;;;;;-1:-1:-1;13620:303:0;;;;;:::i;:::-;;:::i;3350:411::-;;;;;;;;;;-1:-1:-1;3350:411:0;;;;;:::i;:::-;;:::i;7866:33::-;;;;;;;;;;;;;;;;2305:175;;;;;;;;;;-1:-1:-1;2305:175:0;;;;;:::i;:::-;;:::i;7470:30::-;;;;;;;;;;;;;;;;8388:58;;;;;;;;;;-1:-1:-1;8388:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8060:35;;;;;;;;;;-1:-1:-1;8060:35:0;;;;;;;;;;;11197:189;;;;;;;;;;-1:-1:-1;11197:189:0;;;;;:::i;:::-;;:::i;11723:265::-;;;;;;;;;;-1:-1:-1;11723:265:0;;;;;:::i;:::-;;:::i;8147:39::-;;;;;;;;;;-1:-1:-1;8147:39:0;;;;;;;;;;;7715:27;;;;;;;;;;;;;;;;2160:137;;;;;;;;;;-1:-1:-1;2160:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;2267:18:0;;;2249:7;2267:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2160:137;7689:19;;;;;;;;;;-1:-1:-1;7689:19:0;;;;;;;;;;;;;;;7507:33;;;;;;;;;;;;;;;;7664:18;;;;;;;;;;-1:-1:-1;7664:18:0;;;;;;;;;;;;;;;7786:37;;;;;;;;;;;;;;;;6169:244;;;;;;;;;;-1:-1:-1;6169:244:0;;;;;:::i;:::-;;:::i;14252:160::-;;;;;;;;;;;;;:::i;7830:29::-;;;;;;;;;;;;;;;;1668:86;1722:13;1746:5;1739:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1668:86;:::o;2488:169::-;2571:4;2588:39;215:10;2611:7;2620:6;2588:8;:39::i;:::-;-1:-1:-1;2645:4:0;2488:169;;;;;:::o;12635:484::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;;;;;;;;;12767:7:::1;:29:::0;;;12807:18;:36;;;12854:12;:30;;;12895:17;:35;;;12917:13;12876:8;12963:32:::1;12829:14:::0;12789:7;12963:32:::1;:::i;:::-;:47;;;;:::i;:::-;:67;;;;:::i;:::-;12941:12;:89:::0;;;13065:2:::1;-1:-1:-1::0;13049:18:0::1;13041:70;;;::::0;-1:-1:-1;;;13041:70:0;;5728:2:1;13041:70:0::1;::::0;::::1;5710:21:1::0;5767:2;5747:18;;;5740:30;5806:34;5786:18;;;5779:62;-1:-1:-1;;;5857:18:1;;;5850:37;5904:19;;13041:70:0::1;5526:403:1::0;13041:70:0::1;12635:484:::0;;;;:::o;11996:285::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;12121:4:::1;12114:3;12094:13;2020:12:::0;;;1941:94;12094:13:::1;:17;::::0;12110:1:::1;12094:17;:::i;:::-;:23;;;;:::i;:::-;12093:32;;;;:::i;:::-;12079:10;:46;;12071:101;;;::::0;-1:-1:-1;;;12071:101:0;;6531:2:1;12071:101:0::1;::::0;::::1;6513:21:1::0;6570:2;6550:18;;;6543:30;6609:34;6589:18;;;6582:62;-1:-1:-1;;;6660:18:1;;;6653:40;6710:19;;12071:101:0::1;6329:406:1::0;12071:101:0::1;12201:17;:10:::0;12214:4:::1;12201:17;:::i;:::-;12183:15;:35:::0;;;12234:39:::1;::::0;1977:25:1;;;12234:39:0::1;::::0;1965:2:1;1950:18;12234:39:0::1;;;;;;;;11996:285:::0;:::o;2665:454::-;2771:4;2788:36;2798:6;2806:9;2817:6;2788:9;:36::i;:::-;-1:-1:-1;;;;;2862:19:0;;2835:24;2862:19;;;:11;:19;;;;;;;;215:10;2862:33;;;;;;;;2914:26;;;;2906:79;;;;-1:-1:-1;;;2906:79:0;;6942:2:1;2906:79:0;;;6924:21:1;6981:2;6961:18;;;6954:30;7020:34;7000:18;;;6993:62;-1:-1:-1;;;7071:18:1;;;7064:38;7119:19;;2906:79:0;6740:404:1;2906:79:0;3021:57;3030:6;215:10;3071:6;3052:16;:25;3021:8;:57::i;:::-;-1:-1:-1;3107:4:0;;2665:454;-1:-1:-1;;;;2665:454:0:o;3127:215::-;215:10;3215:4;3264:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3264:34:0;;;;;;;;;;3215:4;;3232:80;;3255:7;;3264:47;;3301:10;;3264:47;:::i;:::-;3232:8;:80::i;12289:338::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;12406:3:::1;12386:13;2020:12:::0;;;1941:94;12386:13:::1;:17;::::0;12402:1:::1;12386:17;:::i;:::-;:23;;;;:::i;:::-;12372:10;:37;;12364:103;;;::::0;-1:-1:-1;;;12364:103:0;;7351:2:1;12364:103:0::1;::::0;::::1;7333:21:1::0;7390:2;7370:18;;;7363:30;7429:34;7409:18;;;7402:62;-1:-1:-1;;;7480:18:1;;;7473:51;7541:19;;12364:103:0::1;7149:417:1::0;12364:103:0::1;12519:3;12499:13;2020:12:::0;;;1941:94;12499:13:::1;:17;::::0;12515:1:::1;12499:17;:::i;:::-;:23;;;;:::i;:::-;12485:10;:37;;12477:102;;;::::0;-1:-1:-1;;;12477:102:0;;7773:2:1;12477:102:0::1;::::0;::::1;7755:21:1::0;7812:2;7792:18;;;7785:30;7851:34;7831:18;;;7824:62;-1:-1:-1;;;7902:18:1;;;7895:50;7962:19;;12477:102:0::1;7571:416:1::0;12477:102:0::1;12589:18;:31:::0;12289:338::o;10416:346::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10512:32:0;::::1;10504:83;;;::::0;-1:-1:-1;;;10504:83:0;;8194:2:1;10504:83:0::1;::::0;::::1;8176:21:1::0;8233:2;8213:18;;;8206:30;8272:34;8252:18;;;8245:62;-1:-1:-1;;;8323:18:1;;;8316:36;8369:19;;10504:83:0::1;7992:402:1::0;10504:83:0::1;10598:17;:47:::0;;-1:-1:-1;;;;;;10598:47:0::1;-1:-1:-1::0;;;;;10598:47:0;::::1;::::0;;::::1;::::0;;;10656::::1;::::0;-1:-1:-1;10656:22:0::1;:47::i;:::-;10730:17;::::0;10714:40:::1;::::0;-1:-1:-1;;;;;10730:17:0::1;::::0;10714:15:::1;:40::i;:::-;10416:346:::0;:::o;13931:313::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;14022:18:::1;;13994:24;14012:4;13994:9;:24::i;:::-;:46;;13986:124;;;::::0;-1:-1:-1;;;13986:124:0;;8601:2:1;13986:124:0::1;::::0;::::1;8583:21:1::0;8640:2;8620:18;;;8613:30;8679:34;8659:18;;;8652:62;8750:34;8730:18;;;8723:62;-1:-1:-1;;;8801:19:1;;;8794:32;8843:19;;13986:124:0::1;8399:469:1::0;13986:124:0::1;14121:8;:15:::0;;-1:-1:-1;;14121:15:0::1;14132:4;14121:15;::::0;;14147:10:::1;:8;:10::i;:::-;14168:8;:16:::0;;-1:-1:-1;;14168:16:0::1;::::0;;14200:36:::1;::::0;14220:15:::1;1977:25:1::0;;14200:36:0::1;::::0;1950:18:1;14200:36:0::1;;;;;;;13931:313::o:0;11394:321::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;11492:18;::::1;;11505:5;11492:18:::0;11488:117:::1;;11534:6;::::0;-1:-1:-1;;;;;11534:6:0;;::::1;11522:18:::0;;::::1;::::0;11514:88:::1;;;::::0;-1:-1:-1;;;11514:88:0;;9075:2:1;11514:88:0::1;::::0;::::1;9057:21:1::0;9114:2;9094:18;;;9087:30;9153:34;9133:18;;;9126:62;9224:27;9204:18;;;9197:55;9269:19;;11514:88:0::1;8873:421:1::0;11514:88:0::1;-1:-1:-1::0;;;;;11615:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;;;;:38;;-1:-1:-1;;11615:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11669;;9467:51:1;;;9534:18;;;9527:50;11669:38:0::1;::::0;9440:18:1;11669:38:0::1;;;;;;;11394:321:::0;;:::o;13127:485::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;13260:8:::1;:29:::0;;;13300:19;:36;;;13347:13;:30;;;13388:18;:35;;;13410:13;13369:8;13450:34:::1;13322:14:::0;13282:7;13450:34:::1;:::i;:::-;:50;;;;:::i;:::-;:71;;;;:::i;:::-;13434:13;:87:::0;;;13557:2:::1;-1:-1:-1::0;13540:19:0::1;13532:72;;;::::0;-1:-1:-1;;;13532:72:0;;9790:2:1;13532:72:0::1;::::0;::::1;9772:21:1::0;9829:2;9809:18;;;9802:30;9868:34;9848:18;;;9841:62;-1:-1:-1;;;9919:18:1;;;9912:38;9967:19;;13532:72:0::1;9588:404:1::0;2041:113:0;-1:-1:-1;;;;;2133:18:0;2115:7;2133:18;;;;;;;;;;;;2041:113::o;6011:150::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;6104:6:::1;::::0;6083:40:::1;::::0;6120:1:::1;::::0;-1:-1:-1;;;;;6104:6:0::1;::::0;6083:40:::1;::::0;6120:1;;6083:40:::1;6134:6;:19:::0;;-1:-1:-1;;;;;;6134:19:0::1;::::0;;6011:150::o;14420:154::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;14474:14:::1;:22:::0;;-1:-1:-1;;14507:28:0;;;14551:15:::1;::::0;::::1;::::0;14491:5:::1;::::0;14551:15:::1;14420:154::o:0;10770:419::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;10853:13:::1;::::0;;;::::1;;;10852:14;10844:51;;;::::0;-1:-1:-1;;;10844:51:0;;10199:2:1;10844:51:0::1;::::0;::::1;10181:21:1::0;10238:2;10218:18;;;10211:30;10277:26;10257:18;;;10250:54;10321:18;;10844:51:0::1;9997:348:1::0;10844:51:0::1;10906:13;:20:::0;;-1:-1:-1;;10937:18:0;;;;;10987:12:::1;10966:18;:33:::0;-1:-1:-1;11014:16:0;;;11010:76:::1;;11045:1;11032:10;:14:::0;11010:76:::1;;;11062:10;:24:::0;;;11010:76:::1;11139:10;;11118:18;;:31;;;;:::i;:::-;11097:18;:52:::0;11165:16:::1;::::0;::::1;::::0;;;::::1;10770:419:::0;:::o;1760:90::-;1816:13;1840:7;1833:14;;;;;:::i;13620:303::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;13732:6:::1;::::0;-1:-1:-1;;;;;13732:6:0;;::::1;13723:15:::0;;::::1;::::0;13715:86:::1;;;::::0;-1:-1:-1;;;13715:86:0;;10552:2:1;13715:86:0::1;::::0;::::1;10534:21:1::0;10591:2;10571:18;;;10564:30;10630:34;10610:18;;;10603:62;10701:28;10681:18;;;10674:56;10747:19;;13715:86:0::1;10350:422:1::0;13715:86:0::1;13814:43;13843:5;13850:6;13814:28;:43::i;:::-;13873:42;::::0;;::::1;;::::0;-1:-1:-1;;;;;13873:42:0;::::1;::::0;::::1;::::0;;;::::1;13620:303:::0;;:::o;3350:411::-;215:10;3443:4;3487:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3487:34:0;;;;;;;;;;3540:35;;;;3532:85;;;;-1:-1:-1;;;3532:85:0;;10979:2:1;3532:85:0;;;10961:21:1;11018:2;10998:18;;;10991:30;11057:34;11037:18;;;11030:62;-1:-1:-1;;;11108:18:1;;;11101:35;11153:19;;3532:85:0;10777:401:1;3532:85:0;3653:67;215:10;3676:7;3704:15;3685:16;:34;3653:8;:67::i;:::-;-1:-1:-1;3749:4:0;;3350:411;-1:-1:-1;;;3350:411:0:o;2305:175::-;2391:4;2408:42;215:10;2432:9;2443:6;2408:9;:42::i;11197:189::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11284:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;;;:41;;-1:-1:-1;;11284:41:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11341:37;;1389:41:1;;;11341:37:0::1;::::0;1362:18:1;11341:37:0::1;;;;;;;11197:189:::0;;:::o;11723:265::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;11844:4:::1;11837:3;11817:13;2020:12:::0;;;1941:94;11817:13:::1;:17;::::0;11833:1:::1;11817:17;:::i;:::-;:23;;;;:::i;:::-;11816:32;;;;:::i;:::-;11802:10;:46;;11794:97;;;::::0;-1:-1:-1;;;11794:97:0;;11385:2:1;11794:97:0::1;::::0;::::1;11367:21:1::0;11424:2;11404:18;;;11397:30;11463:34;11443:18;;;11436:62;-1:-1:-1;;;11514:18:1;;;11507:36;11560:19;;11794:97:0::1;11183:402:1::0;11794:97:0::1;11916:17;:10:::0;11929:4:::1;11916:17;:::i;:::-;11902:11;:31:::0;;;11949::::1;::::0;1977:25:1;;;11949:31:0::1;::::0;1965:2:1;1950:18;11949:31:0::1;1831:177:1::0;6169:244:0;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6258:22:0;::::1;6250:73;;;::::0;-1:-1:-1;;;6250:73:0;;11792:2:1;6250:73:0::1;::::0;::::1;11774:21:1::0;11831:2;11811:18;;;11804:30;11870:34;11850:18;;;11843:62;-1:-1:-1;;;11921:18:1;;;11914:36;11967:19;;6250:73:0::1;11590:402:1::0;6250:73:0::1;6360:6;::::0;6339:38:::1;::::0;-1:-1:-1;;;;;6339:38:0;;::::1;::::0;6360:6:::1;::::0;6339:38:::1;::::0;6360:6:::1;::::0;6339:38:::1;6388:6;:17:::0;;-1:-1:-1;;;;;;6388:17:0::1;-1:-1:-1::0;;;;;6388:17:0;;;::::1;::::0;;;::::1;::::0;;6169:244::o;14252:160::-;5924:6;;-1:-1:-1;;;;;5924:6:0;215:10;5924:22;5916:67;;;;-1:-1:-1;;;5916:67:0;;;;;;;:::i;:::-;14346:58:::1;::::0;14310:12:::1;::::0;14354:10:::1;::::0;14378:21:::1;::::0;14310:12;14346:58;14310:12;14346:58;14378:21;14354:10;14346:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5126:344:::0;-1:-1:-1;;;;;5228:19:0;;5220:68;;;;-1:-1:-1;;;5220:68:0;;12409:2:1;5220:68:0;;;12391:21:1;12448:2;12428:18;;;12421:30;12487:34;12467:18;;;12460:62;-1:-1:-1;;;12538:18:1;;;12531:34;12582:19;;5220:68:0;12207:400:1;5220:68:0;-1:-1:-1;;;;;5307:21:0;;5299:68;;;;-1:-1:-1;;;5299:68:0;;12814:2:1;5299:68:0;;;12796:21:1;12853:2;12833:18;;;12826:30;12892:34;12872:18;;;12865:62;-1:-1:-1;;;12943:18:1;;;12936:32;12985:19;;5299:68:0;12612:398:1;5299:68:0;-1:-1:-1;;;;;5378:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5430:32;;1977:25:1;;;5430:32:0;;1950:18:1;5430:32:0;;;;;;;;5126:344;;;:::o;14594:4391::-;-1:-1:-1;;;;;14692:18:0;;14684:68;;;;-1:-1:-1;;;14684:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14771:16:0;;14763:64;;;;-1:-1:-1;;;14763:64:0;;;;;;;:::i;:::-;14855:1;14846:6;:10;14838:52;;;;-1:-1:-1;;;14838:52:0;;14027:2:1;14838:52:0;;;14009:21:1;14066:2;14046:18;;;14039:30;14105:31;14085:18;;;14078:59;14154:18;;14838:52:0;13825:353:1;14838:52:0;14908:13;;;;;;;14903:134;;-1:-1:-1;;;;;14946:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14975:23:0;;;;;;:19;:23;;;;;;;;14946:52;14938:87;;;;-1:-1:-1;;;14938:87:0;;14385:2:1;14938:87:0;;;14367:21:1;14424:2;14404:18;;;14397:30;-1:-1:-1;;;14443:18:1;;;14436:52;14505:18;;14938:87:0;14183:346:1;14938:87:0;15053:18;;:22;15049:198;;-1:-1:-1;;;;;15101:17:0;;;;;;:11;:17;;;;;;;;15100:18;;:35;;-1:-1:-1;5862:6:0;;-1:-1:-1;;;;;15122:13:0;;;5862:6;;15122:13;15100:35;:60;;;-1:-1:-1;;;;;;15139:21:0;;15153:6;15139:21;15100:60;15092:143;;;;-1:-1:-1;;;15092:143:0;;14736:2:1;15092:143:0;;;14718:21:1;14775:2;14755:18;;;14748:30;14814:34;14794:18;;;14787:62;14885:34;14865:18;;;14858:62;-1:-1:-1;;;14936:19:1;;;14929:37;14983:19;;15092:143:0;14534:474:1;15092:143:0;15263:14;;;;;;;15259:1420;;;5862:6;;-1:-1:-1;;;;;15298:15:0;;;5862:6;;15298:15;;;;:32;;-1:-1:-1;5862:6:0;;-1:-1:-1;;;;;15317:13:0;;;5862:6;;15317:13;;15298:32;:52;;;;-1:-1:-1;;;;;;15334:16:0;;;;15298:52;:77;;;;-1:-1:-1;;;;;;15354:21:0;;15368:6;15354:21;;15298:77;:107;;;;-1:-1:-1;;;;;;15380:25:0;;;;;;:19;:25;;;;;;;;15379:26;15298:107;:135;;;;-1:-1:-1;;;;;;15410:23:0;;;;;;:19;:23;;;;;;;;15409:24;15298:135;15294:1374;;;15458:20;;;;;;;15454:507;;;15521:9;;-1:-1:-1;;;;;15507:24:0;;;15521:9;;15507:24;;;;:49;;-1:-1:-1;15549:6:0;;-1:-1:-1;;;;;15535:21:0;;;15549:6;;15535:21;;15507:49;15503:439;;;15635:16;15650:1;15635:12;:16;:::i;:::-;15622:9;15593:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;15690:16:0;15705:1;15690:12;:16;:::i;:::-;-1:-1:-1;;;;;15655:32:0;;;;;;:28;:32;;;;;;:51;15593:113;15585:178;;;;-1:-1:-1;;;15585:178:0;;15348:2:1;15585:178:0;;;15330:21:1;15387:2;15367:18;;;15360:30;15426:34;15406:18;;;15399:62;-1:-1:-1;;;15477:18:1;;;15470:50;15537:19;;15585:178:0;15146:416:1;15585:178:0;15819:9;15790:39;;;;:28;:39;;;;;;15832:12;15790:54;;;;-1:-1:-1;;;;;15871:32:0;;;;;;:47;15503:439;-1:-1:-1;;;;;15989:31:0;;;;;;:25;:31;;;;;;;;:56;;;;-1:-1:-1;;;;;;16025:20:0;;;;;;:16;:20;;;;;;;;16024:21;15989:56;15985:668;;;16095:11;;16085:6;:21;;16077:64;;;;-1:-1:-1;;;16077:64:0;;15769:2:1;16077:64:0;;;15751:21:1;15808:2;15788:18;;;15781:30;15847:32;15827:18;;;15820:60;15897:18;;16077:64:0;15567:354:1;16077:64:0;16198:15;;16181:13;16191:2;16181:9;:13::i;:::-;16172:22;;:6;:22;:::i;:::-;:41;;16164:88;;;;-1:-1:-1;;;16164:88:0;;;;;;;:::i;:::-;15985:668;;;-1:-1:-1;;;;;16299:29:0;;;;;;:25;:29;;;;;;;;:56;;;;-1:-1:-1;;;;;;16333:22:0;;;;;;:16;:22;;;;;;;;16332:23;16299:56;16295:358;;;16406:11;;16396:6;:21;;16388:64;;;;-1:-1:-1;;;16388:64:0;;15769:2:1;16388:64:0;;;15751:21:1;15808:2;15788:18;;;15781:30;15847:32;15827:18;;;15820:60;15897:18;;16388:64:0;15567:354:1;16295:358:0;-1:-1:-1;;;;;16500:20:0;;;;;;:16;:20;;;;;;;;16495:158;;16579:15;;16562:13;16572:2;16562:9;:13::i;:::-;16553:22;;:6;:22;:::i;:::-;:41;;16545:88;;;;-1:-1:-1;;;16545:88:0;;;;;;;:::i;:::-;16691:28;16722:24;16740:4;16722:9;:24::i;:::-;16798:18;;16691:55;;-1:-1:-1;16774:42:0;;;;;;;16833:22;;-1:-1:-1;16844:11:0;;;;;;;16833:22;:35;;;;-1:-1:-1;16860:8:0;;;;16859:9;16833:35;:71;;;;-1:-1:-1;;;;;;16873:31:0;;;;;;:25;:31;;;;;;;;16872:32;16833:71;:101;;;;-1:-1:-1;;;;;;16909:25:0;;;;;;:19;:25;;;;;;;;16908:26;16833:101;:129;;;;-1:-1:-1;;;;;;16939:23:0;;;;;;:19;:23;;;;;;;;16938:24;16833:129;16829:233;;;16979:8;:15;;-1:-1:-1;;16979:15:0;16990:4;16979:15;;;17009:10;:8;:10::i;:::-;17034:8;:16;;-1:-1:-1;;17034:16:0;;;16829:233;-1:-1:-1;;;;;17105:25:0;;17074:12;17105:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17134:23:0;;;;;;:19;:23;;;;;;;;17105:52;17101:1831;;;19088:18;;19073:12;:33;17189:60;;;;-1:-1:-1;;;;;;17218:31:0;;;;;;:25;:31;;;;;;;;17189:60;:94;;;;-1:-1:-1;;;;;;17254:29:0;;;;;;:25;:29;;;;;;;;17253:30;17189:94;:114;;;;;17302:1;17287:12;;:16;17189:114;17185:1601;;;-1:-1:-1;;;;;17343:15:0;;;;;;:11;:15;;;;;;;;17338:173;;-1:-1:-1;;;;;17383:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;17383:22:0;17401:4;17383:22;;;;;;17428:10;:15;;17401:4;;17428:10;;:15;;17401:4;;17428:15;:::i;:::-;;;;-1:-1:-1;;17471:20:0;;-1:-1:-1;;;;;749:32:1;;731:51;;17471:20:0;;719:2:1;704:18;17471:20:0;;;;;;;17338:173;17552:3;17538:11;:6;17547:2;17538:11;:::i;:::-;:17;;;;:::i;:::-;17609:12;;17595:7;:11;17531:24;;-1:-1:-1;17609:12:0;17588:18;;17531:24;17588:18;:::i;:::-;:33;;;;:::i;:::-;17571:9;:50;;:13;;:50;;;;;:::i;:::-;;;;-1:-1:-1;;17692:12:0;;17671:18;;17664:25;;:4;:25;:::i;:::-;:40;;;;:::i;:::-;17640:20;:64;;:20;;:64;;;;;:::i;:::-;;;;-1:-1:-1;;17763:12:0;;17748;;17741:19;;:4;:19;:::i;:::-;:34;;;;:::i;:::-;17723:14;:52;;:14;;:52;;;;;:::i;:::-;;;;-1:-1:-1;;17844:12:0;;17824:17;;17817:24;;:4;:24;:::i;:::-;:39;;;;:::i;:::-;17794:19;:62;;:19;;:62;;;;;:::i;:::-;;;;-1:-1:-1;17185:1601:0;;-1:-1:-1;17185:1601:0;;-1:-1:-1;;;;;17894:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;17944:1;17929:12;;:16;17894:51;17891:895;;;18001:3;17986:12;;17977:6;:21;;;;:::i;17891:895::-;-1:-1:-1;;;;;18344:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;18393:1;18377:13;;:17;18344:50;18340:446;;;18455:3;18439:13;;18430:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;18516:13;;18501:8;:12;18423:35;;-1:-1:-1;18516:13:0;18494:19;;18423:35;18494:19;:::i;:::-;:35;;;;:::i;:::-;18477:9;:52;;:13;;:52;;;;;:::i;:::-;;;;-1:-1:-1;;18601:13:0;;18579:19;;18572:26;;:4;:26;:::i;:::-;:42;;;;:::i;:::-;18548:20;:66;;:20;;:66;;;;;:::i;:::-;;;;-1:-1:-1;;18674:13:0;;18658;;18651:20;;:4;:20;:::i;:::-;:36;;;;:::i;:::-;18633:14;:54;;:14;;:54;;;;;:::i;:::-;;;;-1:-1:-1;;18757:13:0;;18736:18;;18729:25;;:4;:25;:::i;:::-;:41;;;;:::i;:::-;18706:19;:64;;:19;;:64;;;;;:::i;:::-;;;;-1:-1:-1;;18340:446:0;18806:8;;18802:91;;18835:42;18851:4;18865;18872;18835:15;:42::i;:::-;18906:14;18916:4;18906:14;;:::i;:::-;;;17101:1831;18944:33;18960:4;18966:2;18970:6;18944:15;:33::i;:::-;14673:4312;;;14594:4391;;;:::o;20195:1571::-;20238:14;;:18;;;;:64;;-1:-1:-1;20288:14:0;;20260:24;20278:4;20260:9;:24::i;:::-;:42;;20238:64;20234:133;;;20319:36;20333:4;20340:9;:14;;;20319:5;:36::i;:::-;20394:1;20377:14;:18;;;20434:24;20452:4;20434:9;:24::i;:::-;20536:19;;20513:20;;20536:9;20497:13;20408:50;;-1:-1:-1;20469:25:0;;20497:36;;20513:20;20497:36;:::i;:::-;:58;;;;:::i;:::-;20469:86;-1:-1:-1;20572:20:0;;;:46;;-1:-1:-1;20596:22:0;;20572:46;20568:63;;;20622:7;;20195:1571::o;20568:63::-;20665:18;;:23;;20686:2;20665:23;:::i;:::-;20647:15;:41;20643:115;;;20723:18;;:23;;20744:2;20723:23;:::i;:::-;20705:41;;20643:115;20770:23;20856:1;20836:17;20814:9;:19;;;20796:15;:37;;;;:::i;:::-;:57;;;;:::i;:::-;:61;;;;:::i;:::-;20770:87;-1:-1:-1;20870:51:0;20887:33;20770:87;20887:15;:33;:::i;:::-;20870:16;:51::i;:::-;21121:19;;20955:21;;;;20934:18;;21121:23;;21143:1;;21121:23;:::i;:::-;21100:45;;:17;:45;:::i;:::-;21076:20;;21063:33;;:10;:33;:::i;:::-;:83;;;;:::i;:::-;21036:110;;21157:17;21250:1;21228:9;:19;;;:23;;;;:::i;:::-;21207:45;;:17;:45;:::i;:::-;21190:9;:13;21177:26;;:10;:26;:::i;:::-;:76;;;;:::i;:::-;21157:96;-1:-1:-1;21285:28:0;21157:96;21285:16;:28;:::i;:::-;21266:47;;;;:::i;:::-;21342:1;21326:9;:17;;;21354:20;:24;;;21389:19;:23;;;21423:14;:18;21266:47;-1:-1:-1;21458:19:0;;;;;:42;;;21499:1;21481:15;:19;21458:42;21454:121;;;21517:46;21530:15;21547;21517:12;:46::i;:::-;21631:10;;21623:46;;21587:12;;-1:-1:-1;;;;;21631:10:0;;21655:9;;21587:12;21623:46;21587:12;21623:46;21655:9;21631:10;21623:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21701:17:0;;21693:65;;21610:59;;-1:-1:-1;;;;;;21701:17:0;;21732:21;;21693:65;;;;21732:21;21701:17;21693:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20195:1571:0:o;19122:234::-;-1:-1:-1;;;;;19205:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;19205:39:0;;;;;;;19257:35;19205:31;:39;19257:22;:35::i;3769:576::-;-1:-1:-1;;;;;3875:20:0;;3867:70;;;;-1:-1:-1;;;3867:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3956:23:0;;3948:71;;;;-1:-1:-1;;;3948:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4054:17:0;;4030:21;4054:17;;;;;;;;;;;4090:23;;;;4082:74;;;;-1:-1:-1;;;4082:74:0;;16531:2:1;4082:74:0;;;16513:21:1;16570:2;16550:18;;;16543:30;16609:34;16589:18;;;16582:62;-1:-1:-1;;;16660:18:1;;;16653:36;16706:19;;4082:74:0;16329:402:1;4082:74:0;-1:-1:-1;;;;;4192:17:0;;;:9;:17;;;;;;;;;;;4212:22;;;4192:42;;4256:20;;;;;;;;:30;;4228:6;;4192:9;4256:30;;4228:6;;4256:30;:::i;:::-;;;;;;;;4319:9;-1:-1:-1;;;;;4302:35:0;4311:6;-1:-1:-1;;;;;4302:35:0;;4330:6;4302:35;;;;1977:25:1;;1965:2;1950:18;;1831:177;4302:35:0;;;;;;;;3856:489;3769:576;;;:::o;4650:468::-;-1:-1:-1;;;;;4734:21:0;;4726:67;;;;-1:-1:-1;;;4726:67:0;;16938:2:1;4726:67:0;;;16920:21:1;16977:2;16957:18;;;16950:30;17016:34;16996:18;;;16989:62;-1:-1:-1;;;17067:18:1;;;17060:31;17108:19;;4726:67:0;16736:397:1;4726:67:0;-1:-1:-1;;;;;4829:18:0;;4804:22;4829:18;;;;;;;;;;;4866:24;;;;4858:71;;;;-1:-1:-1;;;4858:71:0;;17340:2:1;4858:71:0;;;17322:21:1;17379:2;17359:18;;;17352:30;17418:34;17398:18;;;17391:62;-1:-1:-1;;;17469:18:1;;;17462:32;17511:19;;4858:71:0;17138:398:1;4858:71:0;-1:-1:-1;;;;;4965:18:0;;:9;:18;;;;;;;;;;;4986:23;;;4965:44;;5024:12;:22;;;;;;;5073:37;1977:25:1;;;4965:9:0;;:18;5073:37;;1950:18:1;5073:37:0;1831:177:1;19364:457:0;19454:16;;;19468:1;19454:16;;;;;;;;19430:21;;19454:16;;;;;;;;;;-1:-1:-1;19454:16:0;19430:40;;19499:4;19481;19486:1;19481:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19481:23:0;;;:7;;;;;;;;;;:23;;;;19525:9;;:16;;;-1:-1:-1;;;19525:16:0;;;;:9;;;;;:14;;:16;;;;;19481:7;;19525:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19515:4;19520:1;19515:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19515:26:0;;;:7;;;;;;;;;:26;19586:9;;19554:56;;19571:4;;19586:9;19598:11;19554:8;:56::i;:::-;19623:9;;:190;;-1:-1:-1;;;19623:190:0;;-1:-1:-1;;;;;19623:9:0;;;;:60;;:190;;19698:11;;19623:9;;19740:4;;19767;;19787:15;;19623:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19829:358;19942:9;;19910:56;;19927:4;;-1:-1:-1;;;;;19942:9:0;19954:11;19910:8;:56::i;:::-;19979:9;;:200;;-1:-1:-1;;;19979:200:0;;20045:4;19979:200;;;19387:34:1;19437:18;;;19430:34;;;19979:9:0;19480:18:1;;;19473:34;;;19523:18;;;19516:34;20131:6:0;19566:19:1;;;19559:44;20153:15:0;19619:19:1;;;19612:35;-1:-1:-1;;;;;19979:9:0;;;;:25;;20012:9;;19321:19:1;;19979:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19829:358;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;929:315;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:385::-;1527:6;1535;1543;1551;1604:3;1592:9;1583:7;1579:23;1575:33;1572:53;;;1621:1;1618;1611:12;1572:53;-1:-1:-1;;1644:23:1;;;1714:2;1699:18;;1686:32;;-1:-1:-1;1765:2:1;1750:18;;1737:32;;1816:2;1801:18;1788:32;;-1:-1:-1;1441:385:1;-1:-1:-1;1441:385:1:o;2013:180::-;2072:6;2125:2;2113:9;2104:7;2100:23;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;-1:-1:-1;2164:23:1;;2013:180;-1:-1:-1;2013:180:1:o;2198:456::-;2275:6;2283;2291;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;:::-;2468:5;-1:-1:-1;2525:2:1;2510:18;;2497:32;2538:33;2497:32;2538:33;:::i;:::-;2198:456;;2590:7;;-1:-1:-1;;;2644:2:1;2629:18;;;;2616:32;;2198:456::o;3452:247::-;3511:6;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;3452:247;-1:-1:-1;;;3452:247:1:o;3704:416::-;3769:6;3777;3830:2;3818:9;3809:7;3805:23;3801:32;3798:52;;;3846:1;3843;3836:12;3798:52;3885:9;3872:23;3904:31;3929:5;3904:31;:::i;:::-;3954:5;-1:-1:-1;4011:2:1;3996:18;;3983:32;4053:15;;4046:23;4034:36;;4024:64;;4084:1;4081;4074:12;4024:64;4107:7;4097:17;;;3704:416;;;;;:::o;4125:388::-;4193:6;4201;4254:2;4242:9;4233:7;4229:23;4225:32;4222:52;;;4270:1;4267;4260:12;4222:52;4309:9;4296:23;4328:31;4353:5;4328:31;:::i;:::-;4378:5;-1:-1:-1;4435:2:1;4420:18;;4407:32;4448:33;4407:32;4448:33;:::i;4518:380::-;4597:1;4593:12;;;;4640;;;4661:61;;4715:4;4707:6;4703:17;4693:27;;4661:61;4768:2;4760:6;4757:14;4737:18;4734:38;4731:161;;4814:10;4809:3;4805:20;4802:1;4795:31;4849:4;4846:1;4839:15;4877:4;4874:1;4867:15;4731:161;;4518:380;;;:::o;4903:356::-;5105:2;5087:21;;;5124:18;;;5117:30;5183:34;5178:2;5163:18;;5156:62;5250:2;5235:18;;4903:356::o;5264:127::-;5325:10;5320:3;5316:20;5313:1;5306:31;5356:4;5353:1;5346:15;5380:4;5377:1;5370:15;5396:125;5461:9;;;5482:10;;;5479:36;;;5495:18;;:::i;5934:168::-;6007:9;;;6038;;6055:15;;;6049:22;;6035:37;6025:71;;6076:18;;:::i;6107:217::-;6147:1;6173;6163:132;;6217:10;6212:3;6208:20;6205:1;6198:31;6252:4;6249:1;6242:15;6280:4;6277:1;6270:15;6163:132;-1:-1:-1;6309:9:1;;6107:217::o;13015:401::-;13217:2;13199:21;;;13256:2;13236:18;;;13229:30;13295:34;13290:2;13275:18;;13268:62;-1:-1:-1;;;13361:2:1;13346:18;;13339:35;13406:3;13391:19;;13015:401::o;13421:399::-;13623:2;13605:21;;;13662:2;13642:18;;;13635:30;13701:34;13696:2;13681:18;;13674:62;-1:-1:-1;;;13767:2:1;13752:18;;13745:33;13810:3;13795:19;;13421:399::o;15013:128::-;15080:9;;;15101:11;;;15098:37;;;15115:18;;:::i;15926:398::-;16128:2;16110:21;;;16167:2;16147:18;;;16140:30;16206:34;16201:2;16186:18;;16179:62;-1:-1:-1;;;16272:2:1;16257:18;;16250:32;16314:3;16299:19;;15926:398::o;17673:127::-;17734:10;17729:3;17725:20;17722:1;17715:31;17765:4;17762:1;17755:15;17789:4;17786:1;17779:15;17805:251;17875:6;17928:2;17916:9;17907:7;17903:23;17899:32;17896:52;;;17944:1;17941;17934:12;17896:52;17976:9;17970:16;17995:31;18020:5;17995:31;:::i;18061:980::-;18323:4;18371:3;18360:9;18356:19;18402:6;18391:9;18384:25;18428:2;18466:6;18461:2;18450:9;18446:18;18439:34;18509:3;18504:2;18493:9;18489:18;18482:31;18533:6;18568;18562:13;18599:6;18591;18584:22;18637:3;18626:9;18622:19;18615:26;;18676:2;18668:6;18664:15;18650:29;;18697:1;18707:195;18721:6;18718:1;18715:13;18707:195;;;18786:13;;-1:-1:-1;;;;;18782:39:1;18770:52;;18877:15;;;;18842:12;;;;18818:1;18736:9;18707:195;;;-1:-1:-1;;;;;;;18958:32:1;;;;18953:2;18938:18;;18931:60;-1:-1:-1;;;19022:3:1;19007:19;19000:35;18919:3;18061:980;-1:-1:-1;;;18061:980:1:o;19658:306::-;19746:6;19754;19762;19815:2;19803:9;19794:7;19790:23;19786:32;19783:52;;;19831:1;19828;19821:12;19783:52;19860:9;19854:16;19844:26;;19910:2;19899:9;19895:18;19889:25;19879:35;;19954:2;19943:9;19939:18;19933:25;19923:35;;19658:306;;;;;:::o

Swarm Source

ipfs://eb9730612f8223f818b536ae0a7df8df481fe8c1c9baf83af34c2b85f5c089ec

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.