ETH Price: $3,342.04 (-1.20%)
Gas: 5.04 Gwei
 

Overview

ETH Balance

0.288199361776852929 ETH

Eth Value

$963.17 (@ $3,342.04/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve216721202025-01-21 9:58:474 days ago1737453527IN
0x746F66FF...b8969Ea5D
0 ETH0.0003922116.19854949
Transfer207879182024-09-19 23:26:47127 days ago1726788407IN
0x746F66FF...b8969Ea5D
0 ETH0.0150616217.1848432
Approve202614942024-07-08 11:28:47201 days ago1720438127IN
0x746F66FF...b8969Ea5D
0 ETH0.000139483.00368584
Approve201416982024-06-21 17:50:11218 days ago1718992211IN
0x746F66FF...b8969Ea5D
0 ETH0.0004868410.54940955
Approve180681652023-09-05 5:22:59508 days ago1693891379IN
0x746F66FF...b8969Ea5D
0 ETH0.0006326313.69073632
Approve171542552023-04-29 20:57:11636 days ago1682801831IN
0x746F66FF...b8969Ea5D
0 ETH0.0016510335.55439306
Approve171091962023-04-23 13:05:47643 days ago1682255147IN
0x746F66FF...b8969Ea5D
0 ETH0.0015969834.34599274
Approve169376612023-03-30 4:23:11667 days ago1680150191IN
0x746F66FF...b8969Ea5D
0 ETH0.000704129.0797424
Approve156163702022-09-26 8:31:23852 days ago1664181083IN
0x746F66FF...b8969Ea5D
0 ETH0.000371817.99654448
Approve154059232022-08-25 0:04:38884 days ago1661385878IN
0x746F66FF...b8969Ea5D
0 ETH0.0008984319.32240213
Approve147714522022-05-14 3:59:52987 days ago1652500792IN
0x746F66FF...b8969Ea5D
0 ETH0.0010653744
Approve147714522022-05-14 3:59:52987 days ago1652500792IN
0x746F66FF...b8969Ea5D
0 ETH0.0010653744
Approve142487522022-02-21 10:02:481069 days ago1645437768IN
0x746F66FF...b8969Ea5D
0 ETH0.0010695844.17395609
Approve136138642021-11-14 12:02:201168 days ago1636891340IN
0x746F66FF...b8969Ea5D
0 ETH0.0037771881.23505063
Approve135566332021-11-05 12:39:501177 days ago1636115990IN
0x746F66FF...b8969Ea5D
0 ETH0.00334305138.06868762
Approve132146602021-09-13 2:13:301230 days ago1631499210IN
0x746F66FF...b8969Ea5D
0 ETH0.0038449982.69339766
Approve131726332021-09-06 14:12:591237 days ago1630937579IN
0x746F66FF...b8969Ea5D
0 ETH0.0023758698.12357125
Approve129388332021-08-01 9:28:211273 days ago1627810101IN
0x746F66FF...b8969Ea5D
0 ETH0.0013019128
Approve129145522021-07-28 12:54:451277 days ago1627476885IN
0x746F66FF...b8969Ea5D
0 ETH0.0004061928
Set Swap Back Se...129129252021-07-28 6:42:321277 days ago1627454552IN
0x746F66FF...b8969Ea5D
0 ETH0.0007506724
Transfer129128812021-07-28 6:34:101277 days ago1627454050IN
0x746F66FF...b8969Ea5D
0 ETH0.0292428833
Set Swap Back Se...129128332021-07-28 6:23:431277 days ago1627453423IN
0x746F66FF...b8969Ea5D
0 ETH0.0008761228
Approve129096972021-07-27 18:31:311277 days ago1627410691IN
0x746F66FF...b8969Ea5D
0 ETH0.0012089226
Approve129093702021-07-27 17:17:411278 days ago1627406261IN
0x746F66FF...b8969Ea5D
0 ETH0.0005512638
Approve129081322021-07-27 12:39:401278 days ago1627389580IN
0x746F66FF...b8969Ea5D
0 ETH0.0012275226.4
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
207879182024-09-19 23:26:47127 days ago1726788407
0x746F66FF...b8969Ea5D
0.0299585 ETH
207879182024-09-19 23:26:47127 days ago1726788407
0x746F66FF...b8969Ea5D
0.00149792 ETH
207879182024-09-19 23:26:47127 days ago1726788407
0x746F66FF...b8969Ea5D
0.03145643 ETH
129128812021-07-28 6:34:101277 days ago1627454050
0x746F66FF...b8969Ea5D
1.00028988 ETH
129128812021-07-28 6:34:101277 days ago1627454050
0x746F66FF...b8969Ea5D
0.05001449 ETH
129128812021-07-28 6:34:101277 days ago1627454050
0x746F66FF...b8969Ea5D
1.05030438 ETH
129071152021-07-27 8:34:251278 days ago1627374865
0x746F66FF...b8969Ea5D
9.65296379 ETH
129071152021-07-27 8:34:251278 days ago1627374865
0x746F66FF...b8969Ea5D
0.48264818 ETH
129071152021-07-27 8:34:251278 days ago1627374865
0x746F66FF...b8969Ea5D
10.13561198 ETH
129070072021-07-27 8:12:471278 days ago1627373567
0x746F66FF...b8969Ea5D
0.34931557 ETH
129070072021-07-27 8:12:471278 days ago1627373567
0x746F66FF...b8969Ea5D
0.01746577 ETH
129070072021-07-27 8:12:471278 days ago1627373567
0x746F66FF...b8969Ea5D
0.36678135 ETH
129067292021-07-27 7:02:351278 days ago1627369355
0x746F66FF...b8969Ea5D
0.36379211 ETH
129067292021-07-27 7:02:351278 days ago1627369355
0x746F66FF...b8969Ea5D
0.0181896 ETH
129067292021-07-27 7:02:351278 days ago1627369355
0x746F66FF...b8969Ea5D
0.38198171 ETH
129067162021-07-27 6:59:411278 days ago1627369181
0x746F66FF...b8969Ea5D
0.39085478 ETH
129067162021-07-27 6:59:411278 days ago1627369181
0x746F66FF...b8969Ea5D
0.01954273 ETH
129067162021-07-27 6:59:411278 days ago1627369181
0x746F66FF...b8969Ea5D
0.41039752 ETH
129065162021-07-27 6:15:481278 days ago1627366548
0x746F66FF...b8969Ea5D
0.40155241 ETH
129065162021-07-27 6:15:481278 days ago1627366548
0x746F66FF...b8969Ea5D
0.02007762 ETH
129065162021-07-27 6:15:481278 days ago1627366548
0x746F66FF...b8969Ea5D
0.42163003 ETH
129062922021-07-27 5:30:211278 days ago1627363821
0x746F66FF...b8969Ea5D
0.41708195 ETH
129062922021-07-27 5:30:211278 days ago1627363821
0x746F66FF...b8969Ea5D
0.02085409 ETH
129062922021-07-27 5:30:211278 days ago1627363821
0x746F66FF...b8969Ea5D
0.43793605 ETH
129058902021-07-27 3:56:011278 days ago1627358161
0x746F66FF...b8969Ea5D
0.39278375 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DynamicRewardToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-26
*/

/* Tokenomics:
    *  8% ETH reflection
    *  4% marketing wallet
    *  4% auto liquidity
    *  Max TX of 1% of supply
*/


//SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
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 getOwner() external view returns (address);
    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);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

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

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

interface IDividendDistributor {
    function setNewReward(address newRewardToken) external;
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IERC20 rewardToken = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7); //Start with USDT
    uint rewardId = 0;
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) 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 ** 18) / (100); // Minimum sending is 0.1 rewardToken

    uint256 currentIndex;

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

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

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setNewReward(address newRewardToken) external override onlyToken {
        require(address(rewardToken) != newRewardToken, "New reward token must be different from current reward");
        rewardToken = IERC20(newRewardToken);
        totalDividends = rewardToken.balanceOf(address(this));
        if(totalShares > 0) {
            dividendsPerShare = dividendsPerShareAccuracyFactor.mul(totalDividends).div(totalShares);
        }
        rewardId = rewardId + 1;
    }

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

    receive() external payable {
        deposit();
    }

    function deposit() public payable override {
        uint256 balanceBefore = rewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(rewardToken);

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

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

        totalDividends = totalDividends.add(amount);
        if(totalShares > 0) {
            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 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);
            rewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

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

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        if(shares[shareholder].currRewardId != rewardId) {
            shares[shareholder].currRewardId = rewardId;
            shares[shareholder].totalExcluded = 0;
            shares[shareholder].totalRealised = 0;
        }
        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 DynamicRewardToken is IERC20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "MYSTERIO | t.me/MysterioToken";
    string constant _symbol = "MYSTERIO";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply / 100; // 1%

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;

    uint256 reflectionFee = 8;
    uint256 marketingFee = 4;
    uint256 liquidFee = 4;
    uint256 totalFee = 16;

    address public marketingFeeReceiver;

    IDEXRouter public router;
    address public pair;

    DividendDistributor public distributor;
    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 20000; // 0.005%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event AutoLiquify(uint256 amountETH, uint256 amount);

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        marketingFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

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

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }

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

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;
        uint256 halfLiquid = amountToSwap.mul(liquidFee.div(2)).div(totalFee);
        amountToSwap = amountToSwap.sub(halfLiquid);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalFee.sub(liquidFee.div(2)));
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee.sub(liquidFee.div(2)));
        uint256 amountETHLiquid = amountETH.sub(amountETHReflection).sub(amountETHMarketing);

        try distributor.deposit{value: amountETHReflection}() {} catch {}
        payable(marketingFeeReceiver).transfer(amountETHMarketing);

        if(halfLiquid > 0){
            router.addLiquidityETH{value: amountETHLiquid}(
                address(this),
                halfLiquid,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquid, halfLiquid);
        }
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000, "Check minimum MaxTx amount");
        _maxTxAmount = amount;
    }

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

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _reflectionFee, uint256 _marketingFee, uint256 _liquidFee) external authorized {
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        liquidFee = _liquidFee;
        totalFee = _reflectionFee.add(_marketingFee).add(_liquidFee);
    }

    function setMarketingFeeReceivers(address _marketingFeeReceiver) external authorized {
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

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

    function setNewRewardToken(address _newRewardToken) external authorized {
        distributor.setNewReward(_newRewardToken);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }
}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","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":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidFee","type":"uint256"}],"name":"setFees","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":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setMarketingFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRewardToken","type":"address"}],"name":"setNewRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a64e8d4a5100002600555606460055481620000fd57fe5b046006556008600c556004600d556004600e556010600f556207a1206014556001601560006101000a81548160ff021916908315150217905550614e20600554816200014557fe5b046016553480156200015657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ae57600080fd5b505afa158015620002c3573d6000803e3d6000fd5b505050506040513d6020811015620002da57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200039457600080fd5b505af1158015620003a9573d6000803e3d6000fd5b505050506040513d6020811015620003c057600080fd5b8101908080519060200190929190505050601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005059062000924565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000542573d6000803e3d6000fd5b50601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a362000932565b611db68062003e8883390190565b61354680620009426000396000f3fe6080604052600436106101fd5760003560e01c80639d1944f51161010d578063df20fd49116100a0578063f35ca3651161006f578063f35ca36514610b51578063f708a64f14610ba2578063f84ba65d14610bff578063f887ea4014610c5c578063fe9fbb8014610c9d57610204565b8063df20fd4914610a27578063e96fada214610a6e578063f0b37c0414610aaf578063f2fde38b14610b0057610204565b8063b8e94b63116100dc578063b8e94b63146108c1578063bfe1092814610912578063cec10c1114610953578063dd62ed3e146109a257610204565b80639d1944f514610783578063a8aa1b31146107be578063a9059cbb146107ff578063b6a5d7de1461087057610204565b8063313ce567116101905780636ddd17131161015f5780636ddd1713146105f557806370a08231146106225780637d1db4a514610687578063893d20e8146106b257806395d89b41146106f357610204565b8063313ce567146104c8578063571ac8b0146104f65780635c85974f1461055d578063658d4b7f1461059857610204565b806323b872dd116101cc57806323b872dd146103605780632b112e49146103f15780632d48e8961461041c5780632f54bf6e1461046157610204565b80630445b6671461020957806306fdde0314610234578063095ea7b3146102c457806318160ddd1461033557610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610d04565b6040518082815260200191505060405180910390f35b34801561024057600080fd5b50610249610d0a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028957808201518184015260208101905061026e565b50505050905090810190601f1680156102b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d057600080fd5b5061031d600480360360408110156102e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d47565b60405180821515815260200191505060405180910390f35b34801561034157600080fd5b5061034a610e39565b6040518082815260200191505060405180910390f35b34801561036c57600080fd5b506103d96004803603606081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e43565b60405180821515815260200191505060405180910390f35b3480156103fd57600080fd5b50610406611043565b6040518082815260200191505060405180910390f35b34801561042857600080fd5b5061045f6004803603604081101561043f57600080fd5b8101908080359060200190929190803590602001909291905050506110c5565b005b34801561046d57600080fd5b506104b06004803603602081101561048457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d9565b60405180821515815260200191505060405180910390f35b3480156104d457600080fd5b506104dd611232565b604051808260ff16815260200191505060405180910390f35b34801561050257600080fd5b506105456004803603602081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123b565b60405180821515815260200191505060405180910390f35b34801561056957600080fd5b506105966004803603602081101561058057600080fd5b810190808035906020019092919050505061126e565b005b3480156105a457600080fd5b506105f3600480360360408110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611376565b005b34801561060157600080fd5b5061060a61144c565b60405180821515815260200191505060405180910390f35b34801561062e57600080fd5b506106716004803603602081101561064557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145f565b6040518082815260200191505060405180910390f35b34801561069357600080fd5b5061069c6114a8565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506106c76114ae565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ff57600080fd5b506107086114d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561074857808201518184015260208101905061072d565b50505050905090810190601f1680156107755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078f57600080fd5b506107bc600480360360208110156107a657600080fd5b8101908080359060200190929190505050611514565b005b3480156107ca57600080fd5b506107d36115a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080b57600080fd5b506108586004803603604081101561082257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115ce565b60405180821515815260200191505060405180910390f35b34801561087c57600080fd5b506108bf6004803603602081101561089357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e3565b005b3480156108cd57600080fd5b50610910600480360360208110156108e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b8565b005b34801561091e57600080fd5b506109276117d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561095f57600080fd5b506109a06004803603606081101561097657600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506117ff565b005b3480156109ae57600080fd5b50610a11600480360360408110156109c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bf565b6040518082815260200191505060405180910390f35b348015610a3357600080fd5b50610a6c60048036036040811015610a4a57600080fd5b8101908080351515906020019092919080359060200190929190505050611946565b005b348015610a7a57600080fd5b50610a836119e6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610abb57600080fd5b50610afe60048036036020811015610ad257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a0c565b005b348015610b0c57600080fd5b50610b4f60048036036020811015610b2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ae2565b005b348015610b5d57600080fd5b50610ba060048036036020811015610b7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c44565b005b348015610bae57600080fd5b50610bfd60048036036040811015610bc557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d03565b005b348015610c0b57600080fd5b50610c5a60048036036040811015610c2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061200e565b005b348015610c6857600080fd5b50610c716120e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cec60048036036020811015610cc057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210a565b60405180821515815260200191505060405180910390f35b60165481565b60606040518060400160405280601d81526020017f4d5953544552494f207c20742e6d652f4d7973746572696f546f6b656e000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461102f57610fae826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61103a848484612220565b90509392505050565b60006110c0611073600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661145f565b6110b26110a1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661145f565b60055461276f90919063ffffffff16565b61276f90919063ffffffff16565b905090565b6110ce3361210a565b611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000611267827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d47565b9050919050565b6112773361210a565b6112e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e8600554816112f657fe5b0481101561136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436865636b206d696e696d756d204d6178547820616d6f756e7400000000000081525060200191505060405180910390fd5b8060068190555050565b61137f3361210a565b6113f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4d5953544552494f000000000000000000000000000000000000000000000000815250905090565b61151d3361210a565b61158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061159e57600080fd5b8060148190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115db338484612220565b905092915050565b6115ec336111d9565b61165e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116c13361210a565b611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321ccdee6826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156117be57600080fd5b505af11580156117d2573d6000803e3d6000fd5b5050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118083361210a565b61187a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82600c8190555081600d8190555080600e819055506118b4816118a684866127b990919063ffffffff16565b6127b990919063ffffffff16565b600f81905550505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61194f3361210a565b6119c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601560006101000a81548160ff021916908315150217905550806016819055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a15336111d9565b611a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611aeb336111d9565b611b5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b611c4d3361210a565b611cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d0c3361210a565b611d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611e085750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e1157600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611f1f57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b5050505061200a565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ff157600080fd5b505af1158015612005573d6000803e3d6000fd5b505050505b5050565b6120173361210a565b612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061220d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121d25780820151818401526020810190506121b7565b50505050905090810190601f1680156121ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601760009054906101000a900460ff161561224957612242848484612841565b9050612768565b6122538483612a14565b61225b612ae4565b1561226957612268612bbb565b5b6122f2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612340856131be565b61234a5782612356565b612355858585613215565b5b90506123aa81600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661252c57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561251057600080fd5b505af1925050508015612521575060015b61252a5761252b565b5b5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661266b57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561264f57600080fd5b505af1925050508015612660575060015b6126695761266a565b5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796014546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156126e257600080fd5b505af19250505080156126f3575060015b6126fc576126fd565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006127b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612160565b905092915050565b600080828401905083811015612837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006128cc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061296182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60065481111580612a6e5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b515750601760009054906101000a900460ff16155b8015612b695750601560009054906101000a900460ff165b8015612bb65750601654600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601760006101000a81548160ff021916908315150217905550600060165490506000612c1b600f54612c0d612bfe6002600e5461335990919063ffffffff16565b856133a390919063ffffffff16565b61335990919063ffffffff16565b9050612c30818361276f90919063ffffffff16565b91506000600267ffffffffffffffff81118015612c4c57600080fd5b50604051908082528060200260200182016040528015612c7b5781602001602082028036833780820191505090505b5090503081600081518110612c8c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612cf657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612df9578082015181840152602081019050612dde565b505050509050019650505050505050600060405180830381600087803b158015612e2257600080fd5b505af1158015612e36573d6000803e3d6000fd5b505050506000612e4f824761276f90919063ffffffff16565b90506000612ea3612e80612e6f6002600e5461335990919063ffffffff16565b600f5461276f90919063ffffffff16565b612e95600c54856133a390919063ffffffff16565b61335990919063ffffffff16565b90506000612ef7612ed4612ec36002600e5461335990919063ffffffff16565b600f5461276f90919063ffffffff16565b612ee9600d54866133a390919063ffffffff16565b61335990919063ffffffff16565b90506000612f2082612f12858761276f90919063ffffffff16565b61276f90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f8c57600080fd5b505af193505050508015612f9e575060015b612fa757612fa8565b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613010573d6000803e3d6000fd5b50600087111561319957601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308a600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561310657600080fd5b505af115801561311a573d6000803e3d6000fd5b50505050506040513d606081101561313157600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068188604051808381526020018281526020019250505060405180910390a15b50505050505050506000601760006101000a81548160ff021916908315150217905550565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806132406064613232600f54866133a390919063ffffffff16565b61335990919063ffffffff16565b905061329481600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361334f818461276f90919063ffffffff16565b9150509392505050565b600061339b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613429565b905092915050565b6000808314156133b65760009050613423565b60008284029050828482816133c757fe5b041461341e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134f06021913960400191505060405180910390fd5b809150505b92915050565b600080831182906134d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561349a57808201518184015260208101905061347f565b50505050905090810190601f1680156134c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816134e157fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122086c732bd16ab96f1d9b2b15d6deeb73dad44196e84ad64d491581c80a9d48bf164736f6c63430007060033608060405273dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060025573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600d55610e10600e55662386f26fc10000600f553480156100e357600080fd5b50604051611db6380380611db68339818101604052602081101561010657600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016657737a250d5630b4cf539739df2c5dacb4c659f2488d610168565b805b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611bbe806101f86000396000f3fe6080604052600436106100ec5760003560e01c8063997664d71161008a578063efca2eed11610059578063efca2eed146103b1578063f0fc6bca146103dc578063ffb2c479146103f3578063ffd49c841461042e576100fb565b8063997664d7146102d7578063ce7c2ac214610302578063d0e30db01461037c578063e2d2e21914610386576100fb565b806328fd3198116100c657806328fd3198146101d75780632d48e8961461023c5780633a98ef39146102815780634fab0ae8146102ac576100fb565b806311ce023d1461010057806314b6ca961461012b57806321ccdee614610186576100fb565b366100fb576100f9610459565b005b600080fd5b34801561010c57600080fd5b50610115610888565b6040518082815260200191505060405180910390f35b34801561013757600080fd5b506101846004803603604081101561014e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061088e565b005b34801561019257600080fd5b506101d5600480360360208110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4d565b005b3480156101e357600080fd5b50610226600480360360208110156101fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610da3565b6040518082815260200191505060405180910390f35b34801561024857600080fd5b5061027f6004803603604081101561025f57600080fd5b810190808035906020019092919080359060200190929190505050610fe2565b005b34801561028d57600080fd5b5061029661104c565b6040518082815260200191505060405180910390f35b3480156102b857600080fd5b506102c1611052565b6040518082815260200191505060405180910390f35b3480156102e357600080fd5b506102ec611058565b6040518082815260200191505060405180910390f35b34801561030e57600080fd5b506103516004803603602081101561032557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061105e565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610384610459565b005b34801561039257600080fd5b5061039b61108e565b6040518082815260200191505060405180910390f35b3480156103bd57600080fd5b506103c6611094565b6040518082815260200191505060405180910390f35b3480156103e857600080fd5b506103f161109a565b005b3480156103ff57600080fd5b5061042c6004803603602081101561041657600080fd5b81019080803590602001909291905050506110a5565b005b34801561043a57600080fd5b5061044361121f565b6040518082815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104e457600080fd5b505afa1580156104f8573d6000803e3d6000fd5b505050506040513d602081101561050e57600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff8111801561053b57600080fd5b5060405190808252806020026020018201604052801561056a5781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061059d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061060757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156106ff5780820151818401526020810190506106e4565b50505050905001955050505050506000604051808303818588803b15801561072657600080fd5b505af115801561073a573d6000803e3d6000fd5b5050505050600061081783600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d60208110156107f857600080fd5b810190808051906020019092919050505061122590919063ffffffff16565b905061082e81600a5461126f90919063ffffffff16565b600a81905550600060095411156108835761087c61086b60095461085d84600d546112f790919063ffffffff16565b61137d90919063ffffffff16565b600c5461126f90919063ffffffff16565b600c819055505b505050565b600d5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108e657600080fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561093b5761093a826113c7565b5b60008111801561098d57506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156109a05761099b8261168d565b610a02565b6000811480156109f257506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b15610a0157610a008261173c565b5b5b610a6b81610a5d600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460095461122590919063ffffffff16565b61126f90919063ffffffff16565b60098190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610b03600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611915565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611b536036913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d6020811015610d4057600080fd5b8101908080519060200190929190505050600a8190555060006009541115610d9457610d8d600954610d7f600a54600d546112f790919063ffffffff16565b61137d90919063ffffffff16565b600c819055505b60016002540160028190555050565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610df85760009050610fdd565b6000610e45600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611915565b9050600254600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015414610f6c57600254600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610fc557600092505050610fdd565b610fd8818361122590919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103a57600080fd5b81600e8190555080600f819055505050565b60095481565b600f5481565b600a5481565b60086020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b600c5481565b600b5481565b6110a3336113c7565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110fd57600080fd5b600060058054905090506000811415611116575061121c565b6000805a905060005b848310801561112d57508381105b156112175783601054106111445760006010819055505b61118660056010548154811061115657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611947565b156111ce576111cd60056010548154811061119d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c7565b5b6111f36111e45a8461122590919063ffffffff16565b8461126f90919063ffffffff16565b92505a9150601060008154809291906001019190505550808060010191505061111f565b505050505b50565b600e5481565b600061126783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119ab565b905092915050565b6000808284019050838110156112ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561130a5760009050611377565b600082840290508284828161131b57fe5b0414611372576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b326021913960400191505060405180910390fd5b809150505b92915050565b60006113bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a6b565b905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156114175761168a565b600061142282610da3565b905060008111156116885761144281600b5461126f90919063ffffffff16565b600b81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114db57600080fd5b505af11580156114ef573d6000803e3d6000fd5b505050506040513d602081101561150557600080fd5b81019080805190602001909291905050505042600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461126f90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611641600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611915565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600580549050600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60056001600580549050038154811061175157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106117c857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546006600060056001600580549050038154811061186957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060058054806118dd57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611940600d54611932600c54856112f790919063ffffffff16565b61137d90919063ffffffff16565b9050919050565b600042600e54600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156119a45750600f546119a283610da3565b115b9050919050565b6000838311158290611a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a1d578082015181840152602081019050611a02565b50505050905090810190601f168015611a4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611b17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611adc578082015181840152602081019050611ac1565b50505050905090810190601f168015611b095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611b2357fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774e65772072657761726420746f6b656e206d75737420626520646966666572656e742066726f6d2063757272656e7420726577617264a26469706673582212202fe6a7e41ffac9f5926b457a74637c76b78632c925ed0ee24d8065e8cef9cad864736f6c63430007060033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80639d1944f51161010d578063df20fd49116100a0578063f35ca3651161006f578063f35ca36514610b51578063f708a64f14610ba2578063f84ba65d14610bff578063f887ea4014610c5c578063fe9fbb8014610c9d57610204565b8063df20fd4914610a27578063e96fada214610a6e578063f0b37c0414610aaf578063f2fde38b14610b0057610204565b8063b8e94b63116100dc578063b8e94b63146108c1578063bfe1092814610912578063cec10c1114610953578063dd62ed3e146109a257610204565b80639d1944f514610783578063a8aa1b31146107be578063a9059cbb146107ff578063b6a5d7de1461087057610204565b8063313ce567116101905780636ddd17131161015f5780636ddd1713146105f557806370a08231146106225780637d1db4a514610687578063893d20e8146106b257806395d89b41146106f357610204565b8063313ce567146104c8578063571ac8b0146104f65780635c85974f1461055d578063658d4b7f1461059857610204565b806323b872dd116101cc57806323b872dd146103605780632b112e49146103f15780632d48e8961461041c5780632f54bf6e1461046157610204565b80630445b6671461020957806306fdde0314610234578063095ea7b3146102c457806318160ddd1461033557610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610d04565b6040518082815260200191505060405180910390f35b34801561024057600080fd5b50610249610d0a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028957808201518184015260208101905061026e565b50505050905090810190601f1680156102b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d057600080fd5b5061031d600480360360408110156102e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d47565b60405180821515815260200191505060405180910390f35b34801561034157600080fd5b5061034a610e39565b6040518082815260200191505060405180910390f35b34801561036c57600080fd5b506103d96004803603606081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e43565b60405180821515815260200191505060405180910390f35b3480156103fd57600080fd5b50610406611043565b6040518082815260200191505060405180910390f35b34801561042857600080fd5b5061045f6004803603604081101561043f57600080fd5b8101908080359060200190929190803590602001909291905050506110c5565b005b34801561046d57600080fd5b506104b06004803603602081101561048457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d9565b60405180821515815260200191505060405180910390f35b3480156104d457600080fd5b506104dd611232565b604051808260ff16815260200191505060405180910390f35b34801561050257600080fd5b506105456004803603602081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123b565b60405180821515815260200191505060405180910390f35b34801561056957600080fd5b506105966004803603602081101561058057600080fd5b810190808035906020019092919050505061126e565b005b3480156105a457600080fd5b506105f3600480360360408110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611376565b005b34801561060157600080fd5b5061060a61144c565b60405180821515815260200191505060405180910390f35b34801561062e57600080fd5b506106716004803603602081101561064557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145f565b6040518082815260200191505060405180910390f35b34801561069357600080fd5b5061069c6114a8565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506106c76114ae565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ff57600080fd5b506107086114d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561074857808201518184015260208101905061072d565b50505050905090810190601f1680156107755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078f57600080fd5b506107bc600480360360208110156107a657600080fd5b8101908080359060200190929190505050611514565b005b3480156107ca57600080fd5b506107d36115a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080b57600080fd5b506108586004803603604081101561082257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115ce565b60405180821515815260200191505060405180910390f35b34801561087c57600080fd5b506108bf6004803603602081101561089357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e3565b005b3480156108cd57600080fd5b50610910600480360360208110156108e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b8565b005b34801561091e57600080fd5b506109276117d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561095f57600080fd5b506109a06004803603606081101561097657600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506117ff565b005b3480156109ae57600080fd5b50610a11600480360360408110156109c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bf565b6040518082815260200191505060405180910390f35b348015610a3357600080fd5b50610a6c60048036036040811015610a4a57600080fd5b8101908080351515906020019092919080359060200190929190505050611946565b005b348015610a7a57600080fd5b50610a836119e6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610abb57600080fd5b50610afe60048036036020811015610ad257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a0c565b005b348015610b0c57600080fd5b50610b4f60048036036020811015610b2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ae2565b005b348015610b5d57600080fd5b50610ba060048036036020811015610b7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c44565b005b348015610bae57600080fd5b50610bfd60048036036040811015610bc557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d03565b005b348015610c0b57600080fd5b50610c5a60048036036040811015610c2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061200e565b005b348015610c6857600080fd5b50610c716120e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cec60048036036020811015610cc057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210a565b60405180821515815260200191505060405180910390f35b60165481565b60606040518060400160405280601d81526020017f4d5953544552494f207c20742e6d652f4d7973746572696f546f6b656e000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600554905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461102f57610fae826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61103a848484612220565b90509392505050565b60006110c0611073600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661145f565b6110b26110a1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661145f565b60055461276f90919063ffffffff16565b61276f90919063ffffffff16565b905090565b6110ce3361210a565b611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6000611267827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d47565b9050919050565b6112773361210a565b6112e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e8600554816112f657fe5b0481101561136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436865636b206d696e696d756d204d6178547820616d6f756e7400000000000081525060200191505060405180910390fd5b8060068190555050565b61137f3361210a565b6113f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4d5953544552494f000000000000000000000000000000000000000000000000815250905090565b61151d3361210a565b61158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061159e57600080fd5b8060148190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115db338484612220565b905092915050565b6115ec336111d9565b61165e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116c13361210a565b611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321ccdee6826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156117be57600080fd5b505af11580156117d2573d6000803e3d6000fd5b5050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118083361210a565b61187a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82600c8190555081600d8190555080600e819055506118b4816118a684866127b990919063ffffffff16565b6127b990919063ffffffff16565b600f81905550505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61194f3361210a565b6119c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601560006101000a81548160ff021916908315150217905550806016819055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a15336111d9565b611a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611aeb336111d9565b611b5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b611c4d3361210a565b611cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d0c3361210a565b611d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611e085750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e1157600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611f1f57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b5050505061200a565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ff157600080fd5b505af1158015612005573d6000803e3d6000fd5b505050505b5050565b6120173361210a565b612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083831115829061220d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121d25780820151818401526020810190506121b7565b50505050905090810190601f1680156121ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601760009054906101000a900460ff161561224957612242848484612841565b9050612768565b6122538483612a14565b61225b612ae4565b1561226957612268612bbb565b5b6122f2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612340856131be565b61234a5782612356565b612355858585613215565b5b90506123aa81600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661252c57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561251057600080fd5b505af1925050508015612521575060015b61252a5761252b565b5b5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661266b57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561264f57600080fd5b505af1925050508015612660575060015b6126695761266a565b5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796014546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156126e257600080fd5b505af19250505080156126f3575060015b6126fc576126fd565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b60006127b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612160565b905092915050565b600080828401905083811015612837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006128cc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061296182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60065481111580612a6e5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b515750601760009054906101000a900460ff16155b8015612b695750601560009054906101000a900460ff165b8015612bb65750601654600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601760006101000a81548160ff021916908315150217905550600060165490506000612c1b600f54612c0d612bfe6002600e5461335990919063ffffffff16565b856133a390919063ffffffff16565b61335990919063ffffffff16565b9050612c30818361276f90919063ffffffff16565b91506000600267ffffffffffffffff81118015612c4c57600080fd5b50604051908082528060200260200182016040528015612c7b5781602001602082028036833780820191505090505b5090503081600081518110612c8c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612cf657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612df9578082015181840152602081019050612dde565b505050509050019650505050505050600060405180830381600087803b158015612e2257600080fd5b505af1158015612e36573d6000803e3d6000fd5b505050506000612e4f824761276f90919063ffffffff16565b90506000612ea3612e80612e6f6002600e5461335990919063ffffffff16565b600f5461276f90919063ffffffff16565b612e95600c54856133a390919063ffffffff16565b61335990919063ffffffff16565b90506000612ef7612ed4612ec36002600e5461335990919063ffffffff16565b600f5461276f90919063ffffffff16565b612ee9600d54866133a390919063ffffffff16565b61335990919063ffffffff16565b90506000612f2082612f12858761276f90919063ffffffff16565b61276f90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f8c57600080fd5b505af193505050508015612f9e575060015b612fa757612fa8565b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613010573d6000803e3d6000fd5b50600087111561319957601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308a600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561310657600080fd5b505af115801561311a573d6000803e3d6000fd5b50505050506040513d606081101561313157600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068188604051808381526020018281526020019250505060405180910390a15b50505050505050506000601760006101000a81548160ff021916908315150217905550565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806132406064613232600f54866133a390919063ffffffff16565b61335990919063ffffffff16565b905061329481600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361334f818461276f90919063ffffffff16565b9150509392505050565b600061339b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613429565b905092915050565b6000808314156133b65760009050613423565b60008284029050828482816133c757fe5b041461341e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134f06021913960400191505060405180910390fd5b809150505b92915050565b600080831182906134d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561349a57808201518184015260208101905061347f565b50505050905090810190601f1680156134c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816134e157fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122086c732bd16ab96f1d9b2b15d6deeb73dad44196e84ad64d491581c80a9d48bf164736f6c63430007060033

Deployed Bytecode Sourcemap

12717:9430:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13869:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15201:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15623:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14931:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16135:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22002:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21523:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3561:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15025:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15847:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20097:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20635:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13832:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15371:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13202:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15287:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15111:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21854:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13719:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15971:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3234:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21714:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13747:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20899:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15482:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21359:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13644:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3404:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3961:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21203:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20280:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20763:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13688:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3735:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13869:51;;;;:::o;15201:80::-;15249:13;15273:5;;;;;;;;;;;;;;;;;15266:12;;15201:80;:::o;15623:216::-;15698:4;15750:6;15715:11;:23;15727:10;15715:23;;;;;;;;;;;;;;;:32;15739:7;15715:32;;;;;;;;;;;;;;;:41;;;;15793:7;15772:37;;15781:10;15772:37;;;15802:6;15772:37;;;;;;;;;;;;;;;;;;15827:4;15820:11;;15623:216;;;;:::o;14931:88::-;14986:7;15004:12;;14997:19;;14931:88;:::o;16135:364::-;16235:4;16298:2;16255:11;:19;16267:6;16255:19;;;;;;;;;;;;;;;:31;16275:10;16255:31;;;;;;;;;;;;;;;;:46;16252:180;;16351:69;16387:6;16351:69;;;;;;;;;;;;;;;;;:11;:19;16363:6;16351:19;;;;;;;;;;;;;;;:31;16371:10;16351:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;16317:11;:19;16329:6;16317:19;;;;;;;;;;;;;;;:31;16337:10;16317:31;;;;;;;;;;;;;;;:103;;;;16252:180;16451:40;16465:6;16473:9;16484:6;16451:13;:40::i;:::-;16444:47;;16135:364;;;;;:::o;22002:142::-;22055:7;22082:54;22120:15;22130:4;;;;;;;;;;;22120:9;:15::i;:::-;22082:33;22099:15;22109:4;;;;;;;;;;;22099:9;:15::i;:::-;22082:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;22075:61;;22002:142;:::o;21523:183::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21633:11:::1;;;;;;;;;;;:35;;;21669:10;21681:16;21633:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21523:183:::0;;:::o;3561:103::-;3616:4;3651:5;;;;;;;;;;;3640:16;;:7;:16;;;3633:23;;3561:103;;;:::o;15025:80::-;15077:5;13129:1;15086:16;;15025:80;:::o;15847:116::-;15902:4;15926:29;15934:7;15951:2;15926:7;:29::i;:::-;15919:36;;15847:116;;;:::o;20097:175::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20197:4:::1;20182:12;;:19;;;;;;20172:6;:29;;20164:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;20258:6;20243:12;:21;;;;20097:175:::0;:::o;20635:120::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20741:6:::1;20719:11;:19;20731:6;20719:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20635:120:::0;;:::o;13832:30::-;;;;;;;;;;;;;:::o;15371:105::-;15437:7;15455:9;:18;15465:7;15455:18;;;;;;;;;;;;;;;;15448:25;;15371:105;;;:::o;13202:48::-;;;;:::o;15287:78::-;15339:7;15357:5;;;;;;;;;;;15350:12;;15287:78;:::o;15111:84::-;15161:13;15185:7;;;;;;;;;;;;;;;;;15178:14;;15111:84;:::o;21854:136::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21944:6:::1;21938:3;:12;21930:21;;;::::0;::::1;;21979:3;21962:14;:20;;;;21854:136:::0;:::o;13719:19::-;;;;;;;;;;;;;:::o;15971:156::-;16051:4;16075:44;16089:10;16101:9;16112:6;16075:13;:44::i;:::-;16068:51;;15971:156;;;;:::o;3234:94::-;2950:19;2958:10;2950:7;:19::i;:::-;2942:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3316:4:::1;3294:14:::0;:19:::1;3309:3;3294:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3234:94:::0;:::o;21714:132::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21797:11:::1;;;;;;;;;;;:24;;;21822:15;21797:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21714:132:::0;:::o;13747:38::-;;;;;;;;;;;;;:::o;20899:296::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21030:14:::1;21014:13;:30;;;;21070:13;21055:12;:28;;;;21106:10;21094:9;:22;;;;21138:49;21176:10;21138:33;21157:13;21138:14;:18;;:33;;;;:::i;:::-;:37;;:49;;;;:::i;:::-;21127:8;:60;;;;20899:296:::0;;;:::o;15482:133::-;15566:7;15584:11;:19;15596:6;15584:19;;;;;;;;;;;;;;;:28;15604:7;15584:28;;;;;;;;;;;;;;;;15577:35;;15482:133;;;;:::o;21359:156::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21465:8:::1;21451:11;;:22;;;;;;;;;;;;;;;;;;21500:7;21484:13;:23;;;;21359:156:::0;;:::o;13644:35::-;;;;;;;;;;;;;:::o;3404:97::-;2950:19;2958:10;2950:7;:19::i;:::-;2942:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3488:5:::1;3466:14;:19;3481:3;3466:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3404:97:::0;:::o;3961:173::-;2950:19;2958:10;2950:7;:19::i;:::-;2942:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4045:3:::1;4037:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4081:4;4059:14:::0;:19:::1;4074:3;4059:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4101:25;4122:3;4101:25;;;;;;;;;;;;;;;;;;;;3961:173:::0;:::o;21203:148::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21322:21:::1;21299:20;;:44;;;;;;;;;;;;;;;;;;21203:148:::0;:::o;20280:347::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20395:4:::1;20377:23;;:6;:23;;;;:41;;;;;20414:4;;;;;;;;;;;20404:14;;:6;:14;;;;20377:41;20369:50;;;::::0;::::1;;20457:6;20430:16;:24;20447:6;20430:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20477:6;20474:146;;;20499:11;;;;;;;;;;;:20;;;20520:6;20528:1;20499:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20474:146;;;20561:11;;;;;;;;;;;:20;;;20582:6;20590:9;:17;20600:6;20590:17;;;;;;;;;;;;;;;;20561:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20474:146;20280:347:::0;;:::o;20763:128::-;3119:24;3132:10;3119:12;:24::i;:::-;3111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20877:6:::1;20851:15;:23;20867:6;20851:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20763:128:::0;;:::o;13688:24::-;;;;;;;;;;;;;:::o;3735:107::-;3791:4;3815:14;:19;3830:3;3815:19;;;;;;;;;;;;;;;;;;;;;;;;;3808:26;;3735:107;;;:::o;620:192::-;706:7;739:1;734;:6;;742:12;726:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;766:9;782:1;778;:5;766:17;;803:1;796:8;;;620:192;;;;;:::o;16507:909::-;16599:4;16619:6;;;;;;;;;;;16616:63;;;16635:41;16650:6;16658:9;16669:6;16635:14;:41::i;:::-;16628:48;;;;16616:63;16699:28;16712:6;16720;16699:12;:28::i;:::-;16743:16;:14;:16::i;:::-;16740:35;;;16762:10;:8;:10::i;:::-;16740:35;16807:53;16829:6;16807:53;;;;;;;;;;;;;;;;;:9;:17;16817:6;16807:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;16787:9;:17;16797:6;16787:17;;;;;;;;;;;;;;;:73;;;;16873:22;16898:21;16912:6;16898:13;:21::i;:::-;:67;;16959:6;16898:67;;;16922:34;16930:6;16938:9;16949:6;16922:7;:34::i;:::-;16898:67;16873:92;;16999:40;17024:14;16999:9;:20;17009:9;16999:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;16976:9;:20;16986:9;16976:20;;;;;;;;;;;;;;;:63;;;;17056:16;:24;17073:6;17056:24;;;;;;;;;;;;;;;;;;;;;;;;;17052:96;;17087:11;;;;;;;;;;;:20;;;17108:6;17116:9;:17;17126:6;17116:17;;;;;;;;;;;;;;;;17087:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17083:63;;;;;;17052:96;17162:16;:27;17179:9;17162:27;;;;;;;;;;;;;;;;;;;;;;;;;17158:105;;17196:11;;;;;;;;;;;:20;;;17217:9;17228;:20;17238:9;17228:20;;;;;;;;;;;;;;;;17196:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17192:69;;;;;;17158:105;17279:11;;;;;;;;;;;:19;;;17299:14;;17279:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17275:51;;;;;;17360:9;17343:43;;17352:6;17343:43;;;17371:14;17343:43;;;;;;;;;;;;;;;;;;17404:4;17397:11;;;16507:909;;;;;;:::o;478:136::-;536:7;563:43;567:1;570;563:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;556:50;;478:136;;;;:::o;291:181::-;349:7;369:9;385:1;381;:5;369:17;;410:1;405;:6;;397:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;463:1;456:8;;;291:181;;;;:::o;17428:330::-;17521:4;17558:53;17580:6;17558:53;;;;;;;;;;;;;;;;;:9;:17;17568:6;17558:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17538:9;:17;17548:6;17538:17;;;;;;;;;;;;;;;:73;;;;17645:32;17670:6;17645:9;:20;17655:9;17645:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17622:9;:20;17632:9;17622:20;;;;;;;;;;;;;;;:55;;;;17710:9;17693:35;;17702:6;17693:35;;;17721:6;17693:35;;;;;;;;;;;;;;;;;;17746:4;17739:11;;17428:330;;;;;:::o;17766:166::-;17863:12;;17853:6;:22;;:49;;;;17879:15;:23;17895:6;17879:23;;;;;;;;;;;;;;;;;;;;;;;;;17853:49;17845:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17766:166;;:::o;18410:197::-;18459:4;18497;;;;;;;;;;;18483:18;;:10;:18;;;;:38;;;;;18515:6;;;;;;;;;;;18514:7;18483:38;:62;;;;;18534:11;;;;;;;;;;;18483:62;:116;;;;;18586:13;;18558:9;:24;18576:4;18558:24;;;;;;;;;;;;;;;;:41;;18483:116;18476:123;;18410:197;:::o;18615:1474::-;13986:4;13977:6;;:13;;;;;;;;;;;;;;;;;;18664:20:::1;18687:13;;18664:36;;18711:18;18732:48;18771:8;;18732:34;18749:16;18763:1;18749:9;;:13;;:16;;;;:::i;:::-;18732:12;:16;;:34;;;;:::i;:::-;:38;;:48;;;;:::i;:::-;18711:69;;18806:28;18823:10;18806:12;:16;;:28;;;;:::i;:::-;18791:43;;18847:21;18885:1;18871:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18847:40;;18916:4;18898;18903:1;18898:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;18942:4;;;;;;;;;;;18932;18937:1;18932:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;18959:21;18983;18959:45;;19017:6;;;;;;;;;;;:57;;;19089:12;19116:1;19132:4;19159;19179:15;19017:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19218:17;19238:40;19264:13;19238:21;:25;;:40;;;;:::i;:::-;19218:60;;19291:27;19321:64;19354:30;19367:16;19381:1;19367:9;;:13;;:16;;;;:::i;:::-;19354:8;;:12;;:30;;;;:::i;:::-;19321:28;19335:13;;19321:9;:13;;:28;;;;:::i;:::-;:32;;:64;;;;:::i;:::-;19291:94;;19396:26;19425:63;19457:30;19470:16;19484:1;19470:9;;:13;;:16;;;;:::i;:::-;19457:8;;:12;;:30;;;;:::i;:::-;19425:27;19439:12;;19425:9;:13;;:27;;;;:::i;:::-;:31;;:63;;;;:::i;:::-;19396:92;;19499:23;19525:58;19564:18;19525:34;19539:19;19525:9;:13;;:34;;;;:::i;:::-;:38;;:58;;;;:::i;:::-;19499:84;;19600:11;;;;;;;;;;;:19;;;19627;19600:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;19596:65;;;;;;19679:20;;;;;;;;;;;19671:38;;:58;19710:18;19671:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19758:1;19745:10;:14;19742:340;;;19775:6;;;;;;;;;;;:22;;;19805:15;19848:4;19872:10;19901:1;19921::::0;19941:20:::1;;;;;;;;;;;19980:15;19775:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20030:40;20042:15;20059:10;20030:40;;;;;;;;;;;;;;;;;;;;;;;;19742:340;13992:1;;;;;;;;14004:5:::0;13995:6;;:14;;;;;;;;;;;;;;;;;;18615:1474::o;17940:114::-;18002:4;18027:11;:19;18039:6;18027:19;;;;;;;;;;;;;;;;;;;;;;;;;18026:20;18019:27;;17940:114;;;:::o;18062:340::-;18147:7;18167:17;18187:29;18212:3;18187:20;18198:8;;18187:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;18167:49;;18256:39;18285:9;18256;:24;18274:4;18256:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;18229:9;:24;18247:4;18229:24;;;;;;;;;;;;;;;:66;;;;18336:4;18311:42;;18320:6;18311:42;;;18343:9;18311:42;;;;;;;;;;;;;;;;;;18373:21;18384:9;18373:6;:10;;:21;;;;:::i;:::-;18366:28;;;18062:340;;;;;:::o;1074:132::-;1132:7;1159:39;1163:1;1166;1159:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1152:46;;1074:132;;;;:::o;818:250::-;876:7;905:1;900;:6;896:47;;;930:1;923:8;;;;896:47;955:9;971:1;967;:5;955:17;;1000:1;995;991;:5;;;;;;:10;983:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1059:1;1052:8;;;818:250;;;;;:::o;1212:345::-;1298:7;1397:1;1393;:5;1400:12;1385:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:9;1440:1;1436;:5;;;;;;1424:17;;1548:1;1541:8;;;1212:345;;;;;:::o

Swarm Source

ipfs://2fe6a7e41ffac9f5926b457a74637c76b78632c925ed0ee24d8065e8cef9cad8

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.