ETH Price: $2,268.86 (+2.72%)

Contract

0x3848D38145eF835B7570768dBC98A3D8CeB46Cd5
 

Overview

ETH Balance

2 wei

Eth Value

Less Than $0.01 (@ $2,268.86/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve174189502023-06-06 4:09:23459 days ago1686024563IN
0x3848D381...8CeB46Cd5
0 ETH0.0011323124.35241434
Approve174130922023-06-05 8:19:23460 days ago1685953163IN
0x3848D381...8CeB46Cd5
0 ETH0.0010647422.89920122
Approve174130572023-06-05 8:12:11460 days ago1685952731IN
0x3848D381...8CeB46Cd5
0 ETH0.0011090623.88311889
Transfer174130342023-06-05 8:07:35460 days ago1685952455IN
0x3848D381...8CeB46Cd5
0 ETH0.0012840627.98996068
Transfer174130042023-06-05 8:01:35460 days ago1685952095IN
0x3848D381...8CeB46Cd5
0 ETH0.0010258522.35557329
Approve174129482023-06-05 7:49:59460 days ago1685951399IN
0x3848D381...8CeB46Cd5
0 ETH0.0010208121.95445694
Transfer174129322023-06-05 7:46:47460 days ago1685951207IN
0x3848D381...8CeB46Cd5
0 ETH0.0013909722.08315278
Approve174128892023-06-05 7:38:11460 days ago1685950691IN
0x3848D381...8CeB46Cd5
0 ETH0.0009440820.45731081
Approve174116992023-06-05 3:34:35460 days ago1685936075IN
0x3848D381...8CeB46Cd5
0 ETH0.0008523918.33235295
Approve174115742023-06-05 3:08:59460 days ago1685934539IN
0x3848D381...8CeB46Cd5
0 ETH0.0009437920.32426149
Transfer174115692023-06-05 3:07:59460 days ago1685934479IN
0x3848D381...8CeB46Cd5
0 ETH0.0010800420.40938094
Change Is Fee Ex...174094942023-06-04 20:06:11461 days ago1685909171IN
0x3848D381...8CeB46Cd5
0 ETH0.0011944725.66604013
Approve174093232023-06-04 19:31:47461 days ago1685907107IN
0x3848D381...8CeB46Cd5
0 ETH0.000916719.74088501
Approve174092312023-06-04 19:13:11461 days ago1685905991IN
0x3848D381...8CeB46Cd5
0 ETH0.0011102323.87765489
Approve174091982023-06-04 19:06:23461 days ago1685905583IN
0x3848D381...8CeB46Cd5
0 ETH0.0012033325.87988453
Change Fees174091882023-06-04 19:04:23461 days ago1685905463IN
0x3848D381...8CeB46Cd5
0 ETH0.0012656524.31197511
Approve174091682023-06-04 19:00:23461 days ago1685905223IN
0x3848D381...8CeB46Cd5
0 ETH0.0011656425.06923603
Approve174091622023-06-04 18:59:11461 days ago1685905151IN
0x3848D381...8CeB46Cd5
0 ETH0.0009689220.95194456
Approve174091612023-06-04 18:58:59461 days ago1685905139IN
0x3848D381...8CeB46Cd5
0 ETH0.0010211421.96161985
Approve174091552023-06-04 18:57:47461 days ago1685905067IN
0x3848D381...8CeB46Cd5
0 ETH0.0011721625.20944818
Approve174091532023-06-04 18:57:23461 days ago1685905043IN
0x3848D381...8CeB46Cd5
0 ETH0.00106422.88328458
Approve174091522023-06-04 18:57:11461 days ago1685905031IN
0x3848D381...8CeB46Cd5
0 ETH0.0010564122.72005902
Approve174091522023-06-04 18:57:11461 days ago1685905031IN
0x3848D381...8CeB46Cd5
0 ETH0.0010564122.72005902
Approve174091442023-06-04 18:55:35461 days ago1685904935IN
0x3848D381...8CeB46Cd5
0 ETH0.0009928521.49179406
Transfer174090672023-06-04 18:39:59461 days ago1685903999IN
0x3848D381...8CeB46Cd5
0 ETH0.0010251620.16656508
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
174114822023-06-05 2:50:35460 days ago1685933435
0x3848D381...8CeB46Cd5
0.00201482 ETH
174114822023-06-05 2:50:35460 days ago1685933435
0x3848D381...8CeB46Cd5
0.00100741 ETH
174114822023-06-05 2:50:35460 days ago1685933435
0x3848D381...8CeB46Cd5
0.00201482 ETH
174114822023-06-05 2:50:35460 days ago1685933435
0x3848D381...8CeB46Cd5
0.00503706 ETH
174114762023-06-05 2:49:23460 days ago1685933363
0x3848D381...8CeB46Cd5
0.00293025 ETH
174114762023-06-05 2:49:23460 days ago1685933363
0x3848D381...8CeB46Cd5
0.00146512 ETH
174114762023-06-05 2:49:23460 days ago1685933363
0x3848D381...8CeB46Cd5
0.00293025 ETH
174114762023-06-05 2:49:23460 days ago1685933363
0x3848D381...8CeB46Cd5
0.00732564 ETH
174093252023-06-04 19:32:11461 days ago1685907131
0x3848D381...8CeB46Cd5
0.00473595 ETH
174093252023-06-04 19:32:11461 days ago1685907131
0x3848D381...8CeB46Cd5
0.00236797 ETH
174093252023-06-04 19:32:11461 days ago1685907131
0x3848D381...8CeB46Cd5
0.00473595 ETH
174093252023-06-04 19:32:11461 days ago1685907131
0x3848D381...8CeB46Cd5
0.01183988 ETH
174092012023-06-04 19:06:59461 days ago1685905619
0x3848D381...8CeB46Cd5
0.00355054 ETH
174092012023-06-04 19:06:59461 days ago1685905619
0x3848D381...8CeB46Cd5
0.00177527 ETH
174092012023-06-04 19:06:59461 days ago1685905619
0x3848D381...8CeB46Cd5
0.00355054 ETH
174092012023-06-04 19:06:59461 days ago1685905619
0x3848D381...8CeB46Cd5
0.00887637 ETH
174091982023-06-04 19:06:23461 days ago1685905583
0x3848D381...8CeB46Cd5
0.00507637 ETH
174091982023-06-04 19:06:23461 days ago1685905583
0x3848D381...8CeB46Cd5
0.00253818 ETH
174091982023-06-04 19:06:23461 days ago1685905583
0x3848D381...8CeB46Cd5
0.00507637 ETH
174091982023-06-04 19:06:23461 days ago1685905583
0x3848D381...8CeB46Cd5
0.01269093 ETH
174091792023-06-04 19:02:35461 days ago1685905355
0x3848D381...8CeB46Cd5
0.0281797 ETH
174091792023-06-04 19:02:35461 days ago1685905355
0x3848D381...8CeB46Cd5
0.04226955 ETH
174091792023-06-04 19:02:35461 days ago1685905355
0x3848D381...8CeB46Cd5
0.0281797 ETH
174091792023-06-04 19:02:35461 days ago1685905355
0x3848D381...8CeB46Cd5
0.09862897 ETH
174064832023-06-04 9:53:35461 days ago1685872415
0x3848D381...8CeB46Cd5
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DaffyDuck

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-04
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;

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

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

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

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

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

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

interface IBEP20 {
    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
    );
}

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

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

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

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

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

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

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;
    address _token;

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

    IDEXRouter router;

    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    IBEP20 RewardToken = IBEP20(0x3007083EAA95497cD6B2b809fB97B6A30bdF53D3); //FARB

    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 = 60 minutes;
    uint256 public minDistribution = 1 * (10**6);

    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(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(
        uint256 newMinPeriod,
        uint256 newMinDistribution
    ) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

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

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

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

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

        address[] memory path = new address[](2);
        path[0] = router.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);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

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

        if (shareholderCount == 0) {
            return;
        }

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

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

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

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

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

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

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            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(address shareholder) external onlyToken {
        distributeDividend(shareholder);
    }

    function rescueDividends(address to) external onlyToken {
        RewardToken.transfer(to, RewardToken.balanceOf(address(this)));
    }

    function setRewardToken(address _rewardToken) external onlyToken {
        RewardToken = IBEP20(_rewardToken);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

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 _onlyOwner() {
        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];
    }

    function renounceOwnership() public virtual onlyOwner {
        transferOwnership(address(0));
    }

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

    event OwnershipTransferred(address owner);
}

contract DaffyDuck is IBEP20, Auth {
    using SafeMath for uint256;

    string constant _name = "DaffyDuck";
    string constant _symbol = "$Duck";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ; //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    address RewardToken = 0x3007083EAA95497cD6B2b809fB97B6A30bdF53D3;

    uint256 _totalSupply = 1000000000 * (10**_decimals);
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100;
    uint256 public _walletMax = (_totalSupply * 20) / 100;

    bool public restrictWhales = false;

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

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

    uint256 public liquidityFee = 0;
    uint256 private marketingFee = 3;
    uint256 public rewardsFee = 2;
    uint256 private stakingRewardFee = 0;
    uint256 private veFee = 2;
    uint256 private _gasPriceLimitB = 8;
    uint256 private gasPriceLimitB = _gasPriceLimitB * 1 gwei;
    uint256 public sellMultiplier = 15;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address public autoLiquidityReceiver;
    address private marketingWallet;
    address private  veWall;
    address private stakingRewardWallet;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 750000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = (_totalSupply * 5) / 2000;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;

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

        // NICE!
        autoLiquidityReceiver = msg.sender;
        marketingWallet = 0x8ef41E17aA8FcF8D534eA5B0aC01d053c6E180e9; // marketingwallet
        veWall = 0xc4f8EBb4E8bda9e00dd7019E6C5a279FBfeb01Ab; // 
        stakingRewardWallet = 0x8ef41E17aA8FcF8D534eA5B0aC01d053c6E180e9; //

        totalFee = (
            liquidityFee.add(marketingFee).add(rewardsFee).add(veFee).add(stakingRewardFee)
        );
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);

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

    receive() external payable {}

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

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

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

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

    function getOwner() external view override returns (address) {
        return owner;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    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 claimDividend() external {
        dividendDistributor.claimDividend(msg.sender);
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function changeSellFeeX10(uint256 newMulti) external onlyOwner {
        require(newMulti <= 30);
        sellMultiplier = newMulti;
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function changeTxLimit(uint256 newLimit) external _onlyOwner {
        _maxTxAmount = newLimit;
    }

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

    function setNormalTransferAddress(address _address, bool _status) external _onlyOwner{
        normalTransferAddress[_address] = _status;
    }

    function changeWalletLimit(uint256 newLimit) external _onlyOwner {
        _walletMax = newLimit;
    }

    function changeRestrictWhales(bool newValue) external _onlyOwner {
        restrictWhales = newValue;
    }

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

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

    function changeIsDividendExempt(address holder, bool exempt)
        external
        _onlyOwner
    {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;

        if (exempt) {
            dividendDistributor.setShare(holder, 0);
        } else {
            dividendDistributor.setShare(holder, _balances[holder]);
        }
    }

    function changeFees(
        uint256 newLiqFee,
        uint256 newRewardFee,
        uint256 newMarketingFee,
        uint256 newveFee,
        uint256 newStakingRewardFee
    ) external _onlyOwner {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        veFee = newveFee;
        stakingRewardFee = newStakingRewardFee;

        totalFee = liquidityFee
            .add(marketingFee)
            .add(rewardsFee)
            .add(veFee)
            .add(stakingRewardFee);
        require(totalFee <= 10);
        totalFeeIfSelling = totalFee.mul(sellMultiplier).div(10);
    }

    function changeFeeReceivers(
        address newLiquidityReceiver,
        address newMarketingWallet,
        
        address newStakingRewardWallet
    ) external _onlyOwner {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
        
        stakingRewardWallet = newStakingRewardWallet;
    }

    function changeSwapBackSettings(
        bool enableSwapBack,
        uint256 newSwapBackLimit,
        bool swapByLimitOnly
    ) external _onlyOwner {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
        swapAndLiquifyByLimitOnly = swapByLimitOnly;
    }

    function changeDistributionCriteria(
        uint256 newinPeriod,
        uint256 newMinDistribution
    ) external onlyOwner {
        dividendDistributor.setDistributionCriteria(
            newinPeriod,
            newMinDistribution
        );
    }

    function changeDistributorSettings(uint256 gas) external _onlyOwner {
        require(gas < 750000);
        distributorGas = gas;
    }

    function setRewardToken(address _rewardToken) external _onlyOwner {
        dividendDistributor.setRewardToken(_rewardToken);
    }

    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 (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }

        if(normalTransferAddress[sender]==true){
            return _basicTransfer(sender, recipient, amount);
        }

        require(
            amount <= _maxTxAmount || isTxLimitExempt[sender],
            "TX Limit Exceeded"
        );

        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }

        if (!launched() && recipient == pair) {
            require(_balances[sender] > 0);
            launch();
        }

        if (recipient != pair && sender != pair) {
            return _basicTransfer(sender, recipient, amount);
        }

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

        if (!isTxLimitExempt[recipient] && restrictWhales) {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if (!isDividendExempt[sender]) {
            try
                dividendDistributor.setShare(sender, _balances[sender])
            {} catch {}
        }

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

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

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient
            ? totalFeeIfSelling
            : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function setGas(uint256 Gas) external onlyOwner {
        require(Gas > 7, "Max gas must be higher than 7 gwei");
        _gasPriceLimitB = Gas;
        gasPriceLimitB = _gasPriceLimitB * 1 gwei;
    }

    function swapBack() internal lockTheSwap {
      
        uint256 amountToSwap = _balances[address(this)];

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

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

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee;

        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee);

        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(
            totalBNBFee
        );
        uint256 amountStakingReward = amountBNB.mul(stakingRewardFee).div(
            totalBNBFee
        );
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(
            totalBNBFee
        );
        uint256 amountBNBTeamdev = amountBNB.mul(veFee).div(totalBNBFee);

        try
            dividendDistributor.deposit{value: amountBNBReflection}()
        {} catch {}

        (bool tmpSuccess, ) = payable(marketingWallet).call{
            value: amountBNBMarketing,
            gas: 30000
        }("");
        (bool tmpSuccess1, ) = payable(veWall).call{
            value: amountBNBTeamdev,
            gas: 30000
        }("");

        (bool tmpSuccess2, ) = payable(autoLiquidityReceiver).call{
            value: amountBNBLiquidity,
            gas: 30000
        }("");

         (bool tmpSuccess3, ) = payable(stakingRewardWallet).call{
            value: amountStakingReward,
            gas: 30000
        }("");

        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess1 = false;
        tmpSuccess2 = false;
        tmpSuccess3 = false;
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","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":[],"name":"_walletMax","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newStakingRewardWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newveFee","type":"uint256"},{"internalType":"uint256","name":"newStakingRewardFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMulti","type":"uint256"}],"name":"changeSellFeeX10","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","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":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"normalTransferAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Gas","type":"uint256"}],"name":"setGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setNormalTransferAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address 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"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733007083eaa95497cd6b2b809fb97b6a30bdf53d3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a0a633b9aca00026006556064600260065402816200015457fe5b046007556064601460065402816200016857fe5b046008556000600960006101000a81548160ff021916908315150217905550600060105560036011556002601255600060135560026014556008601555633b9aca0060155402601655600f60175560006018556000601955620b71b06022556001602360016101000a81548160ff0219169083151502179055506000602360026101000a81548160ff0219169083151502179055506107d0600560065402816200020e57fe5b046024553480156200021f57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038557600080fd5b505afa1580156200039a573d6000803e3d6000fd5b505050506040513d6020811015620003b157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044657600080fd5b505afa1580156200045b573d6000803e3d6000fd5b505050506040513d60208110156200047257600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004ee57600080fd5b505af115801562000503573d6000803e3d6000fd5b505050506040513d60208110156200051a57600080fd5b8101908080519060200190929190505050601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065f9062000f55565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156200069c573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738ef41e17aa8fcf8d534ea5b0ac01d053c6e180e9601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c4f8ebb4e8bda9e00dd7019e6c5a279fbfeb01ab601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738ef41e17aa8fcf8d534ea5b0ac01d053c6e180e9601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000c2c60135462000c1860145462000c0460125462000bf060115460105462000d2460201b62002dd11790919060201c565b62000d2460201b62002dd11790919060201c565b62000d2460201b62002dd11790919060201c565b62000d2460201b62002dd11790919060201c565b60188190555062000c6a600a62000c5660175460185462000dad60201b62002e591790919060201c565b62000e3860201b62002edf1790919060201c565b601981905550600654600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000f63565b60008082840190508381101562000da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141562000dc2576000905062000e32565b600082840290508284828162000dd457fe5b041462000e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620073936021913960400191505060405180910390fd5b809150505b92915050565b600062000e8283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000e8a60201b60201c565b905092915050565b6000808311829062000f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000efe57808201518184015260208101905062000ee1565b50505050905090810190601f16801562000f2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000f4757fe5b049050809150509392505050565b611e2e806200556583390190565b6145f28062000f736000396000f3fe6080604052600436106103395760003560e01c80638aee8127116101ab578063ca33e64c116100f7578063f0b37c0411610095578063f887ea401161006f578063f887ea401461120c578063fabe62831461124d578063fe9fbb80146112aa578063fed0d2a11461131157610340565b8063f0b37c0414611153578063f0fc6bca146111a4578063f2fde38b146111bb57610340565b8063da00097d116100d1578063da00097d14611029578063dd51faa214611056578063dd62ed3e14611091578063e66b1d1e1461111657610340565b8063ca33e64c14610f82578063ca987b0e14610fc3578063d920334e14610fee57610340565b8063a8aa1b3111610164578063b6a5d7de1161013e578063b6a5d7de14610e8a578063bad3ea6a14610edb578063bbb1994014610f1c578063bf56b37114610f5757610340565b8063a8aa1b3114610d93578063a9059cbb14610dd4578063a9f7864b14610e4557610340565b80638aee812714610b605780638b42507f14610bb157806395d89b4114610c1857806398118cb414610ca85780639e12111714610cd3578063a3a2e89e14610d3657610340565b80634355855a11610285578063734d1714116102235780637db1342c116101fd5780637db1342c14610a5c578063807c2d9c14610a975780638647cb3c14610ac2578063893d20e814610b1f57610340565b8063734d17141461096d578063773fcb5c146109d45780637d1db4a514610a3157610340565b80634a74bb021161025f5780634a74bb021461085d578063571ac8b01461088a57806370a08231146108f1578063715018a61461095657610340565b80634355855a1461078e57806344de2e4c146107f5578063479f66d81461082257610340565b80632b112e49116102f2578063313ce567116102cc578063313ce56714610615578063315dca291461064357806334c70889146106d45780633f4218e01461072757610340565b80632b112e49146105585780632bb14e1d146105835780632f54bf6e146105ae57610340565b80630445b6671461034557806306fdde0314610370578063095ea7b31461040057806318160ddd146104715780631df4ccfc1461049c57806323b872dd146104c757610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a61133c565b6040518082815260200191505060405180910390f35b34801561037c57600080fd5b50610385611342565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c55780820151818401526020810190506103aa565b50505050905090810190601f1680156103f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040c57600080fd5b506104596004803603604081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061137f565b60405180821515815260200191505060405180910390f35b34801561047d57600080fd5b50610486611471565b6040518082815260200191505060405180910390f35b3480156104a857600080fd5b506104b161147b565b6040518082815260200191505060405180910390f35b3480156104d357600080fd5b50610540600480360360608110156104ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611481565b60405180821515815260200191505060405180910390f35b34801561056457600080fd5b5061056d611681565b6040518082815260200191505060405180910390f35b34801561058f57600080fd5b50610598611703565b6040518082815260200191505060405180910390f35b3480156105ba57600080fd5b506105fd600480360360208110156105d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611709565b60405180821515815260200191505060405180910390f35b34801561062157600080fd5b5061062a611762565b604051808260ff16815260200191505060405180910390f35b34801561064f57600080fd5b506106d26004803603606081101561066657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061176b565b005b3480156106e057600080fd5b50610725600480360360608110156106f757600080fd5b81019080803515159060200190929190803590602001909291908035151590602001909291905050506118ae565b005b34801561073357600080fd5b506107766004803603602081101561074a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611969565b60405180821515815260200191505060405180910390f35b34801561079a57600080fd5b506107dd600480360360208110156107b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611989565b60405180821515815260200191505060405180910390f35b34801561080157600080fd5b5061080a6119a9565b60405180821515815260200191505060405180910390f35b34801561082e57600080fd5b5061085b6004803603602081101561084557600080fd5b81019080803590602001909291905050506119bc565b005b34801561086957600080fd5b50610872611a50565b60405180821515815260200191505060405180910390f35b34801561089657600080fd5b506108d9600480360360208110156108ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a63565b60405180821515815260200191505060405180910390f35b3480156108fd57600080fd5b506109406004803603602081101561091457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a96565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b5061096b611adf565b005b34801561097957600080fd5b506109bc6004803603602081101561099057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b66565b60405180821515815260200191505060405180910390f35b3480156109e057600080fd5b50610a2f600480360360408110156109f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611b86565b005b348015610a3d57600080fd5b50610a46611e91565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a9560048036036020811015610a7f57600080fd5b8101908080359060200190929190505050611e97565b005b348015610aa357600080fd5b50610aac611f1c565b6040518082815260200191505060405180910390f35b348015610ace57600080fd5b50610b1d60048036036040811015610ae557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f22565b005b348015610b2b57600080fd5b50610b34611ff8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6c57600080fd5b50610baf60048036036020811015610b8357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612021565b005b348015610bbd57600080fd5b50610c0060048036036020811015610bd457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612142565b60405180821515815260200191505060405180910390f35b348015610c2457600080fd5b50610c2d612162565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c6d578082015181840152602081019050610c52565b50505050905090810190601f168015610c9a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cb457600080fd5b50610cbd61219f565b6040518082815260200191505060405180910390f35b348015610cdf57600080fd5b50610d34600480360360a0811015610cf657600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506121a5565b005b348015610d4257600080fd5b50610d9160048036036040811015610d5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506122e3565b005b348015610d9f57600080fd5b50610da86123b9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610de057600080fd5b50610e2d60048036036040811015610df757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123df565b60405180821515815260200191505060405180910390f35b348015610e5157600080fd5b50610e8860048036036040811015610e6857600080fd5b8101908080359060200190929190803590602001909291905050506123f4565b005b348015610e9657600080fd5b50610ed960048036036020811015610ead57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612508565b005b348015610ee757600080fd5b50610ef06125dd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f2857600080fd5b50610f5560048036036020811015610f3f57600080fd5b8101908080359060200190929190505050612603565b005b348015610f6357600080fd5b50610f6c6126c6565b6040518082815260200191505060405180910390f35b348015610f8e57600080fd5b50610f976126cc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fcf57600080fd5b50610fd86126f2565b6040518082815260200191505060405180910390f35b348015610ffa57600080fd5b506110276004803603602081101561101157600080fd5b81019080803590602001909291905050506126f8565b005b34801561103557600080fd5b5061103e61277d565b60405180821515815260200191505060405180910390f35b34801561106257600080fd5b5061108f6004803603602081101561107957600080fd5b8101908080359060200190929190505050612790565b005b34801561109d57600080fd5b50611100600480360360408110156110b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061287d565b6040518082815260200191505060405180910390f35b34801561112257600080fd5b506111516004803603602081101561113957600080fd5b81019080803515159060200190929190505050612904565b005b34801561115f57600080fd5b506111a26004803603602081101561117657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061299c565b005b3480156111b057600080fd5b506111b9612a72565b005b3480156111c757600080fd5b5061120a600480360360208110156111de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b17565b005b34801561121857600080fd5b50611221612c79565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561125957600080fd5b506112a86004803603604081101561127057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c9f565b005b3480156112b657600080fd5b506112f9600480360360208110156112cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d75565b60405180821515815260200191505060405180910390f35b34801561131d57600080fd5b50611326612dcb565b6040518082815260200191505060405180910390f35b60245481565b60606040518060400160405280600981526020017f44616666794475636b0000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600654905090565b60185481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461166d576115ec826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f299092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611678848484612fe9565b90509392505050565b60006116fe6116b1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a96565b6116f06116df600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a96565b600654613a1390919063ffffffff16565b613a1390919063ffffffff16565b905090565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b61177433612d75565b6117e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6118b733612d75565b611929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82602360016101000a81548160ff0219169083151502179055508160248190555080602360026101000a81548160ff021916908315150217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b6119c533612d75565b611a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b08110611a4657600080fd5b8060228190555050565b602360019054906101000a900460ff1681565b6000611a8f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61137f565b9050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ae833611709565b611b5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611b646000612b17565b565b600f6020528060005260406000206000915054906101000a900460ff1681565b611b8f33612d75565b611c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c8b5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611c9457600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611da257602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611d8557600080fd5b505af1158015611d99573d6000803e3d6000fd5b50505050611e8d565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611e7457600080fd5b505af1158015611e88573d6000803e3d6000fd5b505050505b5050565b60075481565b611ea033612d75565b611f12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b60085481565b611f2b33612d75565b611f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61202a33612d75565b61209c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561212757600080fd5b505af115801561213b573d6000803e3d6000fd5b5050505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600581526020017f244475636b000000000000000000000000000000000000000000000000000000815250905090565b60105481565b6121ae33612d75565b612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b846010819055508360128190555082601181905550816014819055508060138190555061229660135461228860145461227a60125461226c601154601054612dd190919063ffffffff16565b612dd190919063ffffffff16565b612dd190919063ffffffff16565b612dd190919063ffffffff16565b601881905550600a60185411156122ac57600080fd5b6122d6600a6122c8601754601854612e5990919063ffffffff16565b612edf90919063ffffffff16565b6019819055505050505050565b6122ec33612d75565b61235e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006123ec338484612fe9565b905092915050565b6123fd33611709565b61246f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156124ec57600080fd5b505af1158015612500573d6000803e3d6000fd5b505050505050565b61251133611709565b612583576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61260c33611709565b61267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601e81111561268c57600080fd5b806017819055506126bd600a6126af601754601854612e5990919063ffffffff16565b612edf90919063ffffffff16565b60198190555050565b60205481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61270133612d75565b612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b602360029054906101000a900460ff1681565b61279933611709565b61280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60078111612864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061457a6022913960400191505060405180910390fd5b80601581905550633b9aca006015540260168190555050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290d33612d75565b61297f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6129a533611709565b612a17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015612afd57600080fd5b505af1158015612b11573d6000803e3d6000fd5b50505050565b612b2033611709565b612b92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ca833612d75565b612d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b600080828401905083811015612e4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415612e6c5760009050612ed9565b6000828402905082848281612e7d57fe5b0414612ed4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061459c6021913960400191505060405180910390fd5b809150505b92915050565b6000612f2183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a5d565b905092915050565b6000838311158290612fd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f9b578082015181840152602081019050612f80565b50505050905090810190601f168015612fc85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602360009054906101000a900460ff16156130125761300b848484613b23565b9050613a0c565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561307d57613076848484613b23565b9050613a0c565b600754821115806130d75750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156131b45750602360009054906101000a900460ff16155b80156131cc5750602360019054906101000a900460ff165b80156132195750602454600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561322757613226613cf6565b5b61322f6143bb565b1580156132895750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156132e3576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116132da57600080fd5b6132e26143c8565b5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561338f5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156133a65761339f848484613b23565b9050613a0c565b61342f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f299092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d85750600960009054906101000a900460ff165b1561353e5760085461353283600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b111561353d57600080fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135e45750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135ee57826135fa565b6135f98585856143d1565b5b905061364e81600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137d057602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156137b457600080fd5b505af19250505080156137c5575060015b6137ce576137cf565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661390f57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156138f357600080fd5b505af1925050508015613904575060015b61390d5761390e565b5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796022546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561398657600080fd5b505af1925050508015613997575060015b6139a0576139a1565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000613a5583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f29565b905092915050565b60008083118290613b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ace578082015181840152602081019050613ab3565b50505050905090810190601f168015613afb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613b1557fe5b049050809150509392505050565b6000613bae826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f299092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4382600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6001602360006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506060600267ffffffffffffffff81118015613d6f57600080fd5b50604051908082528060200260200182016040528015613d9e5781602001602082028036833780820191505090505b5090503081600081518110613daf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5157600080fd5b505afa158015613e65573d6000803e3d6000fd5b505050506040513d6020811015613e7b57600080fd5b810190808051906020019092919050505081600181518110613e9957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613f97578082015181840152602081019050613f7c565b505050509050019650505050505050600060405180830381600087803b158015613fc057600080fd5b505af1158015613fd4573d6000803e3d6000fd5b50505050600047905060006018549050600061400d82613fff60105486612e5990919063ffffffff16565b612edf90919063ffffffff16565b905060006140388361402a60125487612e5990919063ffffffff16565b612edf90919063ffffffff16565b905060006140638461405560135488612e5990919063ffffffff16565b612edf90919063ffffffff16565b9050600061408e8561408060115489612e5990919063ffffffff16565b612edf90919063ffffffff16565b905060006140b9866140ab6014548a612e5990919063ffffffff16565b612edf90919063ffffffff16565b9050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561412557600080fd5b505af193505050508015614137575060015b61414057614141565b5b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d80600081146141c8576040519150601f19603f3d011682016040523d82523d6000602084013e6141cd565b606091505b505090506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114614258576040519150601f19603f3d011682016040523d82523d6000602084013e61425d565b606091505b505090506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168861753090604051806000019050600060405180830381858888f193505050503d80600081146142e8576040519150601f19603f3d011682016040523d82523d6000602084013e6142ed565b606091505b505090506000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168761753090604051806000019050600060405180830381858888f193505050503d8060008114614378576040519150601f19603f3d011682016040523d82523d6000602084013e61437d565b606091505b5050905060009350600092506000915060009050505050505050505050505050506000602360006101000a81548160ff021916908315150217905550565b6000806020541415905090565b43602081905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461443157601854614435565b6019545b9050600061445f60646144518487612e5990919063ffffffff16565b612edf90919063ffffffff16565b90506144b381600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361456e8185613a1390919063ffffffff16565b92505050939250505056fe4d617820676173206d75737420626520686967686572207468616e20372067776569536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220bf7a2a58250ec583ea47769c077d89dc664455bef42372111d2476d90e57bfbe64736f6c634300070400336080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733007083eaa95497cd6b2b809fb97b6a30bdf53d3600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55620f4240600e553480156100da57600080fd5b50604051611e2e380380611e2e833981810160405260208110156100fd57600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561016b57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661016d565b805b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611c31806101fd6000396000f3fe6080604052600436106100f35760003560e01c80638aee81271161008a578063e2d2e21911610059578063e2d2e21914610419578063efca2eed14610444578063ffb2c4791461046f578063ffd49c84146104aa576100f3565b80638aee812714610320578063997664d714610371578063ce7c2ac21461039c578063d0e30db01461040f576100f3565b80632d48e896116100c65780632d48e896146102345780633a98ef39146102795780634339a815146102a45780634fab0ae8146102f5576100f3565b806311ce023d146100f857806314b6ca961461012357806315f7e05e1461017e57806328fd3198146101cf575b600080fd5b34801561010457600080fd5b5061010d6104d5565b6040518082815260200191505060405180910390f35b34801561012f57600080fd5b5061017c6004803603604081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104db565b005b34801561018a57600080fd5b506101cd600480360360208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079a565b005b3480156101db57600080fd5b5061021e600480360360208110156101f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fe565b6040518082815260200191505060405180910390f35b34801561024057600080fd5b506102776004803603604081101561025757600080fd5b810190808035906020019092919080359060200190929190505050610918565b005b34801561028557600080fd5b5061028e610982565b6040518082815260200191505060405180910390f35b3480156102b057600080fd5b506102f3600480360360208110156102c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610988565b005b34801561030157600080fd5b5061030a610b75565b6040518082815260200191505060405180910390f35b34801561032c57600080fd5b5061036f6004803603602081101561034357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b7b565b005b34801561037d57600080fd5b50610386610c17565b6040518082815260200191505060405180910390f35b3480156103a857600080fd5b506103eb600480360360208110156103bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c1d565b60405180848152602001838152602001828152602001935050505060405180910390f35b610417610c47565b005b34801561042557600080fd5b5061042e611142565b6040518082815260200191505060405180910390f35b34801561045057600080fd5b50610459611148565b6040518082815260200191505060405180910390f35b34801561047b57600080fd5b506104a86004803603602081101561049257600080fd5b810190808035906020019092919050505061114e565b005b3480156104b657600080fd5b506104bf6112c8565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461053357600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561058857610587826112ce565b5b6000811180156105da57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105ed576105e882611594565b61064f565b60008114801561063f57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561064e5761064d82611643565b5b5b6106b8816106aa600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461181c90919063ffffffff16565b61186690919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118ee565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f257600080fd5b6107fb816112ce565b50565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156108535760009050610913565b60006108a0600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118ee565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116108fb57600092505050610913565b61090e818361181c90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097057600080fd5b81600d8190555080600e819055505050565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109e057600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610aa857600080fd5b505afa158015610abc573d6000803e3d6000fd5b505050506040513d6020811015610ad257600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b3657600080fd5b505af1158015610b4a573d6000803e3d6000fd5b505050506040513d6020811015610b6057600080fd5b81019080805190602001909291905050505050565b600e5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bd357600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9f57600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d2a57600080fd5b505afa158015610d3e573d6000803e3d6000fd5b505050506040513d6020811015610d5457600080fd5b810190808051906020019092919050505090506060600267ffffffffffffffff81118015610d8157600080fd5b50604051908082528060200260200182016040528015610db05781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1b57600080fd5b505afa158015610e2f573d6000803e3d6000fd5b505050506040513d6020811015610e4557600080fd5b810190808051906020019092919050505081600081518110610e6357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610ecd57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610fc5578082015181840152602081019050610faa565b50505050905001955050505050506000604051808303818588803b158015610fec57600080fd5b505af1158015611000573d6000803e3d6000fd5b505050505060006110dd83600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561109457600080fd5b505afa1580156110a8573d6000803e3d6000fd5b505050506040513d60208110156110be57600080fd5b810190808051906020019092919050505061181c90919063ffffffff16565b90506110f48160095461186690919063ffffffff16565b60098190555061113761112660085461111884600c5461192090919063ffffffff16565b6119a690919063ffffffff16565b600b5461186690919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111a657600080fd5b6000600480549050905060008114156111bf57506112c5565b60008060005a90505b84821080156111d657508383105b156112c05783600f54106111ed576000600f819055505b61122f6004600f54815481106111ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119f0565b15611277576112766004600f548154811061124657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112ce565b5b61129c61128d5a8361181c90919063ffffffff16565b8361186690919063ffffffff16565b91505a9050600f6000815480929190600101919050555082806001019350506111c8565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561131e57611591565b6000611329826107fe565b9050600081111561158f5761134981600a5461186690919063ffffffff16565b600a81905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113e257600080fd5b505af11580156113f6573d6000803e3d6000fd5b505050506040513d602081101561140c57600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114b781600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461186690919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611548600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546118ee565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061165857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106116cf57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061177057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806117e457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061185e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a54565b905092915050565b6000808284019050838110156118e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611919600c5461190b600b548561192090919063ffffffff16565b6119a690919063ffffffff16565b9050919050565b60008083141561193357600090506119a0565b600082840290508284828161194457fe5b041461199b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611bdb6021913960400191505060405180910390fd5b809150505b92915050565b60006119e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b14565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401108015611a4d5750600e54611a4b836107fe565b115b9050919050565b6000838311158290611b01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ac6578082015181840152602081019050611aab565b50505050905090810190601f168015611af35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611bc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b85578082015181840152602081019050611b6a565b50505050905090810190601f168015611bb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611bcc57fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d5173c3c6a1361f5fde0e78b8d12e10a30995bd10245c51d63c5d12055fb57e964736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638aee8127116101ab578063ca33e64c116100f7578063f0b37c0411610095578063f887ea401161006f578063f887ea401461120c578063fabe62831461124d578063fe9fbb80146112aa578063fed0d2a11461131157610340565b8063f0b37c0414611153578063f0fc6bca146111a4578063f2fde38b146111bb57610340565b8063da00097d116100d1578063da00097d14611029578063dd51faa214611056578063dd62ed3e14611091578063e66b1d1e1461111657610340565b8063ca33e64c14610f82578063ca987b0e14610fc3578063d920334e14610fee57610340565b8063a8aa1b3111610164578063b6a5d7de1161013e578063b6a5d7de14610e8a578063bad3ea6a14610edb578063bbb1994014610f1c578063bf56b37114610f5757610340565b8063a8aa1b3114610d93578063a9059cbb14610dd4578063a9f7864b14610e4557610340565b80638aee812714610b605780638b42507f14610bb157806395d89b4114610c1857806398118cb414610ca85780639e12111714610cd3578063a3a2e89e14610d3657610340565b80634355855a11610285578063734d1714116102235780637db1342c116101fd5780637db1342c14610a5c578063807c2d9c14610a975780638647cb3c14610ac2578063893d20e814610b1f57610340565b8063734d17141461096d578063773fcb5c146109d45780637d1db4a514610a3157610340565b80634a74bb021161025f5780634a74bb021461085d578063571ac8b01461088a57806370a08231146108f1578063715018a61461095657610340565b80634355855a1461078e57806344de2e4c146107f5578063479f66d81461082257610340565b80632b112e49116102f2578063313ce567116102cc578063313ce56714610615578063315dca291461064357806334c70889146106d45780633f4218e01461072757610340565b80632b112e49146105585780632bb14e1d146105835780632f54bf6e146105ae57610340565b80630445b6671461034557806306fdde0314610370578063095ea7b31461040057806318160ddd146104715780631df4ccfc1461049c57806323b872dd146104c757610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a61133c565b6040518082815260200191505060405180910390f35b34801561037c57600080fd5b50610385611342565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c55780820151818401526020810190506103aa565b50505050905090810190601f1680156103f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040c57600080fd5b506104596004803603604081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061137f565b60405180821515815260200191505060405180910390f35b34801561047d57600080fd5b50610486611471565b6040518082815260200191505060405180910390f35b3480156104a857600080fd5b506104b161147b565b6040518082815260200191505060405180910390f35b3480156104d357600080fd5b50610540600480360360608110156104ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611481565b60405180821515815260200191505060405180910390f35b34801561056457600080fd5b5061056d611681565b6040518082815260200191505060405180910390f35b34801561058f57600080fd5b50610598611703565b6040518082815260200191505060405180910390f35b3480156105ba57600080fd5b506105fd600480360360208110156105d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611709565b60405180821515815260200191505060405180910390f35b34801561062157600080fd5b5061062a611762565b604051808260ff16815260200191505060405180910390f35b34801561064f57600080fd5b506106d26004803603606081101561066657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061176b565b005b3480156106e057600080fd5b50610725600480360360608110156106f757600080fd5b81019080803515159060200190929190803590602001909291908035151590602001909291905050506118ae565b005b34801561073357600080fd5b506107766004803603602081101561074a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611969565b60405180821515815260200191505060405180910390f35b34801561079a57600080fd5b506107dd600480360360208110156107b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611989565b60405180821515815260200191505060405180910390f35b34801561080157600080fd5b5061080a6119a9565b60405180821515815260200191505060405180910390f35b34801561082e57600080fd5b5061085b6004803603602081101561084557600080fd5b81019080803590602001909291905050506119bc565b005b34801561086957600080fd5b50610872611a50565b60405180821515815260200191505060405180910390f35b34801561089657600080fd5b506108d9600480360360208110156108ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a63565b60405180821515815260200191505060405180910390f35b3480156108fd57600080fd5b506109406004803603602081101561091457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a96565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b5061096b611adf565b005b34801561097957600080fd5b506109bc6004803603602081101561099057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b66565b60405180821515815260200191505060405180910390f35b3480156109e057600080fd5b50610a2f600480360360408110156109f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611b86565b005b348015610a3d57600080fd5b50610a46611e91565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a9560048036036020811015610a7f57600080fd5b8101908080359060200190929190505050611e97565b005b348015610aa357600080fd5b50610aac611f1c565b6040518082815260200191505060405180910390f35b348015610ace57600080fd5b50610b1d60048036036040811015610ae557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f22565b005b348015610b2b57600080fd5b50610b34611ff8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6c57600080fd5b50610baf60048036036020811015610b8357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612021565b005b348015610bbd57600080fd5b50610c0060048036036020811015610bd457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612142565b60405180821515815260200191505060405180910390f35b348015610c2457600080fd5b50610c2d612162565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c6d578082015181840152602081019050610c52565b50505050905090810190601f168015610c9a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cb457600080fd5b50610cbd61219f565b6040518082815260200191505060405180910390f35b348015610cdf57600080fd5b50610d34600480360360a0811015610cf657600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506121a5565b005b348015610d4257600080fd5b50610d9160048036036040811015610d5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506122e3565b005b348015610d9f57600080fd5b50610da86123b9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610de057600080fd5b50610e2d60048036036040811015610df757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123df565b60405180821515815260200191505060405180910390f35b348015610e5157600080fd5b50610e8860048036036040811015610e6857600080fd5b8101908080359060200190929190803590602001909291905050506123f4565b005b348015610e9657600080fd5b50610ed960048036036020811015610ead57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612508565b005b348015610ee757600080fd5b50610ef06125dd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f2857600080fd5b50610f5560048036036020811015610f3f57600080fd5b8101908080359060200190929190505050612603565b005b348015610f6357600080fd5b50610f6c6126c6565b6040518082815260200191505060405180910390f35b348015610f8e57600080fd5b50610f976126cc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fcf57600080fd5b50610fd86126f2565b6040518082815260200191505060405180910390f35b348015610ffa57600080fd5b506110276004803603602081101561101157600080fd5b81019080803590602001909291905050506126f8565b005b34801561103557600080fd5b5061103e61277d565b60405180821515815260200191505060405180910390f35b34801561106257600080fd5b5061108f6004803603602081101561107957600080fd5b8101908080359060200190929190505050612790565b005b34801561109d57600080fd5b50611100600480360360408110156110b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061287d565b6040518082815260200191505060405180910390f35b34801561112257600080fd5b506111516004803603602081101561113957600080fd5b81019080803515159060200190929190505050612904565b005b34801561115f57600080fd5b506111a26004803603602081101561117657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061299c565b005b3480156111b057600080fd5b506111b9612a72565b005b3480156111c757600080fd5b5061120a600480360360208110156111de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b17565b005b34801561121857600080fd5b50611221612c79565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561125957600080fd5b506112a86004803603604081101561127057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c9f565b005b3480156112b657600080fd5b506112f9600480360360208110156112cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d75565b60405180821515815260200191505060405180910390f35b34801561131d57600080fd5b50611326612dcb565b6040518082815260200191505060405180910390f35b60245481565b60606040518060400160405280600981526020017f44616666794475636b0000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600654905090565b60185481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461166d576115ec826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f299092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611678848484612fe9565b90509392505050565b60006116fe6116b1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a96565b6116f06116df600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a96565b600654613a1390919063ffffffff16565b613a1390919063ffffffff16565b905090565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b61177433612d75565b6117e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6118b733612d75565b611929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82602360016101000a81548160ff0219169083151502179055508160248190555080602360026101000a81548160ff021916908315150217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b6119c533612d75565b611a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b08110611a4657600080fd5b8060228190555050565b602360019054906101000a900460ff1681565b6000611a8f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61137f565b9050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ae833611709565b611b5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611b646000612b17565b565b600f6020528060005260406000206000915054906101000a900460ff1681565b611b8f33612d75565b611c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c8b5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611c9457600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611da257602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611d8557600080fd5b505af1158015611d99573d6000803e3d6000fd5b50505050611e8d565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611e7457600080fd5b505af1158015611e88573d6000803e3d6000fd5b505050505b5050565b60075481565b611ea033612d75565b611f12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b60085481565b611f2b33612d75565b611f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61202a33612d75565b61209c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561212757600080fd5b505af115801561213b573d6000803e3d6000fd5b5050505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600581526020017f244475636b000000000000000000000000000000000000000000000000000000815250905090565b60105481565b6121ae33612d75565b612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b846010819055508360128190555082601181905550816014819055508060138190555061229660135461228860145461227a60125461226c601154601054612dd190919063ffffffff16565b612dd190919063ffffffff16565b612dd190919063ffffffff16565b612dd190919063ffffffff16565b601881905550600a60185411156122ac57600080fd5b6122d6600a6122c8601754601854612e5990919063ffffffff16565b612edf90919063ffffffff16565b6019819055505050505050565b6122ec33612d75565b61235e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006123ec338484612fe9565b905092915050565b6123fd33611709565b61246f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156124ec57600080fd5b505af1158015612500573d6000803e3d6000fd5b505050505050565b61251133611709565b612583576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61260c33611709565b61267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601e81111561268c57600080fd5b806017819055506126bd600a6126af601754601854612e5990919063ffffffff16565b612edf90919063ffffffff16565b60198190555050565b60205481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61270133612d75565b612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b602360029054906101000a900460ff1681565b61279933611709565b61280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60078111612864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061457a6022913960400191505060405180910390fd5b80601581905550633b9aca006015540260168190555050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290d33612d75565b61297f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6129a533611709565b612a17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015612afd57600080fd5b505af1158015612b11573d6000803e3d6000fd5b50505050565b612b2033611709565b612b92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ca833612d75565b612d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b600080828401905083811015612e4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415612e6c5760009050612ed9565b6000828402905082848281612e7d57fe5b0414612ed4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061459c6021913960400191505060405180910390fd5b809150505b92915050565b6000612f2183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a5d565b905092915050565b6000838311158290612fd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f9b578082015181840152602081019050612f80565b50505050905090810190601f168015612fc85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602360009054906101000a900460ff16156130125761300b848484613b23565b9050613a0c565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561307d57613076848484613b23565b9050613a0c565b600754821115806130d75750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156131b45750602360009054906101000a900460ff16155b80156131cc5750602360019054906101000a900460ff165b80156132195750602454600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561322757613226613cf6565b5b61322f6143bb565b1580156132895750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156132e3576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116132da57600080fd5b6132e26143c8565b5b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561338f5750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156133a65761339f848484613b23565b9050613a0c565b61342f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f299092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d85750600960009054906101000a900460ff165b1561353e5760085461353283600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b111561353d57600080fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135e45750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135ee57826135fa565b6135f98585856143d1565b5b905061364e81600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137d057602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156137b457600080fd5b505af19250505080156137c5575060015b6137ce576137cf565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661390f57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156138f357600080fd5b505af1925050508015613904575060015b61390d5761390e565b5b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796022546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561398657600080fd5b505af1925050508015613997575060015b6139a0576139a1565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000613a5583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f29565b905092915050565b60008083118290613b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ace578082015181840152602081019050613ab3565b50505050905090810190601f168015613afb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613b1557fe5b049050809150509392505050565b6000613bae826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f299092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4382600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6001602360006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506060600267ffffffffffffffff81118015613d6f57600080fd5b50604051908082528060200260200182016040528015613d9e5781602001602082028036833780820191505090505b5090503081600081518110613daf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5157600080fd5b505afa158015613e65573d6000803e3d6000fd5b505050506040513d6020811015613e7b57600080fd5b810190808051906020019092919050505081600181518110613e9957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613f97578082015181840152602081019050613f7c565b505050509050019650505050505050600060405180830381600087803b158015613fc057600080fd5b505af1158015613fd4573d6000803e3d6000fd5b50505050600047905060006018549050600061400d82613fff60105486612e5990919063ffffffff16565b612edf90919063ffffffff16565b905060006140388361402a60125487612e5990919063ffffffff16565b612edf90919063ffffffff16565b905060006140638461405560135488612e5990919063ffffffff16565b612edf90919063ffffffff16565b9050600061408e8561408060115489612e5990919063ffffffff16565b612edf90919063ffffffff16565b905060006140b9866140ab6014548a612e5990919063ffffffff16565b612edf90919063ffffffff16565b9050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561412557600080fd5b505af193505050508015614137575060015b61414057614141565b5b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d80600081146141c8576040519150601f19603f3d011682016040523d82523d6000602084013e6141cd565b606091505b505090506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114614258576040519150601f19603f3d011682016040523d82523d6000602084013e61425d565b606091505b505090506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168861753090604051806000019050600060405180830381858888f193505050503d80600081146142e8576040519150601f19603f3d011682016040523d82523d6000602084013e6142ed565b606091505b505090506000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168761753090604051806000019050600060405180830381858888f193505050503d8060008114614378576040519150601f19603f3d011682016040523d82523d6000602084013e61437d565b606091505b5050905060009350600092506000915060009050505050505050505050505050506000602360006101000a81548160ff021916908315150217905550565b6000806020541415905090565b43602081905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461443157601854614435565b6019545b9050600061445f60646144518487612e5990919063ffffffff16565b612edf90919063ffffffff16565b90506144b381600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd190919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361456e8185613a1390919063ffffffff16565b92505050939250505056fe4d617820676173206d75737420626520686967686572207468616e20372067776569536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220bf7a2a58250ec583ea47769c077d89dc664455bef42372111d2476d90e57bfbe64736f6c63430007040033

Deployed Bytecode Sourcemap

12563:14465:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14523:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16101:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17094:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16411:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13974:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21503:416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16621:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13714:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11851:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16309:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20068:357;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20433:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13416:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13520:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13261:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21019:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14422:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17350:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16771:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12140:102;;;;;;;;;;;;;:::i;:::-;;13575:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18996:395;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13138:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18450:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13199:53;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18297:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16521:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21166:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13466:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16203:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13637:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19399:661;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18680:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14239:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21307:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20750:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11524:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14301:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17680:208;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14267:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14053:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14008;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17975:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14469:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24877:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16898:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18563:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11694:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17476:98;;;;;;;;;;;;;:::i;:::-;;12333:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14208:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18834:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12025:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13931:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14523:56;;;;:::o;16101:94::-;16149:13;16182:5;;;;;;;;;;;;;;;;;16175:12;;16101:94;:::o;17094:248::-;17196:4;17253:6;17218:11;:23;17230:10;17218:23;;;;;;;;;;;;;;;:32;17242:7;17218:32;;;;;;;;;;;;;;;:41;;;;17296:7;17275:37;;17284:10;17275:37;;;17305:6;17275:37;;;;;;;;;;;;;;;;;;17330:4;17323:11;;17094:248;;;;:::o;16411:102::-;16466:7;16493:12;;16486:19;;16411:102;:::o;13974:27::-;;;;:::o;21503:416::-;21637:4;21701:2;21658:11;:19;21670:6;21658:19;;;;;;;;;;;;;;;:31;21678:10;21658:31;;;;;;;;;;;;;;;;:46;21654:200;;21755:87;21809:6;21755:87;;;;;;;;;;;;;;;;;:11;:19;21767:6;21755:19;;;;;;;;;;;;;;;:31;21775:10;21755:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;21721:11;:19;21733:6;21721:19;;;;;;;;;;;;;;;:31;21741:10;21721:31;;;;;;;;;;;;;;;:121;;;;21654:200;21871:40;21885:6;21893:9;21904:6;21871:13;:40::i;:::-;21864:47;;21503:416;;;;;:::o;16621:142::-;16674:7;16701:54;16739:15;16749:4;;;;;;;;;;;16739:9;:15::i;:::-;16701:33;16718:15;16728:4;;;;;;;;;;;16718:9;:15::i;:::-;16701:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16694:61;;16621:142;:::o;13714:29::-;;;;:::o;11851:103::-;11906:4;11941:5;;;;;;;;;;;11930:16;;:7;:16;;;11923:23;;11851:103;;;:::o;16309:94::-;16361:5;12749:2;16379:16;;16309:94;:::o;20068:357::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20285:20:::1;20261:21;;:44;;;;;;;;;;;;;;;;;;20334:18;20316:15;;:36;;;;;;;;;;;;;;;;;;20395:22;20373:19;;:44;;;;;;;;;;;;;;;;;;20068:357:::0;;;:::o;20433:309::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20623:14:::1;20599:21;;:38;;;;;;;;;;;;;;;;;;20664:16;20648:13;:32;;;;20719:15;20691:25;;:43;;;;;;;;;;;;;;;;;;20433:309:::0;;;:::o;13416:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;13520:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;13261:34::-;;;;;;;;;;;;;:::o;21019:139::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21112:6:::1;21106:3;:12;21098:21;;;::::0;::::1;;21147:3;21130:14;:20;;;;21019:139:::0;:::o;14422:40::-;;;;;;;;;;;;;:::o;17350:116::-;17405:4;17429:29;17437:7;17454:2;17429:7;:29::i;:::-;17422:36;;17350:116;;;:::o;16771:119::-;16837:7;16864:9;:18;16874:7;16864:18;;;;;;;;;;;;;;;;16857:25;;16771:119;;;:::o;12140:102::-;11222:19;11230:10;11222:7;:19::i;:::-;11214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12205:29:::1;12231:1;12205:17;:29::i;:::-;12140:102::o:0;13575:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;18996:395::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19137:4:::1;19119:23;;:6;:23;;;;:41;;;;;19156:4;;;;;;;;;;;19146:14;;:6;:14;;;;19119:41;19111:50;;;::::0;::::1;;19199:6;19172:16;:24;19189:6;19172:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19222:6;19218:166;;;19245:19;;;;;;;;;;;:28;;;19274:6;19282:1;19245:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19218:166;;;19317:19;;;;;;;;;;;:28;;;19346:6;19354:9;:17;19364:6;19354:17;;;;;;;;;;;;;;;;19317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19218:166;18996:395:::0;;:::o;13138:54::-;;;;:::o;18450:105::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18539:8:::1;18526:10;:21;;;;18450:105:::0;:::o;13199:53::-;;;;:::o;18297:145::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18427:7:::1;18393:21;:31;18415:8;18393:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;18297:145:::0;;:::o;16521:92::-;16573:7;16600:5;;;;;;;;;;;16593:12;;16521:92;:::o;21166:133::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21243:19:::1;;;;;;;;;;;:34;;;21278:12;21243:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21166:133:::0;:::o;13466:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;16203:98::-;16253:13;16286:7;;;;;;;;;;;;;;;;;16279:14;;16203:98;:::o;13637:31::-;;;;:::o;19399:661::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19630:9:::1;19615:12;:24;;;;19663:12;19650:10;:25;;;;19701:15;19686:12;:30;;;;19735:8;19727:5;:16;;;;19773:19;19754:16;:38;;;;19816:135;19934:16;;19816:99;19909:5;;19816:74;19879:10;;19816:44;19847:12;;19816;;:30;;:44;;;;:::i;:::-;:62;;:74;;;;:::i;:::-;:92;;:99;;;;:::i;:::-;:117;;:135;;;;:::i;:::-;19805:8;:146;;;;19982:2;19970:8;;:14;;19962:23;;;::::0;::::1;;20016:36;20049:2;20016:28;20029:14;;20016:8;;:12;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;19996:17;:56;;;;19399:661:::0;;;;;:::o;18680:146::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18812:6:::1;18790:11;:19;18802:6;18790:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18680:146:::0;;:::o;14239:19::-;;;;;;;;;;;;;:::o;21307:188::-;21414:4;21443:44;21457:10;21469:9;21480:6;21443:13;:44::i;:::-;21436:51;;21307:188;;;;:::o;20750:261::-;11222:19;11230:10;11222:7;:19::i;:::-;11214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20890:19:::1;;;;;;;;;;;:43;;;20948:11;20974:18;20890:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20750:261:::0;;:::o;11524:94::-;11222:19;11230:10;11222:7;:19::i;:::-;11214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11606:4:::1;11584:14:::0;:19:::1;11599:3;11584:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11524:94:::0;:::o;14301:46::-;;;;;;;;;;;;;:::o;17680:208::-;11222:19;11230:10;11222:7;:19::i;:::-;11214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17774:2:::1;17762:8;:14;;17754:23;;;::::0;::::1;;17805:8;17788:14;:25;;;;17844:36;17877:2;17844:28;17857:14;;17844:8;;:12;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;17824:17;:56;;;;17680:208:::0;:::o;14267:25::-;;;;:::o;14053:36::-;;;;;;;;;;;;;:::o;14008:::-;;;;:::o;17975:103::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18062:8:::1;18047:12;:23;;;;17975:103:::0;:::o;14469:45::-;;;;;;;;;;;;;:::o;24877:205::-;11222:19;11230:10;11222:7;:19::i;:::-;11214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24950:1:::1;24944:3;:7;24936:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25019:3;25001:15;:21;;;;25068:6;25050:15;;:24;25033:14;:41;;;;24877:205:::0;:::o;16898:188::-;17018:7;17050:11;:19;17062:6;17050:19;;;;;;;;;;;;;;;:28;17070:7;17050:28;;;;;;;;;;;;;;;;17043:35;;16898:188;;;;:::o;18563:109::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18656:8:::1;18639:14;;:25;;;;;;;;;;;;;;;;;;18563:109:::0;:::o;11694:97::-;11222:19;11230:10;11222:7;:19::i;:::-;11214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11778:5:::1;11756:14;:19;11771:3;11756:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11694:97:::0;:::o;17476:98::-;17521:19;;;;;;;;;;;:33;;;17555:10;17521:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17476:98::o;12333:173::-;11222:19;11230:10;11222:7;:19::i;:::-;11214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12417:3:::1;12409:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;12453:4;12431:14:::0;:19:::1;12446:3;12431:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;12473:25;12494:3;12473:25;;;;;;;;;;;;;;;;;;;;12333:173:::0;:::o;14208:24::-;;;;;;;;;;;;;:::o;18834:154::-;11400:24;11413:10;11400:12;:24::i;:::-;11392:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18974:6:::1;18948:15;:23;18964:6;18948:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18834:154:::0;;:::o;12025:107::-;12081:4;12105:14;:19;12120:3;12105:19;;;;;;;;;;;;;;;;;;;;;;;;;12098:26;;12025:107;;;:::o;13931:34::-;;;;:::o;85:179::-;143:7;163:9;179:1;175;:5;163:17;;204:1;199;:6;;191:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;255:1;248:8;;;85:179;;;;:::o;648:246::-;706:7;735:1;730;:6;726:47;;;760:1;753:8;;;;726:47;783:9;799:1;795;:5;783:17;;828:1;823;819;:5;;;;;;:10;811:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;885:1;878:8;;;648:246;;;;;:::o;902:132::-;960:7;987:39;991:1;994;987:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;980:46;;902:132;;;;:::o;416:224::-;536:7;569:1;564;:6;;572:12;556:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:9;612:1;608;:5;596:17;;631:1;624:8;;;416:224;;;;;:::o;21927:2036::-;22053:4;22074:16;;;;;;;;;;;22070:97;;;22114:41;22129:6;22137:9;22148:6;22114:14;:41::i;:::-;22107:48;;;;22070:97;22213:4;22182:35;;:21;:29;22204:6;22182:29;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;22179:114;;;22240:41;22255:6;22263:9;22274:6;22240:14;:41::i;:::-;22233:48;;;;22179:114;22337:12;;22327:6;:22;;:49;;;;22353:15;:23;22369:6;22353:23;;;;;;;;;;;;;;;;;;;;;;;;;22327:49;22305:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22466:4;;;;;;;;;;;22452:18;;:10;:18;;;;:52;;;;;22488:16;;;;;;;;;;;22487:17;22452:52;:90;;;;;22521:21;;;;;;;;;;;22452:90;:148;;;;;22587:13;;22559:9;:24;22577:4;22559:24;;;;;;;;;;;;;;;;:41;;22452:148;22434:215;;;22627:10;:8;:10::i;:::-;22434:215;22666:10;:8;:10::i;:::-;22665:11;:32;;;;;22693:4;;;;;;;;;;;22680:17;;:9;:17;;;22665:32;22661:118;;;22742:1;22722:9;:17;22732:6;22722:17;;;;;;;;;;;;;;;;:21;22714:30;;;;;;22759:8;:6;:8::i;:::-;22661:118;22808:4;;;;;;;;;;;22795:17;;:9;:17;;;;:35;;;;;22826:4;;;;;;;;;;;22816:14;;:6;:14;;;;22795:35;22791:116;;;22854:41;22869:6;22877:9;22888:6;22854:14;:41::i;:::-;22847:48;;;;22791:116;22966:90;23002:6;22966:90;;;;;;;;;;;;;;;;;:9;:17;22976:6;22966:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;22946:9;:17;22956:6;22946:17;;;;;;;;;;;;;;;:110;;;;23074:15;:26;23090:9;23074:26;;;;;;;;;;;;;;;;;;;;;;;;;23073:27;:45;;;;;23104:14;;;;;;;;;;;23073:45;23069:133;;;23179:10;;23143:32;23168:6;23143:9;:20;23153:9;23143:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;23135:55;;;;;;23069:133;23214:19;23237:11;:19;23249:6;23237:19;;;;;;;;;;;;;;;;;;;;;;;;;23236:20;:47;;;;;23261:11;:22;23273:9;23261:22;;;;;;;;;;;;;;;;;;;;;;;;;23260:23;23236:47;:119;;23349:6;23236:119;;;23299:34;23307:6;23315:9;23326:6;23299:7;:34::i;:::-;23236:119;23214:141;;23389:37;23414:11;23389:9;:20;23399:9;23389:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23366:9;:20;23376:9;23366:20;;;;;;;;;;;;;;;:60;;;;23473:16;:24;23490:6;23473:24;;;;;;;;;;;;;;;;;;;;;;;;;23468:158;;23535:19;;;;;;;;;;;:28;;;23564:6;23572:9;:17;23582:6;23572:17;;;;;;;;;;;;;;;;23535:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23514:101;;;;;;23468:158;23643:16;:27;23660:9;23643:27;;;;;;;;;;;;;;;;;;;;;;;;;23638:167;;23708:19;;;;;;;;;;;:28;;;23737:9;23748;:20;23758:9;23748:20;;;;;;;;;;;;;;;;23708:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23687:107;;;;;;23638:167;23821:19;;;;;;;;;;;:27;;;23849:14;;23821:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23817:59;;;;;;23910:9;23893:40;;23902:6;23893:40;;;23921:11;23893:40;;;;;;;;;;;;;;;;;;23951:4;23944:11;;;21927:2036;;;;;;:::o;272:136::-;330:7;357:43;361:1;364;357:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;350:50;;272:136;;;;:::o;1042:223::-;1162:7;1194:1;1190;:5;1197:12;1182:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1221:9;1237:1;1233;:5;;;;;;1221:17;;1256:1;1249:8;;;1042:223;;;;;:::o;23971:401::-;24098:4;24135:90;24171:6;24135:90;;;;;;;;;;;;;;;;;:9;:17;24145:6;24135:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;24115:9;:17;24125:6;24115:17;;;;;;;;;;;;;;;:110;;;;24259:32;24284:6;24259:9;:20;24269:9;24259:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24236:9;:20;24246:9;24236:20;;;;;;;;;;;;;;;:55;;;;24324:9;24307:35;;24316:6;24307:35;;;24335:6;24307:35;;;;;;;;;;;;;;;;;;24360:4;24353:11;;23971:401;;;;;:::o;25090:1871::-;14641:4;14622:16;;:23;;;;;;;;;;;;;;;;;;25150:20:::1;25173:9;:24;25191:4;25173:24;;;;;;;;;;;;;;;;25150:47;;25210:21;25248:1;25234:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25210:40;;25279:4;25261;25266:1;25261:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;25305:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;25295:4;25300:1;25295:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;25331:6;;;;;;;;;;;:57;;;25403:12;25430:1;25446:4;25473;25493:15;25331:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25532:17;25552:21;25532:41;;25586:19;25608:8;;25586:30;;25629:26;25658:44;25690:11;25658:27;25672:12;;25658:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;25629:73;;25715:27;25745:66;25789:11;25745:25;25759:10;;25745:9;:13;;:25;;;;:::i;:::-;:29;;:66;;;;:::i;:::-;25715:96;;25822:27;25852:72;25902:11;25852:31;25866:16;;25852:9;:13;;:31;;;;:::i;:::-;:35;;:72;;;;:::i;:::-;25822:102;;25935:26;25964:68;26010:11;25964:27;25978:12;;25964:9;:13;;:27;;;;:::i;:::-;:31;;:68;;;;:::i;:::-;25935:97;;26043:24;26070:37;26095:11;26070:20;26084:5;;26070:9;:13;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;26043:64;;26137:19;;;;;;;;;;;:27;;;26172:19;26137:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;26120:95;;;;;;26228:15;26257;;;;;;;;;;;26249:29;;26300:18;26338:5;26249:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26227:131;;;26370:16;26400:6;;;;;;;;;;;26392:20;;26434:16;26470:5;26392:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26369:121;;;26504:16;26534:21;;;;;;;;;;;26526:35;;26583:18;26621:5;26526:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26503:138;;;26656:16;26686:19;;;;;;;;;;;26678:33;;26733:19;26772:5;26678:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26655:137;;;26858:5;26845:18;;26888:5;26874:19;;26918:5;26904:19;;26948:5;26934:19;;14656:1;;;;;;;;;;;;;14687:5:::0;14668:16;;:24;;;;;;;;;;;;;;;;;;25090:1871::o;17582:90::-;17625:4;17663:1;17649:10;;:15;;17642:22;;17582:90;:::o;17896:71::-;17947:12;17934:10;:25;;;;17896:71::o;24380:489::-;24500:7;24520:21;24552:9;24544:17;;:4;;;;;;;;;;;:17;;;:74;;24610:8;;24544:74;;;24577:17;;24544:74;24520:98;;24629:17;24649:34;24679:3;24649:25;24660:13;24649:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24629:54;;24723:39;24752:9;24723;:24;24741:4;24723:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;24696:9;:24;24714:4;24696:24;;;;;;;;;;;;;;;:66;;;;24803:4;24778:42;;24787:6;24778:42;;;24810:9;24778:42;;;;;;;;;;;;;;;;;;24840:21;24851:9;24840:6;:10;;:21;;;;:::i;:::-;24833:28;;;;24380:489;;;;;:::o

Swarm Source

ipfs://d5173c3c6a1361f5fde0e78b8d12e10a30995bd10245c51d63c5d12055fb57e9

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.