ETH Price: $3,377.58 (+3.21%)
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $3,377.58/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182313872023-09-28 2:52:11491 days ago1695869531IN
0x3bB13e89...D03E4d013
0 ETH0.000195318.03087774
Approve182012852023-09-23 21:46:11495 days ago1695505571IN
0x3bB13e89...D03E4d013
0 ETH0.000173627.13904808
Approve181670862023-09-19 2:48:47500 days ago1695091727IN
0x3bB13e89...D03E4d013
0 ETH0.000388858.35463746
Approve181081772023-09-10 19:52:11508 days ago1694375531IN
0x3bB13e89...D03E4d013
0 ETH0.000426619.22772841
Approve181080522023-09-10 19:26:35508 days ago1694373995IN
0x3bB13e89...D03E4d013
0 ETH0.000462729.94173068
Approve181018322023-09-09 22:32:47509 days ago1694298767IN
0x3bB13e89...D03E4d013
0 ETH0.000262089.0002367
Approve180971222023-09-09 6:41:59510 days ago1694241719IN
0x3bB13e89...D03E4d013
0 ETH0.000247389.26398415
Approve180971212023-09-09 6:41:47510 days ago1694241707IN
0x3bB13e89...D03E4d013
0 ETH0.000437459.38663953
Approve180938992023-09-08 19:52:23510 days ago1694202743IN
0x3bB13e89...D03E4d013
0 ETH0.0006711414.41951381
Approve180921562023-09-08 14:00:59511 days ago1694181659IN
0x3bB13e89...D03E4d013
0 ETH0.0007589516.42055588
Approve180920422023-09-08 13:38:11511 days ago1694180291IN
0x3bB13e89...D03E4d013
0 ETH0.0006510213.98739692
Approve180920152023-09-08 13:32:23511 days ago1694179943IN
0x3bB13e89...D03E4d013
0 ETH0.0005885812.64569496
Claim Dividend180912762023-09-08 11:03:23511 days ago1694171003IN
0x3bB13e89...D03E4d013
0 ETH0.0003343611.57857654
Approve180909032023-09-08 9:48:23511 days ago1694166503IN
0x3bB13e89...D03E4d013
0 ETH0.0004957410.73124365
Approve180906212023-09-08 8:50:59511 days ago1694163059IN
0x3bB13e89...D03E4d013
0 ETH0.0005562911.93662576
Approve180905942023-09-08 8:45:35511 days ago1694162735IN
0x3bB13e89...D03E4d013
0 ETH0.000625613.44116971
Approve180905202023-09-08 8:30:35511 days ago1694161835IN
0x3bB13e89...D03E4d013
0 ETH0.0006079713.06233264
Approve180903132023-09-08 7:48:59511 days ago1694159339IN
0x3bB13e89...D03E4d013
0 ETH0.0005890912.7421483
Approve180894492023-09-08 4:54:47511 days ago1694148887IN
0x3bB13e89...D03E4d013
0 ETH0.0002504310.32314694
Approve180894382023-09-08 4:52:35511 days ago1694148755IN
0x3bB13e89...D03E4d013
0 ETH0.0005493311.80242558
Approve180891142023-09-08 3:47:11511 days ago1694144831IN
0x3bB13e89...D03E4d013
0 ETH0.000288089.88900554
Approve180889712023-09-08 3:18:23511 days ago1694143103IN
0x3bB13e89...D03E4d013
0 ETH0.00046029.95433661
Approve180887792023-09-08 2:39:59511 days ago1694140799IN
0x3bB13e89...D03E4d013
0 ETH0.000435729.41263686
Approve180886602023-09-08 2:15:59511 days ago1694139359IN
0x3bB13e89...D03E4d013
0 ETH0.0006122813.13802708
Approve180886592023-09-08 2:15:47511 days ago1694139347IN
0x3bB13e89...D03E4d013
0 ETH0.0006384513.69962677
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
180875402023-09-07 22:30:23511 days ago1694125823
0x3bB13e89...D03E4d013
0.07721542 ETH
180875402023-09-07 22:30:23511 days ago1694125823
0x3bB13e89...D03E4d013
0.02573847 ETH
180875402023-09-07 22:30:23511 days ago1694125823
0x3bB13e89...D03E4d013
0.10295389 ETH
180875382023-09-07 22:29:59511 days ago1694125799
0x3bB13e89...D03E4d013
0.07329772 ETH
180875382023-09-07 22:29:59511 days ago1694125799
0x3bB13e89...D03E4d013
0.02443257 ETH
180875382023-09-07 22:29:59511 days ago1694125799
0x3bB13e89...D03E4d013
0.09773029 ETH
180875302023-09-07 22:28:23511 days ago1694125703
0x3bB13e89...D03E4d013
0.33293627 ETH
180875302023-09-07 22:28:23511 days ago1694125703
0x3bB13e89...D03E4d013
0.11097875 ETH
180875302023-09-07 22:28:23511 days ago1694125703
0x3bB13e89...D03E4d013
0.44391502 ETH
180875292023-09-07 22:28:11511 days ago1694125691
0x3bB13e89...D03E4d013
0.1738633 ETH
180875292023-09-07 22:28:11511 days ago1694125691
0x3bB13e89...D03E4d013
0.05795443 ETH
180875292023-09-07 22:28:11511 days ago1694125691
0x3bB13e89...D03E4d013
0.20869114 ETH
180875282023-09-07 22:27:59511 days ago1694125679
0x3bB13e89...D03E4d013
0.02312659 ETH
180875272023-09-07 22:27:47511 days ago1694125667
0x3bB13e89...D03E4d013
0.12688569 ETH
180875272023-09-07 22:27:47511 days ago1694125667
0x3bB13e89...D03E4d013
0.04229523 ETH
180875272023-09-07 22:27:47511 days ago1694125667
0x3bB13e89...D03E4d013
0.16918092 ETH
180875262023-09-07 22:27:35511 days ago1694125655
0x3bB13e89...D03E4d013
0.05460947 ETH
180875262023-09-07 22:27:35511 days ago1694125655
0x3bB13e89...D03E4d013
0.01820315 ETH
180875262023-09-07 22:27:35511 days ago1694125655
0x3bB13e89...D03E4d013
0.07281263 ETH
180875192023-09-07 22:26:11511 days ago1694125571
0x3bB13e89...D03E4d013
0.10022252 ETH
180875192023-09-07 22:26:11511 days ago1694125571
0x3bB13e89...D03E4d013
0.0334075 ETH
180875192023-09-07 22:26:11511 days ago1694125571
0x3bB13e89...D03E4d013
0.13363003 ETH
180875162023-09-07 22:25:35511 days ago1694125535
0x3bB13e89...D03E4d013
0.24163716 ETH
180875162023-09-07 22:25:35511 days ago1694125535
0x3bB13e89...D03E4d013
0.08054572 ETH
180875162023-09-07 22:25:35511 days ago1694125535
0x3bB13e89...D03E4d013
0.30253407 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Dark_BTC

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-07
*/

// SPDX-License-Identifier: MIT
/*  
    https://darkbtc.vip
    https://twitter.com/DarkBTC_WBTC
    https://t.me/darkbtcofficial
*/
pragma solidity ^0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

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

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() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

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

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;

    function claimDividend(address _user) external;

    function getPaidEarnings(
        address shareholder
    ) external view returns (uint256);

    function getUnpaidEarnings(
        address shareholder
    ) external view returns (uint256);

    function totalDistributed() external view returns (uint256);
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IERC20 public WBTC =
        IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599);
    IDexRouter public router;

    address[] public shareholders;
    mapping(address => uint256) public shareholderIndexes;
    mapping(address => uint256) public shareholderClaims;

    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** WBTC.decimals());

    uint256 currentIndex;

    bool initialized;
    modifier initializer() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == token);
        _;
    }

    constructor(address router_) {
        token = msg.sender;
        router = IDexRouter(router_);
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(
        address shareholder,
        uint256 amount
    ) external override onlyToken {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = WBTC.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(WBTC);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = WBTC.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(
        address shareholder
    ) internal view returns (bool) {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            WBTC.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function claimDividend(address _user) external {
        distributeDividend(_user);
    }

    function getPaidEarnings(
        address shareholder
    ) public view returns (uint256) {
        return shares[shareholder].totalRealised;
    }

    function getUnpaidEarnings(
        address shareholder
    ) public view returns (uint256) {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(
        uint256 share
    ) internal view returns (uint256) {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract Dark_BTC is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Dark BTC";
    string private constant _symbol = "Dark";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 21000000 * 10 ** _decimals;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isDividendExempt;
    mapping(address => uint256) private _holderCheckpoint;

    uint256 private _reflectionPercent = 25;
    uint256 private _feePercent = 75;

    uint256 private _iBuyTax = 25;
    uint256 private _fBuyTax = 2;
    uint256 private _buyTaxLimit = 45;

    uint256 private _iSellTax = 40;
    uint256 private _fSellTax = 2;
    uint256 private _sellTaxLimit = 45;

    uint256 private _swapPreventLimit = 15;
    uint256 private _buyCounter = 0;

    uint256 public maxTxnAmount = 210000 * 10 ** _decimals;
    uint256 public maxWalletAmount = 210000 * 10 ** _decimals;
    uint256 public taxSwapThreshold = 4200000 * 10 ** _decimals;
    uint256 public maxTaxSwap = 4200000 * 10 ** _decimals;
    uint256 public distributorGas = 500000;

    DividendDistributor public distributor;
    IDexRouter private router;
    address private pair;
    address payable private feeWallet;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public transferLimitEnabled = true;

    event MaxTxnAmountUpdated(uint maxTxnAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        feeWallet = payable(_msgSender());
        _balances[_msgSender()] = _totalSupply;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeWallet] = true;

        _isDividendExempt[pair] = true;
        _isDividendExempt[address(router)] = true;
        _isDividendExempt[address(this)] = true;

        distributor = new DividendDistributor(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            taxAmount = amount
                .mul((_buyCounter > _buyTaxLimit) ? _fBuyTax : _iBuyTax)
                .div(100);

            if (transferLimitEnabled) {
                if (to != address(router) && to != address(pair)) {
                    require(
                        _holderCheckpoint[tx.origin] < block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderCheckpoint[tx.origin] = block.number;
                }
            }

            if (
                from == pair && to != address(router) && !_isExcludedFromFee[to]
            ) {
                require(amount <= maxTxnAmount, "Exceeds the maxTxnAmount.");
                require(
                    balanceOf(to) + amount <= maxWalletAmount,
                    "Exceeds the maxWalletAmount."
                );
                _buyCounter++;
            }

            if (to == pair && from != address(this)) {
                taxAmount = amount
                    .mul((_buyCounter > _sellTaxLimit) ? _fSellTax : _iSellTax)
                    .div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == pair &&
                swapEnabled &&
                contractTokenBalance > taxSwapThreshold &&
                _buyCounter > _swapPreventLimit
            ) {
                swapTokensForEth(
                    getMin(amount, getMin(contractTokenBalance, maxTaxSwap))
                );
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0.05 ether) {
                    transferFee(address(this).balance);
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));

        if (!_isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
        if (!_isDividendExempt[to]) {
            try
                distributor.setShare(to, _balances[to])
            {} catch {}
        }

        try distributor.process(distributorGas) {} catch {}
    }

    function transferFee(uint256 amount) private {
        uint256 amountReflection = amount.mul(_reflectionPercent).div(100);
        if (amountReflection > 0) {
            try distributor.deposit{value: amountReflection}() {} catch {}
        }
        uint256 amountFee = amount.mul(_feePercent).div(100);
        if (amountFee > 0) {
            feeWallet.transfer(amountFee);
        }
    }

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

    function getMin(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }

    function getPaidDividend(address shareholder)
        public
        view
        returns (uint256)
    {
        return distributor.getPaidEarnings(shareholder);
    }

    function getUnpaidDividend(address shareholder)
        external
        view
        returns (uint256)
    {
        return distributor.getUnpaidEarnings(shareholder);
    }

    function getTotalDistributedDividend() external view returns (uint256) {
        return distributor.totalDistributed();
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        require(holder != address(this) && holder != pair);
        _isDividendExempt[holder] = exempt;
        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function enableTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(router), _totalSupply);
        pair = IDexFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(pair).approve(address(router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function clearTransferLimits() external onlyOwner {
        maxTxnAmount = _totalSupply;
        maxWalletAmount = _totalSupply;
        transferLimitEnabled = false;
        emit MaxTxnAmountUpdated(_totalSupply);
    }

    function setTaxPercent(
        uint256 _r,
        uint256 _f
    ) external onlyOwner {
        _reflectionPercent = _r;
        _feePercent = _f;
    }

    function setBuyFee(
        uint256 _iBuy,
        uint256 _fBuy,
        uint256 _buyLimit
    ) external onlyOwner {
        _iBuyTax = _iBuy;
        _fBuyTax = _fBuy;
        _buyTaxLimit = _buyLimit;
    }

    function setSellFee(
        uint256 _iSell,
        uint256 _fSell,
        uint256 _sellLimit
    ) external onlyOwner {
        _iSellTax = _iSell;
        _fSellTax = _fSell;
        _sellTaxLimit = _sellLimit;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000, "Gas must be lower than 750000");
        distributorGas = gas;
    }

    function swapFee() external {
        require(_msgSender() == feeWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            transferFee(ethBalance);
        }
    }

    function removeStuckToken(address _token, uint256 _amount) external {
        require(_msgSender() == feeWallet);
        IERC20(_token).transfer(feeWallet, _amount);
    }
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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":"uint256","name":"maxTxnAmount","type":"uint256"}],"name":"MaxTxnAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearTransferLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributedDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","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":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_iBuy","type":"uint256"},{"internalType":"uint256","name":"_fBuy","type":"uint256"},{"internalType":"uint256","name":"_buyLimit","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_iSell","type":"uint256"},{"internalType":"uint256","name":"_fSell","type":"uint256"},{"internalType":"uint256","name":"_sellLimit","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_r","type":"uint256"},{"internalType":"uint256","name":"_f","type":"uint256"}],"name":"setTaxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600655604b60075560196008556002600955602d600a556028600b556002600c55602d600d55600f600e556000600f556009600a620000469190620003d0565b620000559062033450620003e8565b601055620000666009600a620003d0565b620000759062033450620003e8565b601155620000866009600a620003d0565b620000959062401640620003e8565b601255620000a66009600a620003d0565b620000b59062401640620003e8565b6013556207a1206014556018805462ffffff60a81b1916600160b81b179055348015620000e157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601880546001600160a01b03191633179055620001436009600a620003d0565b62000153906301406f40620003e8565b336000908152600160208181526040808420949094553080845260038252848420805460ff1990811685179091556018546001600160a01b0390811686528686208054831686179055601754811686526004909352858520805482168517905560165490921684528484208054831684179055835291839020805490921617905551737a250d5630b4cf539739df2c5dacb4c659f2488d90620001f690620002ad565b6001600160a01b039091168152602001604051809103906000f08015801562000223573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b03929092169190911790556200024c3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002866009600a620003d0565b62000296906301406f40620003e8565b60405190815260200160405180910390a362000402565b6113c480620026ce83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000312578160001904821115620002f657620002f6620002bb565b808516156200030457918102915b93841c9390800290620002d6565b509250929050565b6000826200032b57506001620003ca565b816200033a57506000620003ca565b81600181146200035357600281146200035e576200037e565b6001915050620003ca565b60ff841115620003725762000372620002bb565b50506001821b620003ca565b5060208310610133831016604e8410600b8410161715620003a3575081810a620003ca565b620003af8383620002d1565b8060001904821115620003c657620003c6620002bb565b0290505b92915050565b6000620003e160ff8416836200031a565b9392505050565b8082028115828204841417620003ca57620003ca620002bb565b6122bc80620004126000396000f3fe6080604052600436106101e75760003560e01c8063717944e011610102578063aa4bde2811610095578063dd62ed3e11610064578063dd62ed3e1461057f578063e54081d0146105c5578063f0fc6bca146105da578063f708a64f146105ef57600080fd5b8063aa4bde2814610513578063bfe1092814610529578063ce261d1014610549578063cf46f24c1461056957600080fd5b80638da5cb5b116100d15780638da5cb5b1461047457806395d89b41146104a65780639d1944f5146104d3578063a9059cbb146104f357600080fd5b8063717944e0146103fe578063796b84ac1461041f57806386db0c051461043f5780638a8c523c1461045f57600080fd5b8063313ce5671161017a57806360e719621161014957806360e719621461038757806362997f8c1461039d57806370a08231146103b3578063715018a6146103e957600080fd5b8063313ce5671461032057806349bc3feb1461033c57806354cf2aeb1461035c5780635e7b655c1461037157600080fd5b80631d865c30116101b65780631d865c301461029e57806323b872dd146102c057806325519cf2146102e05780632d48e8961461030057600080fd5b806306fdde03146101f3578063095ea7b31461023657806318160ddd146102665780631961cee21461028957600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260088152674461726b2042544360c01b60208201525b60405161022d9190611dd4565b60405180910390f35b34801561024257600080fd5b50610256610251366004611e3a565b61060f565b604051901515815260200161022d565b34801561027257600080fd5b5061027b610626565b60405190815260200161022d565b34801561029557600080fd5b5061027b610647565b3480156102aa57600080fd5b506102be6102b9366004611e66565b6106b5565b005b3480156102cc57600080fd5b506102566102db366004611e92565b6106f6565b3480156102ec57600080fd5b506102be6102fb366004611e66565b61075f565b34801561030c57600080fd5b506102be61031b366004611ed3565b610797565b34801561032c57600080fd5b506040516009815260200161022d565b34801561034857600080fd5b5061027b610357366004611ef5565b61082b565b34801561036857600080fd5b506102be61089b565b34801561037d57600080fd5b5061027b60125481565b34801561039357600080fd5b5061027b60145481565b3480156103a957600080fd5b5061027b60135481565b3480156103bf57600080fd5b5061027b6103ce366004611ef5565b6001600160a01b031660009081526001602052604090205490565b3480156103f557600080fd5b506102be6108ee565b34801561040a57600080fd5b5060185461025690600160b81b900460ff1681565b34801561042b57600080fd5b506102be61043a366004611ed3565b610962565b34801561044b57600080fd5b5061027b61045a366004611ef5565b610997565b34801561046b57600080fd5b506102be6109ca565b34801561048057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022d565b3480156104b257600080fd5b506040805180820190915260048152634461726b60e01b6020820152610220565b3480156104df57600080fd5b506102be6104ee366004611f12565b610d86565b3480156104ff57600080fd5b5061025661050e366004611e3a565b610e07565b34801561051f57600080fd5b5061027b60115481565b34801561053557600080fd5b5060155461048e906001600160a01b031681565b34801561055557600080fd5b506102be610564366004611e3a565b610e14565b34801561057557600080fd5b5061027b60105481565b34801561058b57600080fd5b5061027b61059a366004611f2b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105d157600080fd5b506102be610eb0565b3480156105e657600080fd5b506102be610f6f565b3480156105fb57600080fd5b506102be61060a366004611f72565b610fce565b600061061c3384846110ec565b5060015b92915050565b60006106346009600a61209a565b610642906301406f406120a9565b905090565b6015546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064291906120c0565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106df906120d9565b60405180910390fd5b600b92909255600c55600d55565b6000610703848484611210565b61075584336107508560405180606001604052806028815260200161225f602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061198b565b6110ec565b5060019392505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016106df906120d9565b600892909255600955600a55565b6000546001600160a01b031633146107c15760405162461bcd60e51b81526004016106df906120d9565b6015546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561080f57600080fd5b505af1158015610823573d6000803e3d6000fd5b505050505050565b601554604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062091906120c0565b6018546001600160a01b0316336001600160a01b0316146108bb57600080fd5b3060009081526001602052604090205480156108da576108da816119c5565b4780156108ea576108ea81611b3f565b5050565b6000546001600160a01b031633146109185760405162461bcd60e51b81526004016106df906120d9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461098c5760405162461bcd60e51b81526004016106df906120d9565b600691909155600755565b60155460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240161085a565b6000546001600160a01b031633146109f45760405162461bcd60e51b81526004016106df906120d9565b601854600160a01b900460ff1615610a4e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106df565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a97903090610a896009600a61209a565b610750906301406f406120a9565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e919061210e565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b94919061210e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c05919061210e565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d7194730610c4d816001600160a01b031660009081526001602052604090205490565b600080610c626000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cef919061212b565b505060175460165460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612159565b506018805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b03163314610db05760405162461bcd60e51b81526004016106df906120d9565b620b71b08110610e025760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e2037353030303000000060448201526064016106df565b601455565b600061061c338484611210565b6018546001600160a01b0316336001600160a01b031614610e3457600080fd5b60185460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab9190612159565b505050565b6000546001600160a01b03163314610eda5760405162461bcd60e51b81526004016106df906120d9565b610ee66009600a61209a565b610ef4906301406f406120a9565b601055610f036009600a61209a565b610f11906301406f406120a9565b6011556018805460ff60b81b191690557ff7376c86cf503c5788ae74467ebc95b750bc4d5c64790343f9b4f42bdf376eee610f4e6009600a61209a565b610f5c906301406f406120a9565b60405190815260200160405180910390a1565b601554604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ff85760405162461bcd60e51b81526004016106df906120d9565b6001600160a01b038216301480159061101f57506017546001600160a01b03838116911614155b61102857600080fd5b6001600160a01b0382166000908152600460205260409020805460ff191682158015919091179091556110a357601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b15801561080f57600080fd5b6015546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016107f5565b6001600160a01b03831661114e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106df565b6001600160a01b0382166111af5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106df565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106df565b6001600160a01b0382166112d65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106df565b6000811161133f5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106df565b600080546001600160a01b0385811691161480159061136c57506000546001600160a01b03848116911614155b156116be5761139d6064611397600a54600f541161138c57600854611390565b6009545b8590611c25565b90611cae565b601854909150600160b81b900460ff161561148c576016546001600160a01b038481169116148015906113de57506017546001600160a01b03848116911614155b1561148c573260009081526005602052604090205443116114795760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016106df565b3260009081526005602052604090204390555b6017546001600160a01b0385811691161480156114b757506016546001600160a01b03848116911614155b80156114dc57506001600160a01b03831660009081526003602052604090205460ff16155b156115c4576010548211156115335760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865206d617854786e416d6f756e742e0000000000000060448201526064016106df565b60115482611556856001600160a01b031660009081526001602052604090205490565b6115609190612176565b11156115ae5760405162461bcd60e51b815260206004820152601c60248201527f4578636565647320746865206d617857616c6c6574416d6f756e742e0000000060448201526064016106df565b600f80549060006115be83612189565b91905055505b6017546001600160a01b0384811691161480156115ea57506001600160a01b0384163014155b15611617576116146064611397600d54600f541161160a57600b54611390565b600c548590611c25565b90505b30600090815260016020526040902054601854600160a81b900460ff1615801561164e57506017546001600160a01b038581169116145b80156116635750601854600160b01b900460ff165b8015611670575060125481115b801561167f5750600e54600f54115b156116bc576116a161169c8461169784601354611cf0565b611cf0565b6119c5565b4766b1a2bc2ec500008111156116ba576116ba47611b3f565b505b505b801561173857306000908152600160205260409020546116de9082611d05565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061172f9085815260200190565b60405180910390a35b6001600160a01b03841660009081526001602052604090205461175b9083611d64565b6001600160a01b0385166000908152600160205260409020556117a06117818383611d64565b6001600160a01b03851660009081526001602052604090205490611d05565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6117ea8585611d64565b60405190815260200160405180910390a36001600160a01b03841660009081526004602052604090205460ff1661188c576015546001600160a01b0385811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561187957600080fd5b505af192505050801561188a575060015b505b6001600160a01b03831660009081526004602052604090205460ff1661191d576015546001600160a01b0384811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190a57600080fd5b505af192505050801561191b575060015b505b6015546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119559160040190815260200190565b600060405180830381600087803b15801561196f57600080fd5b505af1925050508015611980575060015b15610fc85750505050565b600081848411156119af5760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc84866121a2565b95945050505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a0d57611a0d6121b5565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a919061210e565b81600181518110611a9d57611a9d6121b5565b6001600160a01b039283166020918202929092010152601654611ac391309116846110ec565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611afc9085906000908690309042906004016121cb565b600060405180830381600087803b158015611b1657600080fd5b505af1158015611b2a573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b6000611b5b606461139760065485611c2590919063ffffffff16565b90508015611bc757601560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bb357600080fd5b505af193505050508015611bc5575060015b505b6000611be3606461139760075486611c2590919063ffffffff16565b90508015610eab576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fc8573d6000803e3d6000fd5b600082600003611c3757506000610620565b6000611c4383856120a9565b905082611c50858361223c565b14611ca75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106df565b9392505050565b6000611ca783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611da6565b6000818311611cff5782611ca7565b50919050565b600080611d128385612176565b905083811015611ca75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106df565b6000611ca783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061198b565b60008183611dc75760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc848661223c565b600060208083528351808285015260005b81811015611e0157858101830151858201604001528201611de5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e3757600080fd5b50565b60008060408385031215611e4d57600080fd5b8235611e5881611e22565b946020939093013593505050565b600080600060608486031215611e7b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ea757600080fd5b8335611eb281611e22565b92506020840135611ec281611e22565b929592945050506040919091013590565b60008060408385031215611ee657600080fd5b50508035926020909101359150565b600060208284031215611f0757600080fd5b8135611ca781611e22565b600060208284031215611f2457600080fd5b5035919050565b60008060408385031215611f3e57600080fd5b8235611f4981611e22565b91506020830135611f5981611e22565b809150509250929050565b8015158114611e3757600080fd5b60008060408385031215611f8557600080fd5b8235611f9081611e22565b91506020830135611f5981611f64565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ff1578160001904821115611fd757611fd7611fa0565b80851615611fe457918102915b93841c9390800290611fbb565b509250929050565b60008261200857506001610620565b8161201557506000610620565b816001811461202b576002811461203557612051565b6001915050610620565b60ff84111561204657612046611fa0565b50506001821b610620565b5060208310610133831016604e8410600b8410161715612074575081810a610620565b61207e8383611fb6565b806000190482111561209257612092611fa0565b029392505050565b6000611ca760ff841683611ff9565b808202811582820484141761062057610620611fa0565b6000602082840312156120d257600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561212057600080fd5b8151611ca781611e22565b60008060006060848603121561214057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561216b57600080fd5b8151611ca781611f64565b8082018082111561062057610620611fa0565b60006001820161219b5761219b611fa0565b5060010190565b8181038181111561062057610620611fa0565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561221b5784516001600160a01b0316835293830193918301916001016121f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261225957634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220249a62be4036c783c4d98de55a96cda3070c86475f0af27ed1459437848e6cfe64736f6c6343000813003360806040819052600180546001600160a01b031916732260fac5e5542a773aa44fbcfedf7c193bc2c5999081179091556ec097ce7bc90715b34b9f1000000000600b55610e10600c5563313ce56760e01b82529063313ce56790608490602090600481865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d91906200011e565b620000aa90600a6200025f565b620000b790600162000270565b600d55348015620000c757600080fd5b50604051620013c4380380620013c4833981016040819052620000ea916200028a565b60008054336001600160a01b031991821617909155600280549091166001600160a01b0392909216919091179055620002b5565b6000602082840312156200013157600080fd5b815160ff811681146200014357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001a15781600019048211156200018557620001856200014a565b808516156200019357918102915b93841c939080029062000165565b509250929050565b600082620001ba5750600162000259565b81620001c95750600062000259565b8160018114620001e25760028114620001ed576200020d565b600191505062000259565b60ff8411156200020157620002016200014a565b50506001821b62000259565b5060208310610133831016604e8410600b841016171562000232575081810a62000259565b6200023e838362000160565b80600019048211156200025557620002556200014a565b0290505b92915050565b60006200014360ff841683620001a9565b80820281158282048414176200025957620002596200014a565b6000602082840312156200029d57600080fd5b81516001600160a01b03811681146200014357600080fd5b6110ff80620002c56000396000f3fe60806040526004361061012a5760003560e01c8063997664d7116100ab578063e2d2e2191161006f578063e2d2e21914610366578063efca2eed1461037c578063f887ea4014610392578063fc0c546a146103b2578063ffb2c479146103d2578063ffd49c84146103f257600080fd5b8063997664d7146102a4578063ab377daa146102ba578063ce7c2ac2146102da578063d0e30db014610331578063d4fda1f21461033957600080fd5b80633a98ef39116100f25780633a98ef39146101da5780634dede3de146101f05780634fab0ae81461022857806352f481581461023e57806366817df51461027757600080fd5b806311ce023d1461012f57806314b6ca961461015857806315f7e05e1461017a57806328fd31981461019a5780632d48e896146101ba575b600080fd5b34801561013b57600080fd5b50610145600b5481565b6040519081526020015b60405180910390f35b34801561016457600080fd5b50610178610173366004610e7b565b610408565b005b34801561018657600080fd5b50610178610195366004610ea7565b610580565b3480156101a657600080fd5b506101456101b5366004610ea7565b61058c565b3480156101c657600080fd5b506101786101d5366004610ec4565b610617565b3480156101e657600080fd5b5061014560075481565b3480156101fc57600080fd5b50600154610210906001600160a01b031681565b6040516001600160a01b03909116815260200161014f565b34801561023457600080fd5b50610145600d5481565b34801561024a57600080fd5b50610145610259366004610ea7565b6001600160a01b031660009081526006602052604090206002015490565b34801561028357600080fd5b50610145610292366004610ea7565b60056020526000908152604090205481565b3480156102b057600080fd5b5061014560085481565b3480156102c657600080fd5b506102106102d5366004610ee6565b610639565b3480156102e657600080fd5b506103166102f5366004610ea7565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161014f565b610178610663565b34801561034557600080fd5b50610145610354366004610ea7565b60046020526000908152604090205481565b34801561037257600080fd5b50610145600a5481565b34801561038857600080fd5b5061014560095481565b34801561039e57600080fd5b50600254610210906001600160a01b031681565b3480156103be57600080fd5b50600054610210906001600160a01b031681565b3480156103de57600080fd5b506101786103ed366004610ee6565b6108f2565b3480156103fe57600080fd5b50610145600c5481565b6000546001600160a01b0316331461041f57600080fd5b6001600160a01b0382166000908152600660205260409020541561044657610446826109f6565b60008111801561046c57506001600160a01b038216600090815260066020526040902054155b156104d257600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610505565b801580156104f757506001600160a01b03821660009081526006602052604090205415155b156105055761050582610b14565b6001600160a01b03821660009081526006602052604090205460075461053691839161053091610c29565b90610c74565b6007556001600160a01b038216600090815260066020526040902081905561055d81610cd8565b6001600160a01b0390921660009081526006602052604090206001019190915550565b610589816109f6565b50565b6001600160a01b03811660009081526006602052604081205481036105b357506000919050565b6001600160a01b0382166000908152600660205260408120546105d590610cd8565b6001600160a01b038416600090815260066020526040902060010154909150808211610605575060009392505050565b61060f8282610c29565b949350505050565b6000546001600160a01b0316331461062e57600080fd5b600c91909155600d55565b6003818154811061064957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461067a57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e79190610eff565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610f18565b8160008151811061078d5761078d610f35565b6001600160a01b03928316602091820292909201015260018054835192169183919081106107bd576107bd610f35565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de9590349061080390600090869030904290600401610f4b565b6000604051808303818588803b15801561081c57600080fd5b505af1158015610830573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506108b093508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190610eff565b90610c29565b6008549091506108c09082610c74565b600855600754600b546108ea916108e1916108db9085610cf5565b90610d77565b600a5490610c74565b600a55505050565b6000546001600160a01b0316331461090957600080fd5b6003546000819003610919575050565b6000805a905060005b848310801561093057508381105b156109ef5783600e5410610944576000600e555b6109766003600e548154811061095c5761095c610f35565b6000918252602090912001546001600160a01b0316610db9565b156109ad576109ad6003600e548154811061099357610993610f35565b6000918252602090912001546001600160a01b03166109f6565b6109c26109bb5a8490610c29565b8490610c74565b92505a600e805491935060006109d783610fcb565b919050555080806109e790610fcb565b915050610922565b5050505050565b6001600160a01b0381166000908152600660205260408120549003610a185750565b6000610a238261058c565b90508015610b1057600954610a389082610c74565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190610fe4565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610ae69082610c74565b6001600160a01b038316600090815260066020526040902060028101919091555461055d90610cd8565b5050565b60038054610b2490600190611006565b81548110610b3457610b34610f35565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b7257610b72610f35565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610bbe90600190611006565b81548110610bce57610bce610f35565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610c0457610c04611019565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dfe565b90505b92915050565b600080610c81838561102f565b905083811015610c6b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610c6e600b546108db600a5485610cf590919063ffffffff16565b600082600003610d0757506000610c6e565b6000610d138385611042565b905082610d208583611059565b14610c6b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ccf565b6000610c6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e38565b600c546001600160a01b03821660009081526005602052604081205490914291610de3919061102f565b108015610c6e5750600d54610df78361058c565b1192915050565b60008184841115610e225760405162461bcd60e51b8152600401610ccf919061107b565b506000610e2f8486611006565b95945050505050565b60008183610e595760405162461bcd60e51b8152600401610ccf919061107b565b506000610e2f8486611059565b6001600160a01b038116811461058957600080fd5b60008060408385031215610e8e57600080fd5b8235610e9981610e66565b946020939093013593505050565b600060208284031215610eb957600080fd5b8135610c6b81610e66565b60008060408385031215610ed757600080fd5b50508035926020909101359150565b600060208284031215610ef857600080fd5b5035919050565b600060208284031215610f1157600080fd5b5051919050565b600060208284031215610f2a57600080fd5b8151610c6b81610e66565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610f955784516001600160a01b031683529383019391830191600101610f70565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610fdd57610fdd610fb5565b5060010190565b600060208284031215610ff657600080fd5b81518015158114610c6b57600080fd5b81810381811115610c6e57610c6e610fb5565b634e487b7160e01b600052603160045260246000fd5b80820180821115610c6e57610c6e610fb5565b8082028115828204841417610c6e57610c6e610fb5565b60008261107657634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156110a85785810183015185820160400152820161108c565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220b0d892e8bf4b6101973b2826273872b91bc36e8b16d34791974d1aee7ed6fc1c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063717944e011610102578063aa4bde2811610095578063dd62ed3e11610064578063dd62ed3e1461057f578063e54081d0146105c5578063f0fc6bca146105da578063f708a64f146105ef57600080fd5b8063aa4bde2814610513578063bfe1092814610529578063ce261d1014610549578063cf46f24c1461056957600080fd5b80638da5cb5b116100d15780638da5cb5b1461047457806395d89b41146104a65780639d1944f5146104d3578063a9059cbb146104f357600080fd5b8063717944e0146103fe578063796b84ac1461041f57806386db0c051461043f5780638a8c523c1461045f57600080fd5b8063313ce5671161017a57806360e719621161014957806360e719621461038757806362997f8c1461039d57806370a08231146103b3578063715018a6146103e957600080fd5b8063313ce5671461032057806349bc3feb1461033c57806354cf2aeb1461035c5780635e7b655c1461037157600080fd5b80631d865c30116101b65780631d865c301461029e57806323b872dd146102c057806325519cf2146102e05780632d48e8961461030057600080fd5b806306fdde03146101f3578063095ea7b31461023657806318160ddd146102665780631961cee21461028957600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260088152674461726b2042544360c01b60208201525b60405161022d9190611dd4565b60405180910390f35b34801561024257600080fd5b50610256610251366004611e3a565b61060f565b604051901515815260200161022d565b34801561027257600080fd5b5061027b610626565b60405190815260200161022d565b34801561029557600080fd5b5061027b610647565b3480156102aa57600080fd5b506102be6102b9366004611e66565b6106b5565b005b3480156102cc57600080fd5b506102566102db366004611e92565b6106f6565b3480156102ec57600080fd5b506102be6102fb366004611e66565b61075f565b34801561030c57600080fd5b506102be61031b366004611ed3565b610797565b34801561032c57600080fd5b506040516009815260200161022d565b34801561034857600080fd5b5061027b610357366004611ef5565b61082b565b34801561036857600080fd5b506102be61089b565b34801561037d57600080fd5b5061027b60125481565b34801561039357600080fd5b5061027b60145481565b3480156103a957600080fd5b5061027b60135481565b3480156103bf57600080fd5b5061027b6103ce366004611ef5565b6001600160a01b031660009081526001602052604090205490565b3480156103f557600080fd5b506102be6108ee565b34801561040a57600080fd5b5060185461025690600160b81b900460ff1681565b34801561042b57600080fd5b506102be61043a366004611ed3565b610962565b34801561044b57600080fd5b5061027b61045a366004611ef5565b610997565b34801561046b57600080fd5b506102be6109ca565b34801561048057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022d565b3480156104b257600080fd5b506040805180820190915260048152634461726b60e01b6020820152610220565b3480156104df57600080fd5b506102be6104ee366004611f12565b610d86565b3480156104ff57600080fd5b5061025661050e366004611e3a565b610e07565b34801561051f57600080fd5b5061027b60115481565b34801561053557600080fd5b5060155461048e906001600160a01b031681565b34801561055557600080fd5b506102be610564366004611e3a565b610e14565b34801561057557600080fd5b5061027b60105481565b34801561058b57600080fd5b5061027b61059a366004611f2b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105d157600080fd5b506102be610eb0565b3480156105e657600080fd5b506102be610f6f565b3480156105fb57600080fd5b506102be61060a366004611f72565b610fce565b600061061c3384846110ec565b5060015b92915050565b60006106346009600a61209a565b610642906301406f406120a9565b905090565b6015546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064291906120c0565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106df906120d9565b60405180910390fd5b600b92909255600c55600d55565b6000610703848484611210565b61075584336107508560405180606001604052806028815260200161225f602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061198b565b6110ec565b5060019392505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016106df906120d9565b600892909255600955600a55565b6000546001600160a01b031633146107c15760405162461bcd60e51b81526004016106df906120d9565b6015546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561080f57600080fd5b505af1158015610823573d6000803e3d6000fd5b505050505050565b601554604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062091906120c0565b6018546001600160a01b0316336001600160a01b0316146108bb57600080fd5b3060009081526001602052604090205480156108da576108da816119c5565b4780156108ea576108ea81611b3f565b5050565b6000546001600160a01b031633146109185760405162461bcd60e51b81526004016106df906120d9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461098c5760405162461bcd60e51b81526004016106df906120d9565b600691909155600755565b60155460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240161085a565b6000546001600160a01b031633146109f45760405162461bcd60e51b81526004016106df906120d9565b601854600160a01b900460ff1615610a4e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106df565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a97903090610a896009600a61209a565b610750906301406f406120a9565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e919061210e565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b94919061210e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c05919061210e565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d7194730610c4d816001600160a01b031660009081526001602052604090205490565b600080610c626000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cef919061212b565b505060175460165460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612159565b506018805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b03163314610db05760405162461bcd60e51b81526004016106df906120d9565b620b71b08110610e025760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e2037353030303000000060448201526064016106df565b601455565b600061061c338484611210565b6018546001600160a01b0316336001600160a01b031614610e3457600080fd5b60185460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab9190612159565b505050565b6000546001600160a01b03163314610eda5760405162461bcd60e51b81526004016106df906120d9565b610ee66009600a61209a565b610ef4906301406f406120a9565b601055610f036009600a61209a565b610f11906301406f406120a9565b6011556018805460ff60b81b191690557ff7376c86cf503c5788ae74467ebc95b750bc4d5c64790343f9b4f42bdf376eee610f4e6009600a61209a565b610f5c906301406f406120a9565b60405190815260200160405180910390a1565b601554604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ff85760405162461bcd60e51b81526004016106df906120d9565b6001600160a01b038216301480159061101f57506017546001600160a01b03838116911614155b61102857600080fd5b6001600160a01b0382166000908152600460205260409020805460ff191682158015919091179091556110a357601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b15801561080f57600080fd5b6015546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016107f5565b6001600160a01b03831661114e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106df565b6001600160a01b0382166111af5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106df565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106df565b6001600160a01b0382166112d65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106df565b6000811161133f5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106df565b600080546001600160a01b0385811691161480159061136c57506000546001600160a01b03848116911614155b156116be5761139d6064611397600a54600f541161138c57600854611390565b6009545b8590611c25565b90611cae565b601854909150600160b81b900460ff161561148c576016546001600160a01b038481169116148015906113de57506017546001600160a01b03848116911614155b1561148c573260009081526005602052604090205443116114795760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016106df565b3260009081526005602052604090204390555b6017546001600160a01b0385811691161480156114b757506016546001600160a01b03848116911614155b80156114dc57506001600160a01b03831660009081526003602052604090205460ff16155b156115c4576010548211156115335760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865206d617854786e416d6f756e742e0000000000000060448201526064016106df565b60115482611556856001600160a01b031660009081526001602052604090205490565b6115609190612176565b11156115ae5760405162461bcd60e51b815260206004820152601c60248201527f4578636565647320746865206d617857616c6c6574416d6f756e742e0000000060448201526064016106df565b600f80549060006115be83612189565b91905055505b6017546001600160a01b0384811691161480156115ea57506001600160a01b0384163014155b15611617576116146064611397600d54600f541161160a57600b54611390565b600c548590611c25565b90505b30600090815260016020526040902054601854600160a81b900460ff1615801561164e57506017546001600160a01b038581169116145b80156116635750601854600160b01b900460ff165b8015611670575060125481115b801561167f5750600e54600f54115b156116bc576116a161169c8461169784601354611cf0565b611cf0565b6119c5565b4766b1a2bc2ec500008111156116ba576116ba47611b3f565b505b505b801561173857306000908152600160205260409020546116de9082611d05565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061172f9085815260200190565b60405180910390a35b6001600160a01b03841660009081526001602052604090205461175b9083611d64565b6001600160a01b0385166000908152600160205260409020556117a06117818383611d64565b6001600160a01b03851660009081526001602052604090205490611d05565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6117ea8585611d64565b60405190815260200160405180910390a36001600160a01b03841660009081526004602052604090205460ff1661188c576015546001600160a01b0385811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561187957600080fd5b505af192505050801561188a575060015b505b6001600160a01b03831660009081526004602052604090205460ff1661191d576015546001600160a01b0384811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190a57600080fd5b505af192505050801561191b575060015b505b6015546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119559160040190815260200190565b600060405180830381600087803b15801561196f57600080fd5b505af1925050508015611980575060015b15610fc85750505050565b600081848411156119af5760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc84866121a2565b95945050505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a0d57611a0d6121b5565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a919061210e565b81600181518110611a9d57611a9d6121b5565b6001600160a01b039283166020918202929092010152601654611ac391309116846110ec565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611afc9085906000908690309042906004016121cb565b600060405180830381600087803b158015611b1657600080fd5b505af1158015611b2a573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b6000611b5b606461139760065485611c2590919063ffffffff16565b90508015611bc757601560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bb357600080fd5b505af193505050508015611bc5575060015b505b6000611be3606461139760075486611c2590919063ffffffff16565b90508015610eab576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fc8573d6000803e3d6000fd5b600082600003611c3757506000610620565b6000611c4383856120a9565b905082611c50858361223c565b14611ca75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106df565b9392505050565b6000611ca783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611da6565b6000818311611cff5782611ca7565b50919050565b600080611d128385612176565b905083811015611ca75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106df565b6000611ca783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061198b565b60008183611dc75760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc848661223c565b600060208083528351808285015260005b81811015611e0157858101830151858201604001528201611de5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e3757600080fd5b50565b60008060408385031215611e4d57600080fd5b8235611e5881611e22565b946020939093013593505050565b600080600060608486031215611e7b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ea757600080fd5b8335611eb281611e22565b92506020840135611ec281611e22565b929592945050506040919091013590565b60008060408385031215611ee657600080fd5b50508035926020909101359150565b600060208284031215611f0757600080fd5b8135611ca781611e22565b600060208284031215611f2457600080fd5b5035919050565b60008060408385031215611f3e57600080fd5b8235611f4981611e22565b91506020830135611f5981611e22565b809150509250929050565b8015158114611e3757600080fd5b60008060408385031215611f8557600080fd5b8235611f9081611e22565b91506020830135611f5981611f64565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ff1578160001904821115611fd757611fd7611fa0565b80851615611fe457918102915b93841c9390800290611fbb565b509250929050565b60008261200857506001610620565b8161201557506000610620565b816001811461202b576002811461203557612051565b6001915050610620565b60ff84111561204657612046611fa0565b50506001821b610620565b5060208310610133831016604e8410600b8410161715612074575081810a610620565b61207e8383611fb6565b806000190482111561209257612092611fa0565b029392505050565b6000611ca760ff841683611ff9565b808202811582820484141761062057610620611fa0565b6000602082840312156120d257600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561212057600080fd5b8151611ca781611e22565b60008060006060848603121561214057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561216b57600080fd5b8151611ca781611f64565b8082018082111561062057610620611fa0565b60006001820161219b5761219b611fa0565b5060010190565b8181038181111561062057610620611fa0565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561221b5784516001600160a01b0316835293830193918301916001016121f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261225957634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220249a62be4036c783c4d98de55a96cda3070c86475f0af27ed1459437848e6cfe64736f6c63430008130033

Deployed Bytecode Sourcemap

9925:11673:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12239:83;;;;;;;;;;-1:-1:-1;12309:5:0;;;;;;;;;;;;-1:-1:-1;;;12309:5:0;;;;12239:83;;;;;;;:::i;:::-;;;;;;;;13127:186;;;;;;;;;;-1:-1:-1;13127:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;13127:186:0;1023:187:1;12516:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;12516:100:0;1215:177:1;18550:127:0;;;;;;;;;;;;;:::i;20424:228::-;;;;;;;;;;-1:-1:-1;20424:228:0;;;;;:::i;:::-;;:::i;:::-;;13321:446;;;;;;;;;;-1:-1:-1;13321:446:0;;;;;:::i;:::-;;:::i;20198:218::-;;;;;;;;;;-1:-1:-1;20198:218:0;;;;;:::i;:::-;;:::i;20660:207::-;;;;;;;;;;-1:-1:-1;20660:207:0;;;;;:::i;:::-;;:::i;12425:83::-;;;;;;;;;;-1:-1:-1;12425:83:0;;10144:1;2574:36:1;;2562:2;2547:18;12425:83:0;2432:184:1;18180:174:0;;;;;;;;;;-1:-1:-1;18180:174:0;;;;;:::i;:::-;;:::i;21051:361::-;;;;;;;;;;;;;:::i;11056:59::-;;;;;;;;;;;;;;;;11182:38;;;;;;;;;;;;;;;;11122:53;;;;;;;;;;;;;;;;12624:119;;;;;;;;;;-1:-1:-1;12624:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;12717:18:0;12690:7;12717:18;;;:9;:18;;;;;;;12624:119;1854:148;;;;;;;;;;;;;:::i;11477:39::-;;;;;;;;;;-1:-1:-1;11477:39:0;;;;-1:-1:-1;;;11477:39:0;;;;;;20030:160;;;;;;;;;;-1:-1:-1;20030:160:0;;;;;:::i;:::-;;:::i;18362:180::-;;;;;;;;;;-1:-1:-1;18362:180:0;;;;;:::i;:::-;;:::i;19067:722::-;;;;;;;;;;;;;:::i;1640:79::-;;;;;;;;;;-1:-1:-1;1678:7:0;1705:6;-1:-1:-1;;;;;1705:6:0;1640:79;;;-1:-1:-1;;;;;3037:32:1;;;3019:51;;3007:2;2992:18;1640:79:0;2873:203:1;12330:87:0;;;;;;;;;;-1:-1:-1;12402:7:0;;;;;;;;;;;;-1:-1:-1;;;12402:7:0;;;;12330:87;;20875:168;;;;;;;;;;-1:-1:-1;20875:168:0;;;;;:::i;:::-;;:::i;12751:192::-;;;;;;;;;;-1:-1:-1;12751:192:0;;;;;:::i;:::-;;:::i;10992:57::-;;;;;;;;;;;;;;;;11229:38;;;;;;;;;;-1:-1:-1;11229:38:0;;;;-1:-1:-1;;;;;11229:38:0;;;21420:175;;;;;;;;;;-1:-1:-1;21420:175:0;;;;;:::i;:::-;;:::i;10931:54::-;;;;;;;;;;;;;;;;12951:168;;;;;;;;;;-1:-1:-1;12951:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;13084:18:0;;;13057:7;13084:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12951:168;19797:225;;;;;;;;;;;;;:::i;18082:90::-;;;;;;;;;;;;;:::i;18685:374::-;;;;;;;;;;-1:-1:-1;18685:374:0;;;;;:::i;:::-;;:::i;13127:186::-;13227:4;13244:39;1273:10;13267:7;13276:6;13244:8;:39::i;:::-;-1:-1:-1;13301:4:0;13127:186;;;;;:::o;12516:100::-;12569:7;10203:15;10144:1;10203:2;:15;:::i;:::-;10192:26;;:8;:26;:::i;:::-;12589:19;;12516:100;:::o;18550:127::-;18639:11;;:30;;;-1:-1:-1;;;18639:30:0;;;;18612:7;;-1:-1:-1;;;;;18639:11:0;;:28;;:30;;;;;;;;;;;;;;:11;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20424:228::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;;;;;;;;;20560:9:::1;:18:::0;;;;20589:9:::1;:18:::0;20618:13:::1;:26:::0;20424:228::o;13321:446::-;13453:4;13470:36;13480:6;13488:9;13499:6;13470:9;:36::i;:::-;13517:220;13540:6;1273:10;13588:138;13644:6;13588:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13588:19:0;;;;;;:11;:19;;;;;;;;1273:10;13588:33;;;;;;;;;;:37;:138::i;:::-;13517:8;:220::i;:::-;-1:-1:-1;13755:4:0;13321:446;;;;;:::o;20198:218::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20330:8:::1;:16:::0;;;;20357:8:::1;:16:::0;20384:12:::1;:24:::0;20198:218::o;20660:207::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20794:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;20794:65:0;;::::1;::::0;::::1;6816:25:1::0;;;6857:18;;;6850:34;;;-1:-1:-1;;;;;20794:11:0;;::::1;::::0;:35:::1;::::0;6789:18:1;;20794:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20660:207:::0;;:::o;18180:174::-;18306:11;;:40;;-1:-1:-1;;;18306:40:0;;-1:-1:-1;;;;;3037:32:1;;;18306:40:0;;;3019:51:1;18274:7:0;;18306:11;;:27;;2992:18:1;;18306:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21051:361::-;21114:9;;-1:-1:-1;;;;;21114:9:0;1273:10;-1:-1:-1;;;;;21098:25:0;;21090:34;;;;;;21176:4;21135:20;12717:18;;;:9;:18;;;;;;21197:16;;21193:79;;21230:30;21247:12;21230:16;:30::i;:::-;21303:21;21339:14;;21335:70;;21370:23;21382:10;21370:11;:23::i;:::-;21079:333;;21051:361::o;1854:148::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;1961:1:::1;1945:6:::0;;1924:40:::1;::::0;-1:-1:-1;;;;;1945:6:0;;::::1;::::0;1924:40:::1;::::0;1961:1;;1924:40:::1;1992:1;1975:19:::0;;-1:-1:-1;;;;;;1975:19:0::1;::::0;;1854:148::o;20030:160::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20132:18:::1;:23:::0;;;;20166:11:::1;:16:::0;20030:160::o;18362:180::-;18492:11;;:42;;-1:-1:-1;;;18492:42:0;;-1:-1:-1;;;;;3037:32:1;;;18492:42:0;;;3019:51:1;18460:7:0;;18492:11;;:29;;2992:18:1;;18492:42:0;2873:203:1;19067:722:0;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;19131:11:::1;::::0;-1:-1:-1;;;19131:11:0;::::1;;;19130:12;19122:48;;;::::0;-1:-1:-1;;;19122:48:0;;7097:2:1;19122:48:0::1;::::0;::::1;7079:21:1::0;7136:2;7116:18;;;7109:30;7175:25;7155:18;;;7148:53;7218:18;;19122:48:0::1;6895:347:1::0;19122:48:0::1;19181:6;:63:::0;;-1:-1:-1;;;;;;19181:63:0::1;19201:42;19181:63:::0;;::::1;::::0;;;19255:54:::1;::::0;19272:4:::1;::::0;10203:15:::1;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;19255:54::-;19339:6;;;;;;;;;-1:-1:-1::0;;;;;19339:6:0::1;-1:-1:-1::0;;;;;19339:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19327:40:0::1;;19390:4;19410:6;;;;;;;;;-1:-1:-1::0;;;;;19410:6:0::1;-1:-1:-1::0;;;;;19410:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19327:107;::::0;-1:-1:-1;;;;;;19327:107:0::1;::::0;;;;;;-1:-1:-1;;;;;7733:15:1;;;19327:107:0::1;::::0;::::1;7715:34:1::0;7785:15;;7765:18;;;7758:43;7650:18;;19327:107:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19320:4;:114:::0;;-1:-1:-1;;;;;19320:114:0;;::::1;-1:-1:-1::0;;;;;;19320:114:0;;::::1;;::::0;;19445:6:::1;::::0;::::1;:22;19475:21;19520:4;19540:24;19520:4:::0;-1:-1:-1;;;;;12717:18:0;12690:7;12717:18;;;:9;:18;;;;;;;12624:119;19540:24:::1;19579:1;19595::::0;19611:7:::1;1678::::0;1705:6;-1:-1:-1;;;;;1705:6:0;;1640:79;19611:7:::1;19445:214;::::0;::::1;::::0;;;-1:-1:-1;;;;;;19445:214:0;;;-1:-1:-1;;;;;8171:15:1;;;19445:214:0::1;::::0;::::1;8153:34:1::0;8203:18;;;8196:34;;;;8246:18;;;8239:34;;;;8289:18;;;8282:34;8353:15;;;8332:19;;;8325:44;19633:15:0::1;8385:19:1::0;;;8378:35;8087:19;;19445:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19677:4:0::1;::::0;19699:6:::1;::::0;19670:53:::1;::::0;-1:-1:-1;;;19670:53:0;;-1:-1:-1;;;;;19699:6:0;;::::1;19670:53;::::0;::::1;8909:51:1::0;-1:-1:-1;;8976:18:1;;;8969:34;19677:4:0;::::1;::::0;-1:-1:-1;19670:20:0::1;::::0;8882:18:1;;19670:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19734:11:0::1;:18:::0;;-1:-1:-1;;;;19763:18:0;-1:-1:-1;;;19763:18:0;;;19067:722::o;20875:168::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20964:6:::1;20958:3;:12;20950:54;;;::::0;-1:-1:-1;;;20950:54:0;;9466:2:1;20950:54:0::1;::::0;::::1;9448:21:1::0;9505:2;9485:18;;;9478:30;9544:31;9524:18;;;9517:59;9593:18;;20950:54:0::1;9264:353:1::0;20950:54:0::1;21015:14;:20:::0;20875:168::o;12751:192::-;12854:4;12871:42;1273:10;12895:9;12906:6;12871:9;:42::i;21420:175::-;21523:9;;-1:-1:-1;;;;;21523:9:0;1273:10;-1:-1:-1;;;;;21507:25:0;;21499:34;;;;;;21568:9;;21544:43;;-1:-1:-1;;;21544:43:0;;-1:-1:-1;;;;;21568:9:0;;;21544:43;;;8909:51:1;8976:18;;;8969:34;;;21544:23:0;;;;;;8882:18:1;;21544:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21420:175;;:::o;19797:225::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;10203:15:::1;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;:::-;19858:12;:27:::0;10203:15:::1;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;:::-;19896:15;:30:::0;19937:20:::1;:28:::0;;-1:-1:-1;;;;19937:28:0::1;::::0;;19981:33:::1;10203:15;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;:::-;19981:33;::::0;1361:25:1;;;1349:2;1334:18;19981:33:0::1;;;;;;;19797:225::o:0;18082:90::-;18127:11;;:37;;-1:-1:-1;;;18127:37:0;;18153:10;18127:37;;;3019:51:1;-1:-1:-1;;;;;18127:11:0;;;;:25;;2992:18:1;;18127:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18082:90::o;18685:374::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18804:23:0;::::1;18822:4;18804:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;18841:4:0::1;::::0;-1:-1:-1;;;;;18831:14:0;;::::1;18841:4:::0;::::1;18831:14;;18804:41;18796:50;;;::::0;::::1;;-1:-1:-1::0;;;;;18857:25:0;::::1;;::::0;;;:17:::1;:25;::::0;;;;:34;;-1:-1:-1;;18857:34:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18902:150:::1;;18929:11;::::0;:31:::1;::::0;-1:-1:-1;;;18929:31:0;;-1:-1:-1;;;;;8927:32:1;;;18929:31:0::1;::::0;::::1;8909:51:1::0;18929:11:0::1;8976:18:1::0;;;8969:34;18929:11:0;;::::1;::::0;:20:::1;::::0;8882:18:1;;18929:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;18902:150;18993:11;::::0;-1:-1:-1;;;;;19022:17:0;;::::1;18993:11;19022:17:::0;;;18993:11;19022:17:::1;::::0;;;;;;;18993:47;;-1:-1:-1;;;18993:47:0;;::::1;::::0;::::1;8909:51:1::0;;;;8976:18;;;8969:34;18993:11:0;::::1;::::0;:20:::1;::::0;8882:18:1;;18993:47:0::1;8735:274:1::0;13775:335:0;-1:-1:-1;;;;;13868:19:0;;13860:68;;;;-1:-1:-1;;;13860:68:0;;10398:2:1;13860:68:0;;;10380:21:1;10437:2;10417:18;;;10410:30;10476:34;10456:18;;;10449:62;-1:-1:-1;;;10527:18:1;;;10520:34;10571:19;;13860:68:0;10196:400:1;13860:68:0;-1:-1:-1;;;;;13947:21:0;;13939:68;;;;-1:-1:-1;;;13939:68:0;;10803:2:1;13939:68:0;;;10785:21:1;10842:2;10822:18;;;10815:30;10881:34;10861:18;;;10854:62;-1:-1:-1;;;10932:18:1;;;10925:32;10974:19;;13939:68:0;10601:398:1;13939:68:0;-1:-1:-1;;;;;14018:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14070:32;;1361:25:1;;;14070:32:0;;1334:18:1;14070:32:0;;;;;;;13775:335;;;:::o;14118:2964::-;-1:-1:-1;;;;;14206:18:0;;14198:68;;;;-1:-1:-1;;;14198:68:0;;11206:2:1;14198:68:0;;;11188:21:1;11245:2;11225:18;;;11218:30;11284:34;11264:18;;;11257:62;-1:-1:-1;;;11335:18:1;;;11328:35;11380:19;;14198:68:0;11004:401:1;14198:68:0;-1:-1:-1;;;;;14285:16:0;;14277:64;;;;-1:-1:-1;;;14277:64:0;;11612:2:1;14277:64:0;;;11594:21:1;11651:2;11631:18;;;11624:30;11690:34;11670:18;;;11663:62;-1:-1:-1;;;11741:18:1;;;11734:33;11784:19;;14277:64:0;11410:399:1;14277:64:0;14369:1;14360:6;:10;14352:71;;;;-1:-1:-1;;;14352:71:0;;12016:2:1;14352:71:0;;;11998:21:1;12055:2;12035:18;;;12028:30;12094:34;12074:18;;;12067:62;-1:-1:-1;;;12145:18:1;;;12138:46;12201:19;;14352:71:0;11814:412:1;14352:71:0;14434:17;1705:6;;-1:-1:-1;;;;;14470:15:0;;;1705:6;;14470:15;;;;:32;;-1:-1:-1;1678:7:0;1705:6;-1:-1:-1;;;;;14489:13:0;;;1705:6;;14489:13;;14470:32;14466:1906;;;14531:107;14634:3;14531:80;14575:12;;14561:11;;:26;14560:50;;14602:8;;14560:50;;;14591:8;;14560:50;14531:6;;:28;:80::i;:::-;:102;;:107::i;:::-;14659:20;;14519:119;;-1:-1:-1;;;;14659:20:0;;;;14655:421;;;14718:6;;-1:-1:-1;;;;;14704:21:0;;;14718:6;;14704:21;;;;:44;;-1:-1:-1;14743:4:0;;-1:-1:-1;;;;;14729:19:0;;;14743:4;;14729:19;;14704:44;14700:361;;;14825:9;14807:28;;;;:17;:28;;;;;;14838:12;-1:-1:-1;14773:202:0;;;;-1:-1:-1;;;14773:202:0;;12433:2:1;14773:202:0;;;12415:21:1;12472:2;12452:18;;;12445:30;12511:34;12491:18;;;12484:62;12582:34;12562:18;;;12555:62;-1:-1:-1;;;12633:19:1;;;12626:40;12683:19;;14773:202:0;12231:477:1;14773:202:0;15016:9;14998:28;;;;:17;:28;;;;;15029:12;14998:43;;14700:361;15122:4;;-1:-1:-1;;;;;15114:12:0;;;15122:4;;15114:12;:37;;;;-1:-1:-1;15144:6:0;;-1:-1:-1;;;;;15130:21:0;;;15144:6;;15130:21;;15114:37;:64;;;;-1:-1:-1;;;;;;15156:22:0;;;;;;:18;:22;;;;;;;;15155:23;15114:64;15092:391;;;15231:12;;15221:6;:22;;15213:60;;;;-1:-1:-1;;;15213:60:0;;12915:2:1;15213:60:0;;;12897:21:1;12954:2;12934:18;;;12927:30;12993:27;12973:18;;;12966:55;13038:18;;15213:60:0;12713:349:1;15213:60:0;15348:15;;15338:6;15322:13;15332:2;-1:-1:-1;;;;;12717:18:0;12690:7;12717:18;;;:9;:18;;;;;;;12624:119;15322:13;:22;;;;:::i;:::-;:41;;15292:143;;;;-1:-1:-1;;;15292:143:0;;13399:2:1;15292:143:0;;;13381:21:1;13438:2;13418:18;;;13411:30;13477;13457:18;;;13450:58;13525:18;;15292:143:0;13197:352:1;15292:143:0;15454:11;:13;;;:11;:13;;;:::i;:::-;;;;;;15092:391;15509:4;;-1:-1:-1;;;;;15503:10:0;;;15509:4;;15503:10;:35;;;;-1:-1:-1;;;;;;15517:21:0;;15533:4;15517:21;;15503:35;15499:206;;;15571:118;15685:3;15571:87;15619:13;;15605:11;;:27;15604:53;;15648:9;;15604:53;;;15636:9;;15571:6;;:32;:87::i;:118::-;15559:130;;15499:206;15770:4;15721:28;12717:18;;;:9;:18;;;;;;15814:6;;-1:-1:-1;;;15814:6:0;;;;15813:7;:38;;;;-1:-1:-1;15847:4:0;;-1:-1:-1;;;;;15841:10:0;;;15847:4;;15841:10;15813:38;:70;;;;-1:-1:-1;15872:11:0;;-1:-1:-1;;;15872:11:0;;;;15813:70;:130;;;;;15927:16;;15904:20;:39;15813:130;:182;;;;;15978:17;;15964:11;;:31;15813:182;15791:570;;;16030:114;16069:56;16076:6;16084:40;16091:20;16113:10;;16084:6;:40::i;:::-;16069:6;:56::i;:::-;16030:16;:114::i;:::-;16192:21;16257:10;16236:31;;16232:114;;;16292:34;16304:21;16292:11;:34::i;:::-;16011:350;15791:570;14504:1868;14466:1906;16388:13;;16384:172;;16463:4;16445:24;;;;:9;:24;;;;;;:39;;16474:9;16445:28;:39::i;:::-;16436:4;16418:24;;;;:9;:24;;;;;;;:66;;;;16504:40;;-1:-1:-1;;;;;16504:40:0;;;;;;;16534:9;1361:25:1;;1349:2;1334:18;;1215:177;16504:40:0;;;;;;;;16384:172;-1:-1:-1;;;;;16584:15:0;;;;;;:9;:15;;;;;;:27;;16604:6;16584:19;:27::i;:::-;-1:-1:-1;;;;;16566:15:0;;;;;;:9;:15;;;;;:45;16638:40;16656:21;:6;16667:9;16656:10;:21::i;:::-;-1:-1:-1;;;;;16638:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;16622:13:0;;;;;;;:9;:13;;;;;:56;;;;16694:41;;;16713:21;:6;16724:9;16713:10;:21::i;:::-;16694:41;;1361:25:1;;;1349:2;1334:18;16694:41:0;;;;;;;-1:-1:-1;;;;;16753:23:0;;;;;;:17;:23;;;;;;;;16748:115;;16797:11;;-1:-1:-1;;;;;16824:15:0;;;16797:11;16824:15;;;16797:11;16824:15;;;;;;;;16797:43;;-1:-1:-1;;;16797:43:0;;;;;8909:51:1;;;;8976:18;;;8969:34;16797:11:0;;;:20;;8882:18:1;;16797:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16793:59;;-1:-1:-1;;;;;16878:21:0;;;;;;:17;:21;;;;;;;;16873:139;;16937:11;;-1:-1:-1;;;;;16962:13:0;;;16937:11;16962:13;;;16937:11;16962:13;;;;;;;;16937:39;;-1:-1:-1;;;16937:39:0;;;;;8909:51:1;;;;8976:18;;;8969:34;16937:11:0;;;:20;;8882:18:1;;16937:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16916:85;;17028:11;;17048:14;;17028:35;;-1:-1:-1;;;;;;17028:35:0;;-1:-1:-1;;;;;17028:11:0;;;;:19;;:35;;;;1361:25:1;;;1349:2;1334:18;;1215:177;17028:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17024:51;;;14187:2895;14118:2964;;;:::o;21957:224::-;22077:7;22113:12;22105:6;;;;22097:29;;;;-1:-1:-1;;;22097:29:0;;;;;;;;:::i;:::-;-1:-1:-1;22137:9:0;22149:5;22153:1;22149;:5;:::i;:::-;22137:17;21957:224;-1:-1:-1;;;;;21957:224:0:o;17500:456::-;11610:6;:13;;-1:-1:-1;;;;11610:13:0;-1:-1:-1;;;11610:13:0;;;17602:16:::1;::::0;;17616:1:::1;17602:16:::0;;;;;::::1;::::0;;-1:-1:-1;;17602:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17602:16:0::1;17578:40;;17647:4;17629;17634:1;17629:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17629:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17673:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17673:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;17629:7;;17673:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17663:4;17668:1;17663:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17663:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17729:6:::1;::::0;17697:53:::1;::::0;17714:4:::1;::::0;17729:6:::1;17738:11:::0;17697:8:::1;:53::i;:::-;17761:6;::::0;:187:::1;::::0;-1:-1:-1;;;17761:187:0;;-1:-1:-1;;;;;17761:6:0;;::::1;::::0;:57:::1;::::0;:187:::1;::::0;17833:11;;17761:6:::1;::::0;17875:4;;17902::::1;::::0;17922:15:::1;::::0;17761:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11646:6:0;:14;;-1:-1:-1;;;;11646:14:0;;;-1:-1:-1;;;;17500:456:0:o;17090:402::-;17146:24;17173:39;17208:3;17173:30;17184:18;;17173:6;:10;;:30;;;;:::i;:39::-;17146:66;-1:-1:-1;17227:20:0;;17223:114;;17268:11;;;;;;;;;-1:-1:-1;;;;;17268:11:0;-1:-1:-1;;;;;17268:19:0;;17295:16;17268:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17264:62;;17347:17;17367:32;17395:3;17367:23;17378:11;;17367:6;:10;;:23;;;;:::i;:32::-;17347:52;-1:-1:-1;17414:13:0;;17410:75;;17444:9;;:29;;-1:-1:-1;;;;;17444:9:0;;;;:29;;;;;17463:9;;17444;:29;:9;:29;17463:9;17444;:29;;;;;;;;;;;;;;;;;;;22189:246;22247:7;22271:1;22276;22271:6;22267:47;;-1:-1:-1;22301:1:0;22294:8;;22267:47;22324:9;22336:5;22340:1;22336;:5;:::i;:::-;22324:17;-1:-1:-1;22369:1:0;22360:5;22364:1;22324:17;22360:5;:::i;:::-;:10;22352:56;;;;-1:-1:-1;;;22352:56:0;;15500:2:1;22352:56:0;;;15482:21:1;15539:2;15519:18;;;15512:30;15578:34;15558:18;;;15551:62;-1:-1:-1;;;15629:18:1;;;15622:31;15670:19;;22352:56:0;15298:397:1;22352:56:0;22426:1;22189:246;-1:-1:-1;;;22189:246:0:o;22443:132::-;22501:7;22528:39;22532:1;22535;22528:39;;;;;;;;;;;;;;;;;:3;:39::i;17964:110::-;18024:7;18056:1;18052;:5;18051:15;;18065:1;18051:15;;;-1:-1:-1;18061:1:0;17964:110;-1:-1:-1;17964:110:0:o;21626:179::-;21684:7;;21716:5;21720:1;21716;:5;:::i;:::-;21704:17;;21745:1;21740;:6;;21732:46;;;;-1:-1:-1;;;21732:46:0;;15902:2:1;21732:46:0;;;15884:21:1;15941:2;15921:18;;;15914:30;15980:29;15960:18;;;15953:57;16027:18;;21732:46:0;15700:351:1;21813:136:0;21871:7;21898:43;21902:1;21905;21898:43;;;;;;;;;;;;;;;;;:3;:43::i;22583:223::-;22703:7;22738:12;22731:5;22723:28;;;;-1:-1:-1;;;22723:28:0;;;;;;;;:::i;:::-;-1:-1:-1;22762:9:0;22774:5;22778:1;22774;:5;:::i;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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:316::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;-1:-1:-1;;1582:23:1;;;1652:2;1637:18;;1624:32;;-1:-1:-1;1703:2:1;1688:18;;;1675:32;;1397:316;-1:-1:-1;1397:316:1:o;1718:456::-;1795:6;1803;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:52;;;1880:1;1877;1870:12;1832:52;1919:9;1906:23;1938:31;1963:5;1938:31;:::i;:::-;1988:5;-1:-1:-1;2045:2:1;2030:18;;2017:32;2058:33;2017:32;2058:33;:::i;:::-;1718:456;;2110:7;;-1:-1:-1;;;2164:2:1;2149:18;;;;2136:32;;1718:456::o;2179:248::-;2247:6;2255;2308:2;2296:9;2287:7;2283:23;2279:32;2276:52;;;2324:1;2321;2314:12;2276:52;-1:-1:-1;;2347:23:1;;;2417:2;2402:18;;;2389:32;;-1:-1:-1;2179:248:1:o;2621:247::-;2680:6;2733:2;2721:9;2712:7;2708:23;2704:32;2701:52;;;2749:1;2746;2739:12;2701:52;2788:9;2775:23;2807:31;2832:5;2807:31;:::i;3081:180::-;3140:6;3193:2;3181:9;3172:7;3168:23;3164:32;3161:52;;;3209:1;3206;3199:12;3161:52;-1:-1:-1;3232:23:1;;3081:180;-1:-1:-1;3081:180:1:o;3501:388::-;3569:6;3577;3630:2;3618:9;3609:7;3605:23;3601:32;3598:52;;;3646:1;3643;3636:12;3598:52;3685:9;3672:23;3704:31;3729:5;3704:31;:::i;:::-;3754:5;-1:-1:-1;3811:2:1;3796:18;;3783:32;3824:33;3783:32;3824:33;:::i;:::-;3876:7;3866:17;;;3501:388;;;;;:::o;3894:118::-;3980:5;3973:13;3966:21;3959:5;3956:32;3946:60;;4002:1;3999;3992:12;4017:382;4082:6;4090;4143:2;4131:9;4122:7;4118:23;4114:32;4111:52;;;4159:1;4156;4149:12;4111:52;4198:9;4185:23;4217:31;4242:5;4217:31;:::i;:::-;4267:5;-1:-1:-1;4324:2:1;4309:18;;4296:32;4337:30;4296:32;4337:30;:::i;4404:127::-;4465:10;4460:3;4456:20;4453:1;4446:31;4496:4;4493:1;4486:15;4520:4;4517:1;4510:15;4536:422;4625:1;4668:5;4625:1;4682:270;4703:7;4693:8;4690:21;4682:270;;;4762:4;4758:1;4754:6;4750:17;4744:4;4741:27;4738:53;;;4771:18;;:::i;:::-;4821:7;4811:8;4807:22;4804:55;;;4841:16;;;;4804:55;4920:22;;;;4880:15;;;;4682:270;;;4686:3;4536:422;;;;;:::o;4963:806::-;5012:5;5042:8;5032:80;;-1:-1:-1;5083:1:1;5097:5;;5032:80;5131:4;5121:76;;-1:-1:-1;5168:1:1;5182:5;;5121:76;5213:4;5231:1;5226:59;;;;5299:1;5294:130;;;;5206:218;;5226:59;5256:1;5247:10;;5270:5;;;5294:130;5331:3;5321:8;5318:17;5315:43;;;5338:18;;:::i;:::-;-1:-1:-1;;5394:1:1;5380:16;;5409:5;;5206:218;;5508:2;5498:8;5495:16;5489:3;5483:4;5480:13;5476:36;5470:2;5460:8;5457:16;5452:2;5446:4;5443:12;5439:35;5436:77;5433:159;;;-1:-1:-1;5545:19:1;;;5577:5;;5433:159;5624:34;5649:8;5643:4;5624:34;:::i;:::-;5694:6;5690:1;5686:6;5682:19;5673:7;5670:32;5667:58;;;5705:18;;:::i;:::-;5743:20;;4963:806;-1:-1:-1;;;4963:806:1:o;5774:140::-;5832:5;5861:47;5902:4;5892:8;5888:19;5882:4;5861:47;:::i;5919:168::-;5992:9;;;6023;;6040:15;;;6034:22;;6020:37;6010:71;;6061:18;;:::i;6092:184::-;6162:6;6215:2;6203:9;6194:7;6190:23;6186:32;6183:52;;;6231:1;6228;6221:12;6183:52;-1:-1:-1;6254:16:1;;6092:184;-1:-1:-1;6092:184:1:o;6281:356::-;6483:2;6465:21;;;6502:18;;;6495:30;6561:34;6556:2;6541:18;;6534:62;6628:2;6613:18;;6281:356::o;7247:251::-;7317:6;7370:2;7358:9;7349:7;7345:23;7341:32;7338:52;;;7386:1;7383;7376:12;7338:52;7418:9;7412:16;7437:31;7462:5;7437:31;:::i;8424:306::-;8512:6;8520;8528;8581:2;8569:9;8560:7;8556:23;8552:32;8549:52;;;8597:1;8594;8587:12;8549:52;8626:9;8620:16;8610:26;;8676:2;8665:9;8661:18;8655:25;8645:35;;8720:2;8709:9;8705:18;8699:25;8689:35;;8424:306;;;;;:::o;9014:245::-;9081:6;9134:2;9122:9;9113:7;9109:23;9105:32;9102:52;;;9150:1;9147;9140:12;9102:52;9182:9;9176:16;9201:28;9223:5;9201:28;:::i;13067:125::-;13132:9;;;13153:10;;;13150:36;;;13166:18;;:::i;13554:135::-;13593:3;13614:17;;;13611:43;;13634:18;;:::i;:::-;-1:-1:-1;13681:1:1;13670:13;;13554:135::o;13694:128::-;13761:9;;;13782:11;;;13779:37;;;13796:18;;:::i;13959:127::-;14020:10;14015:3;14011:20;14008:1;14001:31;14051:4;14048:1;14041:15;14075:4;14072:1;14065:15;14091:980;14353:4;14401:3;14390:9;14386:19;14432:6;14421:9;14414:25;14458:2;14496:6;14491:2;14480:9;14476:18;14469:34;14539:3;14534:2;14523:9;14519:18;14512:31;14563:6;14598;14592:13;14629:6;14621;14614:22;14667:3;14656:9;14652:19;14645:26;;14706:2;14698:6;14694:15;14680:29;;14727:1;14737:195;14751:6;14748:1;14745:13;14737:195;;;14816:13;;-1:-1:-1;;;;;14812:39:1;14800:52;;14907:15;;;;14872:12;;;;14848:1;14766:9;14737:195;;;-1:-1:-1;;;;;;;14988:32:1;;;;14983:2;14968:18;;14961:60;-1:-1:-1;;;15052:3:1;15037:19;15030:35;14949:3;14091:980;-1:-1:-1;;;14091:980:1:o;15076:217::-;15116:1;15142;15132:132;;15186:10;15181:3;15177:20;15174:1;15167:31;15221:4;15218:1;15211:15;15249:4;15246:1;15239:15;15132:132;-1:-1:-1;15278:9:1;;15076:217::o

Swarm Source

ipfs://b0d892e8bf4b6101973b2826273872b91bc36e8b16d34791974d1aee7ed6fc1c

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  ]
[ 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.