ETH Price: $2,498.67 (+1.32%)

Contract

0xCD2eaFb04B464aF21D141D76647A28F6F298842f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve Max175588372023-06-25 20:22:35432 days ago1687724555IN
0xCD2eaFb0...6F298842f
0 ETH0.0005834512.52442216
Approve Max172464292023-05-12 20:48:35476 days ago1683924515IN
0xCD2eaFb0...6F298842f
0 ETH0.0024787853.20984477
Approve170546572023-04-15 20:08:47503 days ago1681589327IN
0xCD2eaFb0...6F298842f
0 ETH0.0010907423.11932121
Transfer170125872023-04-09 18:45:35509 days ago1681065935IN
0xCD2eaFb0...6F298842f
0 ETH0.0010558120.10225753
Approve Max170122972023-04-09 17:47:11510 days ago1681062431IN
0xCD2eaFb0...6F298842f
0 ETH0.0009442720.27003348
_sell169837172023-04-05 16:19:47514 days ago1680711587IN
0xCD2eaFb0...6F298842f
0 ETH0.0148028643.59014402
Withdraw Tax Bal...169691542023-04-03 14:42:11516 days ago1680532931IN
0xCD2eaFb0...6F298842f
0 ETH0.0027324939.9972601
_sell169583312023-04-02 2:03:47517 days ago1680401027IN
0xCD2eaFb0...6F298842f
0 ETH0.0066859521.89388841
_buy169261122023-03-28 13:24:59522 days ago1680009899IN
0xCD2eaFb0...6F298842f
0 ETH0.0086846427.76696925
_buy169260882023-03-28 13:20:11522 days ago1680009611IN
0xCD2eaFb0...6F298842f
0 ETH0.0106123329.14922927
_sell169250742023-03-28 9:54:23522 days ago1679997263IN
0xCD2eaFb0...6F298842f
0 ETH0.0083513727.34640415
Approve Max169139022023-03-26 20:13:47523 days ago1679861627IN
0xCD2eaFb0...6F298842f
0 ETH0.0009713620.8514541
_buy168947632023-03-24 3:43:59526 days ago1679629439IN
0xCD2eaFb0...6F298842f
0 ETH0.0007156213.85615021
_buy168947632023-03-24 3:43:59526 days ago1679629439IN
0xCD2eaFb0...6F298842f
0 ETH0.0005754811.66980614
_buy168458622023-03-17 6:49:59533 days ago1679035799IN
0xCD2eaFb0...6F298842f
0 ETH0.006862218.84864592
_buy168145532023-03-12 21:14:23537 days ago1678655663IN
0xCD2eaFb0...6F298842f
0 ETH0.0011993723.22250768
_buy168145502023-03-12 21:13:47537 days ago1678655627IN
0xCD2eaFb0...6F298842f
0 ETH0.0074792823.91313988
_buy168145472023-03-12 21:13:11537 days ago1678655591IN
0xCD2eaFb0...6F298842f
0 ETH0.001218723.59675117
Withdraw Tax Bal...168110082023-03-12 9:18:59538 days ago1678612739IN
0xCD2eaFb0...6F298842f
0 ETH0.0012047617.63492903
_sell167990232023-03-10 16:50:47540 days ago1678467047IN
0xCD2eaFb0...6F298842f
0 ETH0.0108751836.17922455
_buy167674752023-03-06 6:15:47544 days ago1678083347IN
0xCD2eaFb0...6F298842f
0 ETH0.0012450324.10653726
_buy167674722023-03-06 6:15:11544 days ago1678083311IN
0xCD2eaFb0...6F298842f
0 ETH0.0086167223.66784677
_buy167674692023-03-06 6:14:35544 days ago1678083275IN
0xCD2eaFb0...6F298842f
0 ETH0.0017221725.05097849
_buy167673612023-03-06 5:52:47544 days ago1678081967IN
0xCD2eaFb0...6F298842f
0 ETH0.0106448729.23862225
_buy167647522023-03-05 21:05:23544 days ago1678050323IN
0xCD2eaFb0...6F298842f
0 ETH0.0127788735.10014462
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SAFESURGE

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-01-16
*/

//SPDX-License-Identifier: MIT

//safesurge

pragma solidity 0.8.17;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function decimals() external view returns (uint8);
}

interface ISRG {
    function calculatePrice() external view returns (uint256);

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract SAFESURGE is IERC20, Context, Ownable, ReentrancyGuard {
    event Bought(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarBuy
    );
    event Sold(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarSell
    );
    event FeesMulChanged(uint256 newBuyMul, uint256 newSellMul);
    event StablePairChanged(address newStablePair, address newStableToken);
    event MaxBagChanged(uint256 newMaxBag);

    // token data
    string private constant _name = "SAFESURGE";
    string private constant _symbol = "SAFESURGE";
    uint8 private constant _decimals = 9;
    uint256 private constant _DECMULTIPLIER = 10**_decimals;

    //SRG pair data
    address private constant SRG = 0xcD682EF09d07668d49A8103ddD65Ff54AebFbfDe; //change this according to chain
    ISRG private constant SRGI = ISRG(SRG); //interface to interact with SRG
    IERC20 private constant SRGIE = IERC20(SRG); //interace to interact with SRG

    uint256 private _srgDecimals = SRGIE.decimals();

    // Total Supply
    uint256 public constant _totalSupply = 10**8 * _DECMULTIPLIER;

    // balances
    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    //Fees
    mapping(address => bool) public isFeeExempt;
    uint256 public sellMul = 96;
    uint256 public buyMul = 96;
    uint256 public constant DIVISOR = 100;

    //Max bag requirements
    mapping(address => bool) public isTxLimitExempt;
    uint256 public maxBag = _totalSupply / 50;

    //Tax collection
    uint256 public taxBalance = 0;

    //Tax wallets
    address public teamWallet = 0x1E43881d582B5f9a7FDDc38Ed842FC653e3b054c;
    address public treasuryWallet = 0x45b9EE4F4eaa7df7afaDcECEf77D3C80fe75154D;

    // Tax Split
    uint256 public teamShare = 50;
    uint256 public treasuryShare = 50;
    uint256 public constant SHAREDIVISOR = 100;

    //Known Wallets
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;

    //trading parameters
    uint256 public liquidity = 15**5 * 10**_srgDecimals;
    uint256 public liqConst = liquidity * _totalSupply;
    uint256 public constant TRADE_OPEN_TIME = 1673866156;

    //volume trackers
    mapping(address => uint256) public indVol;
    mapping(uint256 => uint256) public tVol;
    uint256 public totalVolume = 0;

    //candlestick data
    uint256 public constant PADDING = 10**18;
    uint256 public totalTx;
    mapping(uint256 => uint256) public txTimeStamp;

    struct candleStick {
        uint256 time;
        uint256 open;
        uint256 close;
        uint256 high;
        uint256 low;
    }

    mapping(uint256 => candleStick) public candleStickData;

    //Frontrun Guard
    mapping(address => uint256) private _lastBuyBlock;

    // initialize supply
    constructor() {
        _balances[address(this)] = _totalSupply;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[address(0)] = true;
        //burn to be added here if needed

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

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

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

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

    function 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 approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        require(spender != address(0), "SRG20: approve to the zero address");
        require(
            msg.sender != address(0),
            "SRG20: approve from the zero address"
        );

        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - _balances[DEAD];
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(
            newLimit >= _totalSupply / 100,
            "New wallet limit should be at least 1% of total supply"
        );
        maxBag = newLimit;
        emit MaxBagChanged(newLimit);
    }

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

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

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

    /** TransferFrom Function */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        address spender = msg.sender;
        //check allowance requirement
        _spendAllowance(sender, spender, amount);
        return _transferFrom(sender, recipient, amount);
    }

    /** Internal Transfer */
    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        // make standard checks
        require(
            recipient != address(0) && recipient != address(this),
            "transfer to the zero address or CA"
        );
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            isTxLimitExempt[recipient] ||
                _balances[recipient] + amount <= maxBag,
            "Max wallet exceeded!"
        );

        // subtract from sender
        _balances[sender] = _balances[sender] - amount;

        // give amount to receiver
        _balances[recipient] = _balances[recipient] + amount;

        // Transfer Event
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "SRG20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "SRG20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }

        emit Transfer(account, address(0), amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = _allowances[owner][spender];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "SRG20: insufficient allowance"
            );

            unchecked {
                // decrease allowance
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /** Purchases SURGE Tokens and Deposits Them in Sender's Address*/
    function _buy(
        uint256 buyAmount,
        uint256 minTokenOut,
        uint256 deadline
    ) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");

        // Frontrun Guard
        _lastBuyBlock[msg.sender] = block.number;

        // liquidity is set
        require(liquidity > 0, "The token has no liquidity");

        // check if trading is open
        require(
            block.timestamp >= TRADE_OPEN_TIME,
            "Trading is not Open"
        );

        //remove the buy tax
        uint256 srgAmount = isFeeExempt[msg.sender]
            ? buyAmount
            : (buyAmount * buyMul) / DIVISOR;

        // how much they should purchase?
        uint256 tokensToSend = _balances[address(this)] -
            (liqConst / (srgAmount + liquidity));

        //revert for max bag
        require(
            _balances[msg.sender] + tokensToSend <= maxBag ||
                isTxLimitExempt[msg.sender],
            "Max wallet exceeded"
        );

        // revert if under 1
        require(tokensToSend > 1, "SRG20: Must Buy more than 1 decimal");

        // revert for slippage
        require(tokensToSend >= minTokenOut, "INSUFFICIENT OUTPUT AMOUNT");
        
        // transfer the SRG from the msg.sender to the CA
        bool s = SRGIE.transferFrom(msg.sender, address(this), buyAmount);

        require(s, "transfer of SRG failed!");

        // transfer the tokens from CA to the buyer
        buy(msg.sender, tokensToSend);

        //update available tax to extract and Liquidity
        uint256 taxAmount = buyAmount - srgAmount;
        taxBalance = taxBalance + taxAmount;
        liquidity = liquidity + srgAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarBuy = buyAmount * getSRGPrice();
        totalVolume += dollarBuy;
        indVol[msg.sender] += dollarBuy;
        tVol[cTime] += dollarBuy;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getSRGPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            if (totalTx == 1) {
                candleStickData[cTime].open =
                    ((liquidity - srgAmount) / (_totalSupply)) *
                    getSRGPrice();
            } else {
                candleStickData[cTime].open = candleStickData[
                    txTimeStamp[totalTx - 1]
                ].close;
            }
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        //emit transfer and buy events
        emit Transfer(address(this), msg.sender, tokensToSend);
        emit Bought(
            msg.sender,
            address(this),
            tokensToSend,
            buyAmount,
            srgAmount * getSRGPrice()
        );
        return true;
    }

    /** Sends Tokens to the buyer Address */
    function buy(address receiver, uint256 amount) internal {
        _balances[receiver] = _balances[receiver] + amount;
        _balances[address(this)] = _balances[address(this)] - amount;
    }

    /** Sells SURGE Tokens And Deposits the BNB into Seller's Address */
    function _sell(
        uint256 tokenAmount,
        uint256 deadline,
        uint256 minBNBOut
    ) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");

        //Frontrun Guard
        require(
            _lastBuyBlock[msg.sender] != block.number,
            "Buying and selling in the same block is not allowed!"
        );

        address seller = msg.sender;

        // make sure seller has this balance
        require(
            _balances[seller] >= tokenAmount,
            "cannot sell above token amount"
        );

        // get how much beans are the tokens worth
        uint256 amountSRG = liquidity -
            (liqConst / (_balances[address(this)] + tokenAmount));
        uint256 amountTax = (amountSRG * (DIVISOR - sellMul)) / DIVISOR;
        uint256 SRGtoSend = amountSRG - amountTax;

        //slippage revert
        require(amountSRG >= minBNBOut, "INSUFFICIENT OUTPUT AMOUNT");

        // send SRG to Seller

        bool successful = isFeeExempt[msg.sender]
            ? SRGIE.transfer(msg.sender, amountSRG)
            : SRGIE.transfer(msg.sender, SRGtoSend);
        require(successful, "SRG transfer failed");

        // subtract full amount from sender
        _balances[seller] = _balances[seller] - tokenAmount;

        //add tax allowance to be withdrawn and remove from liq the amount of beans taken by the seller
        taxBalance = isFeeExempt[msg.sender]
            ? taxBalance
            : taxBalance + amountTax;
        liquidity = liquidity - amountSRG;

        // add tokens back into the contract
        _balances[address(this)] = _balances[address(this)] + tokenAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarSell = amountSRG * getSRGPrice();
        totalVolume += dollarSell;
        indVol[msg.sender] += dollarSell;
        tVol[cTime] += dollarSell;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getSRGPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            candleStickData[cTime].open = candleStickData[
                txTimeStamp[totalTx - 1]
            ].close;
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        // emit transfer and sell events
        emit Transfer(seller, address(this), tokenAmount);
        if (isFeeExempt[msg.sender]) {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                amountSRG,
                dollarSell
            );
        } else {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                SRGtoSend,
                SRGtoSend * getSRGPrice()
            );
        }
        return true;
    }

    /** Amount of liquidity in Contract */
    function getLiquidity() public view returns (uint256) {
        return liquidity;
    }

    /** Returns the value of your holdings before the sell fee */
    function getValueOfHoldings(address holder) public view returns (uint256) {
        return
            ((_balances[holder] * liquidity) / _balances[address(this)]) *
            getSRGPrice();
    }

    function changeFees(uint256 newBuyMul, uint256 newSellMul)
        external
        onlyOwner
    {
        require(
            newBuyMul >= 90 &&
                newSellMul >= 90 &&
                newBuyMul <= 100 &&
                newSellMul <= 100,
            "Fees are too high"
        );

        buyMul = newBuyMul;
        sellMul = newSellMul;

        emit FeesMulChanged(newBuyMul, newSellMul);
    }

    function changeTaxDistribution(
        uint256 newteamShare,
        uint256 newtreasuryShare
    ) external onlyOwner {
        require(
            newteamShare + newtreasuryShare == SHAREDIVISOR,
            "Sum of shares must be 100"
        );

        teamShare = newteamShare;
        treasuryShare = newtreasuryShare;
    }

    function changeFeeReceivers(
        address newTeamWallet,
        address newTreasuryWallet
    ) external onlyOwner {
        require(
            newTeamWallet != address(0) && newTreasuryWallet != address(0),
            "New wallets must not be the ZERO address"
        );

        teamWallet = newTeamWallet;
        treasuryWallet = newTreasuryWallet;
    }

    function withdrawTaxBalance() external nonReentrant onlyOwner {
        bool temp1 = SRGIE.transfer(
            teamWallet,
            (taxBalance * teamShare) / SHAREDIVISOR
        );
        bool temp2 = SRGIE.transfer(
            treasuryWallet,
            (taxBalance * treasuryShare) / SHAREDIVISOR
        );
        assert(temp1 && temp2);
        taxBalance = 0;
    }

    function getTokenAmountOut(uint256 amountSRGIn)
        external
        view
        returns (uint256)
    {
        uint256 amountAfter = liqConst / (liquidity - amountSRGIn);
        uint256 amountBefore = liqConst / liquidity;
        return amountAfter - amountBefore;
    }

    function getsrgAmountOut(uint256 amountIn) public view returns (uint256) {
        uint256 srgBefore = liqConst / _balances[address(this)];
        uint256 srgAfter = liqConst / (_balances[address(this)] + amountIn);
        return srgBefore - srgAfter;
    }

    function addLiquidity(uint256 amountSRGLiq) external onlyOwner {
        uint256 tokensToAdd = (_balances[address(this)] * amountSRGLiq) /
            liquidity;
        require(_balances[msg.sender] >= tokensToAdd, "Not enough tokens!");

        bool sLiq = SRGIE.transfer(address(this), amountSRGLiq);
        require(sLiq, "SRG transfer was unsuccesful!");

        uint256 oldLiq = liquidity;
        liquidity = liquidity + amountSRGLiq;
        _balances[address(this)] += tokensToAdd;
        _balances[msg.sender] -= tokensToAdd;
        liqConst = (liqConst * liquidity) / oldLiq;

        emit Transfer(msg.sender, address(this), tokensToAdd);
    }

    function getMarketCap() external view returns (uint256) {
        return (getCirculatingSupply() * calculatePrice() * getSRGPrice());
    }

    // calculate price based on pair SRG price
    function getSRGPrice() public view returns (uint256) {
        return (SRGI.calculatePrice() * SRGI.getBNBPrice()); // return amount of token0 needed to buy token1
    }

    // Returns the Current Price of the Token in SRG
    function calculatePrice() public view returns (uint256) {
        require(liquidity > 0, "No Liquidity");
        return liquidity * PADDING / _balances[address(this)];
    }
}

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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarBuy","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"FeesMulChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxBag","type":"uint256"}],"name":"MaxBagChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarSell","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newStablePair","type":"address"},{"indexed":false,"internalType":"address","name":"newStableToken","type":"address"}],"name":"StablePairChanged","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":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PADDING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHAREDIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRADE_OPEN_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint256","name":"minTokenOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"_buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"minBNBOut","type":"uint256"}],"name":"_sell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountSRGLiq","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMul","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"candleStickData","outputs":[{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"open","type":"uint256"},{"internalType":"uint256","name":"close","type":"uint256"},{"internalType":"uint256","name":"high","type":"uint256"},{"internalType":"uint256","name":"low","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newTeamWallet","type":"address"},{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newteamShare","type":"uint256"},{"internalType":"uint256","name":"newtreasuryShare","type":"uint256"}],"name":"changeTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSRGPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountSRGIn","type":"uint256"}],"name":"getTokenAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"getValueOfHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getsrgAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"indVol","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqConst","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMul","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tVol","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVolume","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"txTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawTaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405273cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200008a91906200059d565b60ff166002556060600655606060075560326009600a620000ac91906200075c565b6305f5e100620000bd9190620007ad565b620000c9919062000827565b6009556000600a55731e43881d582b5f9a7fddc38ed842fc653e3b054c600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507345b9ee4f4eaa7df7afadcecef77d3c80fe75154d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506032600d556032600e55600254600a6200019691906200085f565b620b964f620001a69190620007ad565b600f556009600a620001b991906200075c565b6305f5e100620001ca9190620007ad565b600f54620001d99190620007ad565b6010556000601355348015620001ee57600080fd5b506000620002016200055260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055506009600a620002b691906200075c565b6305f5e100620002c79190620007ad565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200052491906200075c565b6305f5e100620005359190620007ad565b604051620005449190620008c1565b60405180910390a3620008de565b600033905090565b600080fd5b600060ff82169050919050565b62000577816200055f565b81146200058357600080fd5b50565b60008151905062000597816200056c565b92915050565b600060208284031215620005b657620005b56200055a565b5b6000620005c68482850162000586565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200065d57808604811115620006355762000634620005cf565b5b6001851615620006455780820291505b80810290506200065585620005fe565b945062000615565b94509492505050565b6000826200067857600190506200074b565b816200068857600090506200074b565b8160018114620006a15760028114620006ac57620006e2565b60019150506200074b565b60ff841115620006c157620006c0620005cf565b5b8360020a915084821115620006db57620006da620005cf565b5b506200074b565b5060208310610133831016604e8410600b84101617156200071c5782820a905083811115620007165762000715620005cf565b5b6200074b565b6200072b84848460016200060b565b92509050818404811115620007455762000744620005cf565b5b81810290505b9392505050565b6000819050919050565b6000620007698262000752565b915062000776836200055f565b9250620007a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000666565b905092915050565b6000620007ba8262000752565b9150620007c78362000752565b9250828202620007d78162000752565b91508282048414831517620007f157620007f0620005cf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008348262000752565b9150620008418362000752565b925082620008545762000853620007f8565b5b828204905092915050565b60006200086c8262000752565b9150620008798362000752565b9250620008a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000666565b905092915050565b620008bb8162000752565b82525050565b6000602082019050620008d86000830184620008b0565b92915050565b61554780620008ee6000396000f3fe608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063aa98e16311610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b14610a4c578063f7a62fe914610a68578063fabe628314610a98578063fea2de4314610ab45761035d565b8063e8f620b1146109f4578063ea6ef2fe14610a12578063f2fde38b14610a305761035d565b8063d348b409116100de578063d348b4091461096a578063d937e60d14610988578063dd62ed3e146109a6578063e0cfcc95146109d65761035d565b8063aa98e163146108fe578063b1b652461461091c578063b37659a41461093a5761035d565b80639cbd09ac11610171578063a13cef3a1161014b578063a13cef3a1461084e578063a3a2e89e1461087e578063a8fb66b41461089a578063a9059cbb146108ce5761035d565b80639cbd09ac146107e25780639d75502614610812578063a0e571a2146108305761035d565b80638b42507f116101ad5780638b42507f146107585780638da5cb5b1461078857806390825c28146107a657806395d89b41146107c45761035d565b80637220cf39146107005780637796ff371461071e5780637db1342c1461073c5761035d565b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461066657806370a082311461069657806371073b38146106c6578063715018a6146106f65761035d565b8063599270441461060c5780635f81a57c1461062a57806362ff2e9a146106485761035d565b80634626402b116102875780634626402b1461057257806349ce234c1461059057806351c6590a146105c0578063571ac8b0146105dc5761035d565b80633410fe6e146105065780633eaaf86b146105245780633f4218e0146105425761035d565b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461047c57806325b15556146104ac5780632b112e49146104ca578063313ce567146104e85761035d565b80631f02a29c146104145780631f2c80f11461044457806321ecff5b146104605761035d565b806306fdde03146103625780630910a51014610380578063095ea7b31461039e57806318160ddd146103ce5780631a686502146103ec5780631d6bdb5b1461040a575b600080fd5b61036a610ae4565b6040516103779190613f7a565b60405180910390f35b610388610b21565b6040516103959190613fb5565b60405180910390f35b6103b860048036038101906103b3919061405f565b610b2b565b6040516103c591906140ba565b60405180910390f35b6103d6610cfa565b6040516103e39190613fb5565b60405180910390f35b6103f4610d1e565b6040516104019190613fb5565b60405180910390f35b610412610d24565b005b61042e600480360381019061042991906140d5565b610fd6565b60405161043b9190613fb5565b60405180910390f35b61045e60048036038101906104599190614102565b611088565b005b61047a60048036038101906104759190614142565b61124c565b005b61049660048036038101906104919190614182565b611397565b6040516104a391906140ba565b60405180910390f35b6104b46113bd565b6040516104c19190613fb5565b60405180910390f35b6104d26113c5565b6040516104df9190613fb5565b60405180910390f35b6104f0611435565b6040516104fd91906141f1565b60405180910390f35b61050e61143e565b60405161051b9190613fb5565b60405180910390f35b61052c611443565b6040516105399190613fb5565b60405180910390f35b61055c600480360381019061055791906140d5565b611463565b60405161056991906140ba565b60405180910390f35b61057a611483565b604051610587919061421b565b60405180910390f35b6105aa60048036038101906105a59190614236565b6114a9565b6040516105b79190613fb5565b60405180910390f35b6105da60048036038101906105d59190614236565b6114c1565b005b6105f660048036038101906105f191906140d5565b61185d565b60405161060391906140ba565b60405180910390f35b610614611890565b604051610621919061421b565b60405180910390f35b6106326118b6565b60405161063f9190613fb5565b60405180910390f35b6106506118bc565b60405161065d9190613fb5565b60405180910390f35b610680600480360381019061067b91906140d5565b6118c1565b60405161068d9190613fb5565b60405180910390f35b6106b060048036038101906106ab91906140d5565b6118d9565b6040516106bd9190613fb5565b60405180910390f35b6106e060048036038101906106db9190614236565b611922565b6040516106ed9190613fb5565b60405180910390f35b6106fe61196b565b005b610708611abe565b6040516107159190613fb5565b60405180910390f35b610726611ac4565b6040516107339190613fb5565b60405180910390f35b61075660048036038101906107519190614236565b611aca565b005b610772600480360381019061076d91906140d5565b611c0b565b60405161077f91906140ba565b60405180910390f35b610790611c2b565b60405161079d919061421b565b60405180910390f35b6107ae611c54565b6040516107bb9190613fb5565b60405180910390f35b6107cc611c87565b6040516107d99190613f7a565b60405180910390f35b6107fc60048036038101906107f791906140d5565b611cc4565b6040516108099190613fb5565b60405180910390f35b61081a611cdc565b6040516108279190613fb5565b60405180910390f35b610838611ce2565b6040516108459190613fb5565b60405180910390f35b61086860048036038101906108639190614236565b611ce8565b6040516108759190613fb5565b60405180910390f35b6108986004803603810190610893919061428f565b611dab565b005b6108b460048036038101906108af9190614236565b611e9b565b6040516108c59594939291906142cf565b60405180910390f35b6108e860048036038101906108e3919061405f565b611ed1565b6040516108f591906140ba565b60405180910390f35b610906611ee6565b6040516109139190613fb5565b60405180910390f35b610924611eec565b6040516109319190613fb5565b60405180910390f35b610954600480360381019061094f9190614322565b612003565b60405161096191906140ba565b60405180910390f35b6109726129ff565b60405161097f9190613fb5565b60405180910390f35b610990612aaa565b60405161099d9190613fb5565b60405180910390f35b6109c060048036038101906109bb9190614102565b612ab6565b6040516109cd9190613fb5565b60405180910390f35b6109de612b3d565b6040516109eb9190613fb5565b60405180910390f35b6109fc612b43565b604051610a099190613fb5565b60405180910390f35b610a1a612b49565b604051610a279190613fb5565b60405180910390f35b610a4a6004803603810190610a4591906140d5565b612b4f565b005b610a666004803603810190610a619190614142565b612d10565b005b610a826004803603810190610a7d9190614236565b612e05565b604051610a8f9190613fb5565b60405180910390f35b610ab26004803603810190610aad919061428f565b612e1d565b005b610ace6004803603810190610ac99190614322565b612f0d565b604051610adb91906140ba565b60405180910390f35b60606040518060400160405280600981526020017f5341464553555247450000000000000000000000000000000000000000000000815250905090565b6000600f54905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906143e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190614479565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ce89190613fb5565b60405180910390a36001905092915050565b60006009600a610d0a91906145fb565b6305f5e100610d199190614646565b905090565b600f5481565b600260015403610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d60906146d4565b60405180910390fd5b6002600181905550610d7961379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90614740565b60405180910390fd5b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600d54600a54610e6d9190614646565b610e77919061478f565b6040518363ffffffff1660e01b8152600401610e949291906147c0565b6020604051808303816000875af1158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed791906147fe565b9050600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600e54600a54610f409190614646565b610f4a919061478f565b6040518363ffffffff1660e01b8152600401610f679291906147c0565b6020604051808303816000875af1158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa91906147fe565b9050818015610fb65750805b610fc357610fc261482b565b5b6000600a81905550505060018081905550565b6000610fe0611eec565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f54600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106d9190614646565b611077919061478f565b6110819190614646565b9050919050565b61109061379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490614740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156111875750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd906148cc565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61125461379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890614740565b60405180910390fd5b605a82101580156112f35750605a8110155b8015611300575060648211155b801561130d575060648111155b61134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390614938565b60405180910390fd5b81600781905550806006819055507fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856828260405161138b929190614958565b60405180910390a15050565b6000803390506113a88582856137a7565b6113b38585856138a6565b9150509392505050565b6363c52bac81565b60006003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a61141791906145fb565b6305f5e1006114269190614646565b6114309190614981565b905090565b60006009905090565b606481565b6009600a61145191906145fb565b6305f5e1006114609190614646565b81565b60056020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090505481565b6114c961379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90614740565b60405180910390fd5b6000600f5482600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115a69190614646565b6115b0919061478f565b905080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b90614a01565b60405180910390fd5b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb30856040518363ffffffff1660e01b81526004016116859291906147c0565b6020604051808303816000875af11580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c891906147fe565b90508061170a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170190614a6d565b60405180910390fd5b6000600f54905083600f5461171f9190614a8d565b600f8190555082600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117749190614a8d565b9250508190555082600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ca9190614981565b9250508190555080600f546010546117e29190614646565b6117ec919061478f565b6010819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161184f9190613fb5565b60405180910390a350505050565b6000611889827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2b565b9050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b606481565b60036020528060005260406000206000915090505481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008082600f546119339190614981565b601054611940919061478f565b90506000600f54601054611954919061478f565b905080826119629190614981565b92505050919050565b61197361379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790614740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60145481565b600e5481565b611ad261379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5690614740565b60405180910390fd5b60646009600a611b6f91906145fb565b6305f5e100611b7e9190614646565b611b88919061478f565b811015611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190614b33565b60405180910390fd5b806009819055507fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf7581604051611c009190613fb5565b60405180910390a150565b60086020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611c5e611eec565b611c666129ff565b611c6e6113c5565b611c789190614646565b611c829190614646565b905090565b60606040518060400160405280600981526020017f5341464553555247450000000000000000000000000000000000000000000000815250905090565b60116020528060005260406000206000915090505481565b60065481565b60075481565b600080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601054611d38919061478f565b9050600083600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d879190614a8d565b601054611d94919061478f565b90508082611da29190614981565b92505050919050565b611db361379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3790614740565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60166020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000611ede3384846138a6565b905092915050565b600a5481565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f719190614b68565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190614b68565b611ffe9190614646565b905090565b600060026001540361204a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612041906146d4565b60405180910390fd5b600260018190555042831015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c90614be1565b60405180910390fd5b43601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210d90614c73565b60405180910390fd5b600033905084600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490614cdf565b60405180910390fd5b600085600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ea9190614a8d565b6010546121f7919061478f565b600f546122049190614981565b90506000606460065460646122199190614981565b836122249190614646565b61222e919061478f565b90506000818361223e9190614981565b905085831015612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a90614d4b565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661236d5773cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016123259291906147c0565b6020604051808303816000875af1158015612344573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236891906147fe565b612400565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b81526004016123bc9291906147c0565b6020604051808303816000875af11580156123db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ff91906147fe565b5b905080612442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243990614db7565b60405180910390fd5b88600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248d9190614981565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125345782600a5461252f9190614a8d565b612538565b600a545b600a8190555083600f5461254c9190614981565b600f8190555088600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259d9190614a8d565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600042905060006125ef611eec565b866125fa9190614646565b9050806013600082825461260e9190614a8d565b9250508190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126649190614a8d565b925050819055508060126000848152602001908152602001600020600082825461268e9190614a8d565b925050819055506001601460008282546126a89190614a8d565b92505081905550816015600060145481526020019081526020016000208190555060006126d3611eec565b6126db6129ff565b6126e59190614646565b9050826016600085815260200190815260200160002060000181905550600060166000858152602001908152602001600020600101540361277357601660006015600060016014546127379190614981565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b80601660008581526020019081526020016000206002018190555080601660008581526020019081526020016000206003015410806127c8575060006016600085815260200190815260200160002060030154145b156127e9578060166000858152602001908152602001600020600301819055505b8060166000858152602001908152602001600020600401541180612823575060006016600085815260200190815260200160002060040154145b15612844578060166000858152602001908152602001600020600401819055505b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8e6040516128a19190613fb5565b60405180910390a3600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612969573373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e8a8660405161295c93929190614dd7565b60405180910390a36129e5565b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e886129c2611eec565b8a6129cd9190614646565b6040516129dc93929190614dd7565b60405180910390a35b600198505050505050505050600180819055509392505050565b600080600f5411612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c90614e5a565b60405180910390fd5b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a7640000600f54612a9b9190614646565b612aa5919061478f565b905090565b670de0b6b3a764000081565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60105481565b600d5481565b612b5761379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdb90614740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90614eec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d1861379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9c90614740565b60405180910390fd5b60648183612db39190614a8d565b14612df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dea90614f58565b60405180910390fd5b81600d8190555080600e819055505050565b60156020528060005260406000206000915090505481565b612e2561379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea990614740565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260015403612f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4b906146d4565b60405180910390fd5b600260018190555042821015612f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9690614be1565b60405180910390fd5b43601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f5411613028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301f90614fc4565b60405180910390fd5b6363c52bac42101561306f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306690615030565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130e1576064600754866130d29190614646565b6130dc919061478f565b6130e3565b845b90506000600f54826130f59190614a8d565b601054613102919061478f565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314c9190614981565b905060095481600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c9190614a8d565b1115806131f25750600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132289061509c565b60405180910390fd5b60018111613274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326b9061512e565b60405180910390fd5b848110156132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ae90614d4b565b60405180910390fd5b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308a6040518463ffffffff1660e01b815260040161330a9392919061514e565b6020604051808303816000875af1158015613329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334d91906147fe565b90508061338f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613386906151d1565b60405180910390fd5b6133993383613c01565b600083886133a79190614981565b905080600a546133b79190614a8d565b600a8190555083600f546133cb9190614a8d565b600f81905550600042905060006133e0611eec565b8a6133eb9190614646565b905080601360008282546133ff9190614a8d565b9250508190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134559190614a8d565b925050819055508060126000848152602001908152602001600020600082825461347f9190614a8d565b925050819055506001601460008282546134999190614a8d565b92505081905550816015600060145481526020019081526020016000208190555060006134c4611eec565b6134cc6129ff565b6134d69190614646565b905082601660008581526020019081526020016000206000018190555060006016600085815260200190815260200160002060010154036135d55760016014540361358157613523611eec565b6009600a61353191906145fb565b6305f5e1006135409190614646565b88600f5461354e9190614981565b613558919061478f565b6135629190614646565b60166000858152602001908152602001600020600101819055506135d4565b601660006015600060016014546135989190614981565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b5b806016600085815260200190815260200160002060020181905550806016600085815260200190815260200160002060030154108061362a575060006016600085815260200190815260200160002060030154145b1561364b578060166000858152602001908152602001600020600301819055505b8060166000858152602001908152602001600020600401541180613685575060006016600085815260200190815260200160002060040154145b156136a6578060166000858152602001908152602001600020600401819055505b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516137039190613fb5565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888e613764611eec565b8c61376f9190614646565b60405161377e93929190614dd7565b60405180910390a36001975050505050505050600180819055509392505050565b600033905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146138a05781811015613892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138899061523d565b60405180910390fd5b61389f8484848403613d21565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561391057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61394f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613946906152cf565b60405180910390fd5b60008211613992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161398990615361565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a36575060095482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a339190614a8d565b11155b613a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6c906153cd565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ac09190614981565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b4e9190614a8d565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bee9190613fb5565b60405180910390a3600190509392505050565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4c9190614a8d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cda9190614981565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d879061545f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613df6906154f1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613edd9190613fb5565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f24578082015181840152602081019050613f09565b60008484015250505050565b6000601f19601f8301169050919050565b6000613f4c82613eea565b613f568185613ef5565b9350613f66818560208601613f06565b613f6f81613f30565b840191505092915050565b60006020820190508181036000830152613f948184613f41565b905092915050565b6000819050919050565b613faf81613f9c565b82525050565b6000602082019050613fca6000830184613fa6565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061400082613fd5565b9050919050565b61401081613ff5565b811461401b57600080fd5b50565b60008135905061402d81614007565b92915050565b61403c81613f9c565b811461404757600080fd5b50565b60008135905061405981614033565b92915050565b6000806040838503121561407657614075613fd0565b5b60006140848582860161401e565b92505060206140958582860161404a565b9150509250929050565b60008115159050919050565b6140b48161409f565b82525050565b60006020820190506140cf60008301846140ab565b92915050565b6000602082840312156140eb576140ea613fd0565b5b60006140f98482850161401e565b91505092915050565b6000806040838503121561411957614118613fd0565b5b60006141278582860161401e565b92505060206141388582860161401e565b9150509250929050565b6000806040838503121561415957614158613fd0565b5b60006141678582860161404a565b92505060206141788582860161404a565b9150509250929050565b60008060006060848603121561419b5761419a613fd0565b5b60006141a98682870161401e565b93505060206141ba8682870161401e565b92505060406141cb8682870161404a565b9150509250925092565b600060ff82169050919050565b6141eb816141d5565b82525050565b600060208201905061420660008301846141e2565b92915050565b61421581613ff5565b82525050565b6000602082019050614230600083018461420c565b92915050565b60006020828403121561424c5761424b613fd0565b5b600061425a8482850161404a565b91505092915050565b61426c8161409f565b811461427757600080fd5b50565b60008135905061428981614263565b92915050565b600080604083850312156142a6576142a5613fd0565b5b60006142b48582860161401e565b92505060206142c58582860161427a565b9150509250929050565b600060a0820190506142e46000830188613fa6565b6142f16020830187613fa6565b6142fe6040830186613fa6565b61430b6060830185613fa6565b6143186080830184613fa6565b9695505050505050565b60008060006060848603121561433b5761433a613fd0565b5b60006143498682870161404a565b935050602061435a8682870161404a565b925050604061436b8682870161404a565b9150509250925092565b7f53524732303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006143d1602283613ef5565b91506143dc82614375565b604082019050919050565b60006020820190508181036000830152614400816143c4565b9050919050565b7f53524732303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614463602483613ef5565b915061446e82614407565b604082019050919050565b6000602082019050818103600083015261449281614456565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561451f578086048111156144fb576144fa614499565b5b600185161561450a5780820291505b8081029050614518856144c8565b94506144df565b94509492505050565b60008261453857600190506145f4565b8161454657600090506145f4565b816001811461455c576002811461456657614595565b60019150506145f4565b60ff84111561457857614577614499565b5b8360020a91508482111561458f5761458e614499565b5b506145f4565b5060208310610133831016604e8410600b84101617156145ca5782820a9050838111156145c5576145c4614499565b5b6145f4565b6145d784848460016144d5565b925090508184048111156145ee576145ed614499565b5b81810290505b9392505050565b600061460682613f9c565b9150614611836141d5565b925061463e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614528565b905092915050565b600061465182613f9c565b915061465c83613f9c565b925082820261466a81613f9c565b9150828204841483151761468157614680614499565b5b5092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006146be601f83613ef5565b91506146c982614688565b602082019050919050565b600060208201905081810360008301526146ed816146b1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061472a602083613ef5565b9150614735826146f4565b602082019050919050565b600060208201905081810360008301526147598161471d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061479a82613f9c565b91506147a583613f9c565b9250826147b5576147b4614760565b5b828204905092915050565b60006040820190506147d5600083018561420c565b6147e26020830184613fa6565b9392505050565b6000815190506147f881614263565b92915050565b60006020828403121561481457614813613fd0565b5b6000614822848285016147e9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006148b6602883613ef5565b91506148c18261485a565b604082019050919050565b600060208201905081810360008301526148e5816148a9565b9050919050565b7f466565732061726520746f6f2068696768000000000000000000000000000000600082015250565b6000614922601183613ef5565b915061492d826148ec565b602082019050919050565b6000602082019050818103600083015261495181614915565b9050919050565b600060408201905061496d6000830185613fa6565b61497a6020830184613fa6565b9392505050565b600061498c82613f9c565b915061499783613f9c565b92508282039050818111156149af576149ae614499565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b60006149eb601283613ef5565b91506149f6826149b5565b602082019050919050565b60006020820190508181036000830152614a1a816149de565b9050919050565b7f535247207472616e736665722077617320756e73756363657366756c21000000600082015250565b6000614a57601d83613ef5565b9150614a6282614a21565b602082019050919050565b60006020820190508181036000830152614a8681614a4a565b9050919050565b6000614a9882613f9c565b9150614aa383613f9c565b9250828201905080821115614abb57614aba614499565b5b92915050565b7f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c6560008201527f617374203125206f6620746f74616c20737570706c7900000000000000000000602082015250565b6000614b1d603683613ef5565b9150614b2882614ac1565b604082019050919050565b60006020820190508181036000830152614b4c81614b10565b9050919050565b600081519050614b6281614033565b92915050565b600060208284031215614b7e57614b7d613fd0565b5b6000614b8c84828501614b53565b91505092915050565b7f446561646c696e65204558504952454400000000000000000000000000000000600082015250565b6000614bcb601083613ef5565b9150614bd682614b95565b602082019050919050565b60006020820190508181036000830152614bfa81614bbe565b9050919050565b7f427579696e6720616e642073656c6c696e6720696e207468652073616d65206260008201527f6c6f636b206973206e6f7420616c6c6f77656421000000000000000000000000602082015250565b6000614c5d603483613ef5565b9150614c6882614c01565b604082019050919050565b60006020820190508181036000830152614c8c81614c50565b9050919050565b7f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e740000600082015250565b6000614cc9601e83613ef5565b9150614cd482614c93565b602082019050919050565b60006020820190508181036000830152614cf881614cbc565b9050919050565b7f494e53554646494349454e54204f555450555420414d4f554e54000000000000600082015250565b6000614d35601a83613ef5565b9150614d4082614cff565b602082019050919050565b60006020820190508181036000830152614d6481614d28565b9050919050565b7f535247207472616e73666572206661696c656400000000000000000000000000600082015250565b6000614da1601383613ef5565b9150614dac82614d6b565b602082019050919050565b60006020820190508181036000830152614dd081614d94565b9050919050565b6000606082019050614dec6000830186613fa6565b614df96020830185613fa6565b614e066040830184613fa6565b949350505050565b7f4e6f204c69717569646974790000000000000000000000000000000000000000600082015250565b6000614e44600c83613ef5565b9150614e4f82614e0e565b602082019050919050565b60006020820190508181036000830152614e7381614e37565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ed6602683613ef5565b9150614ee182614e7a565b604082019050919050565b60006020820190508181036000830152614f0581614ec9565b9050919050565b7f53756d206f6620736861726573206d7573742062652031303000000000000000600082015250565b6000614f42601983613ef5565b9150614f4d82614f0c565b602082019050919050565b60006020820190508181036000830152614f7181614f35565b9050919050565b7f54686520746f6b656e20686173206e6f206c6971756964697479000000000000600082015250565b6000614fae601a83613ef5565b9150614fb982614f78565b602082019050919050565b60006020820190508181036000830152614fdd81614fa1565b9050919050565b7f54726164696e67206973206e6f74204f70656e00000000000000000000000000600082015250565b600061501a601383613ef5565b915061502582614fe4565b602082019050919050565b600060208201905081810360008301526150498161500d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615086601383613ef5565b915061509182615050565b602082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b7f53524732303a204d75737420427579206d6f7265207468616e2031206465636960008201527f6d616c0000000000000000000000000000000000000000000000000000000000602082015250565b6000615118602383613ef5565b9150615123826150bc565b604082019050919050565b600060208201905081810360008301526151478161510b565b9050919050565b6000606082019050615163600083018661420c565b615170602083018561420c565b61517d6040830184613fa6565b949350505050565b7f7472616e73666572206f6620535247206661696c656421000000000000000000600082015250565b60006151bb601783613ef5565b91506151c682615185565b602082019050919050565b600060208201905081810360008301526151ea816151ae565b9050919050565b7f53524732303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000615227601d83613ef5565b9150615232826151f1565b602082019050919050565b600060208201905081810360008301526152568161521a565b9050919050565b7f7472616e7366657220746f20746865207a65726f2061646472657373206f722060008201527f4341000000000000000000000000000000000000000000000000000000000000602082015250565b60006152b9602283613ef5565b91506152c48261525d565b604082019050919050565b600060208201905081810360008301526152e8816152ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061534b602983613ef5565b9150615356826152ef565b604082019050919050565b6000602082019050818103600083015261537a8161533e565b9050919050565b7f4d61782077616c6c657420657863656564656421000000000000000000000000600082015250565b60006153b7601483613ef5565b91506153c282615381565b602082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615449602483613ef5565b9150615454826153ed565b604082019050919050565b600060208201905081810360008301526154788161543c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154db602283613ef5565b91506154e68261547f565b604082019050919050565b6000602082019050818103600083015261550a816154ce565b905091905056fea26469706673582212202386b1aac7cbae0cc7db4a0c16c3731991e1c5e9d6551dffdc78e223753a1dd864736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063aa98e16311610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b14610a4c578063f7a62fe914610a68578063fabe628314610a98578063fea2de4314610ab45761035d565b8063e8f620b1146109f4578063ea6ef2fe14610a12578063f2fde38b14610a305761035d565b8063d348b409116100de578063d348b4091461096a578063d937e60d14610988578063dd62ed3e146109a6578063e0cfcc95146109d65761035d565b8063aa98e163146108fe578063b1b652461461091c578063b37659a41461093a5761035d565b80639cbd09ac11610171578063a13cef3a1161014b578063a13cef3a1461084e578063a3a2e89e1461087e578063a8fb66b41461089a578063a9059cbb146108ce5761035d565b80639cbd09ac146107e25780639d75502614610812578063a0e571a2146108305761035d565b80638b42507f116101ad5780638b42507f146107585780638da5cb5b1461078857806390825c28146107a657806395d89b41146107c45761035d565b80637220cf39146107005780637796ff371461071e5780637db1342c1461073c5761035d565b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461066657806370a082311461069657806371073b38146106c6578063715018a6146106f65761035d565b8063599270441461060c5780635f81a57c1461062a57806362ff2e9a146106485761035d565b80634626402b116102875780634626402b1461057257806349ce234c1461059057806351c6590a146105c0578063571ac8b0146105dc5761035d565b80633410fe6e146105065780633eaaf86b146105245780633f4218e0146105425761035d565b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461047c57806325b15556146104ac5780632b112e49146104ca578063313ce567146104e85761035d565b80631f02a29c146104145780631f2c80f11461044457806321ecff5b146104605761035d565b806306fdde03146103625780630910a51014610380578063095ea7b31461039e57806318160ddd146103ce5780631a686502146103ec5780631d6bdb5b1461040a575b600080fd5b61036a610ae4565b6040516103779190613f7a565b60405180910390f35b610388610b21565b6040516103959190613fb5565b60405180910390f35b6103b860048036038101906103b3919061405f565b610b2b565b6040516103c591906140ba565b60405180910390f35b6103d6610cfa565b6040516103e39190613fb5565b60405180910390f35b6103f4610d1e565b6040516104019190613fb5565b60405180910390f35b610412610d24565b005b61042e600480360381019061042991906140d5565b610fd6565b60405161043b9190613fb5565b60405180910390f35b61045e60048036038101906104599190614102565b611088565b005b61047a60048036038101906104759190614142565b61124c565b005b61049660048036038101906104919190614182565b611397565b6040516104a391906140ba565b60405180910390f35b6104b46113bd565b6040516104c19190613fb5565b60405180910390f35b6104d26113c5565b6040516104df9190613fb5565b60405180910390f35b6104f0611435565b6040516104fd91906141f1565b60405180910390f35b61050e61143e565b60405161051b9190613fb5565b60405180910390f35b61052c611443565b6040516105399190613fb5565b60405180910390f35b61055c600480360381019061055791906140d5565b611463565b60405161056991906140ba565b60405180910390f35b61057a611483565b604051610587919061421b565b60405180910390f35b6105aa60048036038101906105a59190614236565b6114a9565b6040516105b79190613fb5565b60405180910390f35b6105da60048036038101906105d59190614236565b6114c1565b005b6105f660048036038101906105f191906140d5565b61185d565b60405161060391906140ba565b60405180910390f35b610614611890565b604051610621919061421b565b60405180910390f35b6106326118b6565b60405161063f9190613fb5565b60405180910390f35b6106506118bc565b60405161065d9190613fb5565b60405180910390f35b610680600480360381019061067b91906140d5565b6118c1565b60405161068d9190613fb5565b60405180910390f35b6106b060048036038101906106ab91906140d5565b6118d9565b6040516106bd9190613fb5565b60405180910390f35b6106e060048036038101906106db9190614236565b611922565b6040516106ed9190613fb5565b60405180910390f35b6106fe61196b565b005b610708611abe565b6040516107159190613fb5565b60405180910390f35b610726611ac4565b6040516107339190613fb5565b60405180910390f35b61075660048036038101906107519190614236565b611aca565b005b610772600480360381019061076d91906140d5565b611c0b565b60405161077f91906140ba565b60405180910390f35b610790611c2b565b60405161079d919061421b565b60405180910390f35b6107ae611c54565b6040516107bb9190613fb5565b60405180910390f35b6107cc611c87565b6040516107d99190613f7a565b60405180910390f35b6107fc60048036038101906107f791906140d5565b611cc4565b6040516108099190613fb5565b60405180910390f35b61081a611cdc565b6040516108279190613fb5565b60405180910390f35b610838611ce2565b6040516108459190613fb5565b60405180910390f35b61086860048036038101906108639190614236565b611ce8565b6040516108759190613fb5565b60405180910390f35b6108986004803603810190610893919061428f565b611dab565b005b6108b460048036038101906108af9190614236565b611e9b565b6040516108c59594939291906142cf565b60405180910390f35b6108e860048036038101906108e3919061405f565b611ed1565b6040516108f591906140ba565b60405180910390f35b610906611ee6565b6040516109139190613fb5565b60405180910390f35b610924611eec565b6040516109319190613fb5565b60405180910390f35b610954600480360381019061094f9190614322565b612003565b60405161096191906140ba565b60405180910390f35b6109726129ff565b60405161097f9190613fb5565b60405180910390f35b610990612aaa565b60405161099d9190613fb5565b60405180910390f35b6109c060048036038101906109bb9190614102565b612ab6565b6040516109cd9190613fb5565b60405180910390f35b6109de612b3d565b6040516109eb9190613fb5565b60405180910390f35b6109fc612b43565b604051610a099190613fb5565b60405180910390f35b610a1a612b49565b604051610a279190613fb5565b60405180910390f35b610a4a6004803603810190610a4591906140d5565b612b4f565b005b610a666004803603810190610a619190614142565b612d10565b005b610a826004803603810190610a7d9190614236565b612e05565b604051610a8f9190613fb5565b60405180910390f35b610ab26004803603810190610aad919061428f565b612e1d565b005b610ace6004803603810190610ac99190614322565b612f0d565b604051610adb91906140ba565b60405180910390f35b60606040518060400160405280600981526020017f5341464553555247450000000000000000000000000000000000000000000000815250905090565b6000600f54905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906143e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190614479565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ce89190613fb5565b60405180910390a36001905092915050565b60006009600a610d0a91906145fb565b6305f5e100610d199190614646565b905090565b600f5481565b600260015403610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d60906146d4565b60405180910390fd5b6002600181905550610d7961379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90614740565b60405180910390fd5b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600d54600a54610e6d9190614646565b610e77919061478f565b6040518363ffffffff1660e01b8152600401610e949291906147c0565b6020604051808303816000875af1158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed791906147fe565b9050600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600e54600a54610f409190614646565b610f4a919061478f565b6040518363ffffffff1660e01b8152600401610f679291906147c0565b6020604051808303816000875af1158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa91906147fe565b9050818015610fb65750805b610fc357610fc261482b565b5b6000600a81905550505060018081905550565b6000610fe0611eec565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f54600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106d9190614646565b611077919061478f565b6110819190614646565b9050919050565b61109061379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490614740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156111875750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd906148cc565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61125461379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890614740565b60405180910390fd5b605a82101580156112f35750605a8110155b8015611300575060648211155b801561130d575060648111155b61134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390614938565b60405180910390fd5b81600781905550806006819055507fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856828260405161138b929190614958565b60405180910390a15050565b6000803390506113a88582856137a7565b6113b38585856138a6565b9150509392505050565b6363c52bac81565b60006003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a61141791906145fb565b6305f5e1006114269190614646565b6114309190614981565b905090565b60006009905090565b606481565b6009600a61145191906145fb565b6305f5e1006114609190614646565b81565b60056020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090505481565b6114c961379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90614740565b60405180910390fd5b6000600f5482600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115a69190614646565b6115b0919061478f565b905080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b90614a01565b60405180910390fd5b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb30856040518363ffffffff1660e01b81526004016116859291906147c0565b6020604051808303816000875af11580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c891906147fe565b90508061170a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170190614a6d565b60405180910390fd5b6000600f54905083600f5461171f9190614a8d565b600f8190555082600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117749190614a8d565b9250508190555082600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ca9190614981565b9250508190555080600f546010546117e29190614646565b6117ec919061478f565b6010819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161184f9190613fb5565b60405180910390a350505050565b6000611889827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2b565b9050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b606481565b60036020528060005260406000206000915090505481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008082600f546119339190614981565b601054611940919061478f565b90506000600f54601054611954919061478f565b905080826119629190614981565b92505050919050565b61197361379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790614740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60145481565b600e5481565b611ad261379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5690614740565b60405180910390fd5b60646009600a611b6f91906145fb565b6305f5e100611b7e9190614646565b611b88919061478f565b811015611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190614b33565b60405180910390fd5b806009819055507fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf7581604051611c009190613fb5565b60405180910390a150565b60086020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611c5e611eec565b611c666129ff565b611c6e6113c5565b611c789190614646565b611c829190614646565b905090565b60606040518060400160405280600981526020017f5341464553555247450000000000000000000000000000000000000000000000815250905090565b60116020528060005260406000206000915090505481565b60065481565b60075481565b600080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601054611d38919061478f565b9050600083600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d879190614a8d565b601054611d94919061478f565b90508082611da29190614981565b92505050919050565b611db361379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3790614740565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60166020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000611ede3384846138a6565b905092915050565b600a5481565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f719190614b68565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190614b68565b611ffe9190614646565b905090565b600060026001540361204a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612041906146d4565b60405180910390fd5b600260018190555042831015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c90614be1565b60405180910390fd5b43601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210d90614c73565b60405180910390fd5b600033905084600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490614cdf565b60405180910390fd5b600085600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ea9190614a8d565b6010546121f7919061478f565b600f546122049190614981565b90506000606460065460646122199190614981565b836122249190614646565b61222e919061478f565b90506000818361223e9190614981565b905085831015612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a90614d4b565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661236d5773cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016123259291906147c0565b6020604051808303816000875af1158015612344573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236891906147fe565b612400565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b81526004016123bc9291906147c0565b6020604051808303816000875af11580156123db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ff91906147fe565b5b905080612442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243990614db7565b60405180910390fd5b88600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248d9190614981565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125345782600a5461252f9190614a8d565b612538565b600a545b600a8190555083600f5461254c9190614981565b600f8190555088600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259d9190614a8d565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600042905060006125ef611eec565b866125fa9190614646565b9050806013600082825461260e9190614a8d565b9250508190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126649190614a8d565b925050819055508060126000848152602001908152602001600020600082825461268e9190614a8d565b925050819055506001601460008282546126a89190614a8d565b92505081905550816015600060145481526020019081526020016000208190555060006126d3611eec565b6126db6129ff565b6126e59190614646565b9050826016600085815260200190815260200160002060000181905550600060166000858152602001908152602001600020600101540361277357601660006015600060016014546127379190614981565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b80601660008581526020019081526020016000206002018190555080601660008581526020019081526020016000206003015410806127c8575060006016600085815260200190815260200160002060030154145b156127e9578060166000858152602001908152602001600020600301819055505b8060166000858152602001908152602001600020600401541180612823575060006016600085815260200190815260200160002060040154145b15612844578060166000858152602001908152602001600020600401819055505b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8e6040516128a19190613fb5565b60405180910390a3600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612969573373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e8a8660405161295c93929190614dd7565b60405180910390a36129e5565b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e886129c2611eec565b8a6129cd9190614646565b6040516129dc93929190614dd7565b60405180910390a35b600198505050505050505050600180819055509392505050565b600080600f5411612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c90614e5a565b60405180910390fd5b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a7640000600f54612a9b9190614646565b612aa5919061478f565b905090565b670de0b6b3a764000081565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60105481565b600d5481565b612b5761379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdb90614740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90614eec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d1861379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9c90614740565b60405180910390fd5b60648183612db39190614a8d565b14612df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dea90614f58565b60405180910390fd5b81600d8190555080600e819055505050565b60156020528060005260406000206000915090505481565b612e2561379f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea990614740565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260015403612f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4b906146d4565b60405180910390fd5b600260018190555042821015612f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9690614be1565b60405180910390fd5b43601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f5411613028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301f90614fc4565b60405180910390fd5b6363c52bac42101561306f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306690615030565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130e1576064600754866130d29190614646565b6130dc919061478f565b6130e3565b845b90506000600f54826130f59190614a8d565b601054613102919061478f565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314c9190614981565b905060095481600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c9190614a8d565b1115806131f25750600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132289061509c565b60405180910390fd5b60018111613274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326b9061512e565b60405180910390fd5b848110156132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ae90614d4b565b60405180910390fd5b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308a6040518463ffffffff1660e01b815260040161330a9392919061514e565b6020604051808303816000875af1158015613329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334d91906147fe565b90508061338f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613386906151d1565b60405180910390fd5b6133993383613c01565b600083886133a79190614981565b905080600a546133b79190614a8d565b600a8190555083600f546133cb9190614a8d565b600f81905550600042905060006133e0611eec565b8a6133eb9190614646565b905080601360008282546133ff9190614a8d565b9250508190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134559190614a8d565b925050819055508060126000848152602001908152602001600020600082825461347f9190614a8d565b925050819055506001601460008282546134999190614a8d565b92505081905550816015600060145481526020019081526020016000208190555060006134c4611eec565b6134cc6129ff565b6134d69190614646565b905082601660008581526020019081526020016000206000018190555060006016600085815260200190815260200160002060010154036135d55760016014540361358157613523611eec565b6009600a61353191906145fb565b6305f5e1006135409190614646565b88600f5461354e9190614981565b613558919061478f565b6135629190614646565b60166000858152602001908152602001600020600101819055506135d4565b601660006015600060016014546135989190614981565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b5b806016600085815260200190815260200160002060020181905550806016600085815260200190815260200160002060030154108061362a575060006016600085815260200190815260200160002060030154145b1561364b578060166000858152602001908152602001600020600301819055505b8060166000858152602001908152602001600020600401541180613685575060006016600085815260200190815260200160002060040154145b156136a6578060166000858152602001908152602001600020600401819055505b3373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516137039190613fb5565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888e613764611eec565b8c61376f9190614646565b60405161377e93929190614dd7565b60405180910390a36001975050505050505050600180819055509392505050565b600033905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146138a05781811015613892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138899061523d565b60405180910390fd5b61389f8484848403613d21565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561391057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61394f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613946906152cf565b60405180910390fd5b60008211613992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161398990615361565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a36575060095482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a339190614a8d565b11155b613a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6c906153cd565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ac09190614981565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b4e9190614a8d565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bee9190613fb5565b60405180910390a3600190509392505050565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4c9190614a8d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cda9190614981565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d879061545f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613df6906154f1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613edd9190613fb5565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f24578082015181840152602081019050613f09565b60008484015250505050565b6000601f19601f8301169050919050565b6000613f4c82613eea565b613f568185613ef5565b9350613f66818560208601613f06565b613f6f81613f30565b840191505092915050565b60006020820190508181036000830152613f948184613f41565b905092915050565b6000819050919050565b613faf81613f9c565b82525050565b6000602082019050613fca6000830184613fa6565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061400082613fd5565b9050919050565b61401081613ff5565b811461401b57600080fd5b50565b60008135905061402d81614007565b92915050565b61403c81613f9c565b811461404757600080fd5b50565b60008135905061405981614033565b92915050565b6000806040838503121561407657614075613fd0565b5b60006140848582860161401e565b92505060206140958582860161404a565b9150509250929050565b60008115159050919050565b6140b48161409f565b82525050565b60006020820190506140cf60008301846140ab565b92915050565b6000602082840312156140eb576140ea613fd0565b5b60006140f98482850161401e565b91505092915050565b6000806040838503121561411957614118613fd0565b5b60006141278582860161401e565b92505060206141388582860161401e565b9150509250929050565b6000806040838503121561415957614158613fd0565b5b60006141678582860161404a565b92505060206141788582860161404a565b9150509250929050565b60008060006060848603121561419b5761419a613fd0565b5b60006141a98682870161401e565b93505060206141ba8682870161401e565b92505060406141cb8682870161404a565b9150509250925092565b600060ff82169050919050565b6141eb816141d5565b82525050565b600060208201905061420660008301846141e2565b92915050565b61421581613ff5565b82525050565b6000602082019050614230600083018461420c565b92915050565b60006020828403121561424c5761424b613fd0565b5b600061425a8482850161404a565b91505092915050565b61426c8161409f565b811461427757600080fd5b50565b60008135905061428981614263565b92915050565b600080604083850312156142a6576142a5613fd0565b5b60006142b48582860161401e565b92505060206142c58582860161427a565b9150509250929050565b600060a0820190506142e46000830188613fa6565b6142f16020830187613fa6565b6142fe6040830186613fa6565b61430b6060830185613fa6565b6143186080830184613fa6565b9695505050505050565b60008060006060848603121561433b5761433a613fd0565b5b60006143498682870161404a565b935050602061435a8682870161404a565b925050604061436b8682870161404a565b9150509250925092565b7f53524732303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006143d1602283613ef5565b91506143dc82614375565b604082019050919050565b60006020820190508181036000830152614400816143c4565b9050919050565b7f53524732303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614463602483613ef5565b915061446e82614407565b604082019050919050565b6000602082019050818103600083015261449281614456565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561451f578086048111156144fb576144fa614499565b5b600185161561450a5780820291505b8081029050614518856144c8565b94506144df565b94509492505050565b60008261453857600190506145f4565b8161454657600090506145f4565b816001811461455c576002811461456657614595565b60019150506145f4565b60ff84111561457857614577614499565b5b8360020a91508482111561458f5761458e614499565b5b506145f4565b5060208310610133831016604e8410600b84101617156145ca5782820a9050838111156145c5576145c4614499565b5b6145f4565b6145d784848460016144d5565b925090508184048111156145ee576145ed614499565b5b81810290505b9392505050565b600061460682613f9c565b9150614611836141d5565b925061463e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614528565b905092915050565b600061465182613f9c565b915061465c83613f9c565b925082820261466a81613f9c565b9150828204841483151761468157614680614499565b5b5092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006146be601f83613ef5565b91506146c982614688565b602082019050919050565b600060208201905081810360008301526146ed816146b1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061472a602083613ef5565b9150614735826146f4565b602082019050919050565b600060208201905081810360008301526147598161471d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061479a82613f9c565b91506147a583613f9c565b9250826147b5576147b4614760565b5b828204905092915050565b60006040820190506147d5600083018561420c565b6147e26020830184613fa6565b9392505050565b6000815190506147f881614263565b92915050565b60006020828403121561481457614813613fd0565b5b6000614822848285016147e9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006148b6602883613ef5565b91506148c18261485a565b604082019050919050565b600060208201905081810360008301526148e5816148a9565b9050919050565b7f466565732061726520746f6f2068696768000000000000000000000000000000600082015250565b6000614922601183613ef5565b915061492d826148ec565b602082019050919050565b6000602082019050818103600083015261495181614915565b9050919050565b600060408201905061496d6000830185613fa6565b61497a6020830184613fa6565b9392505050565b600061498c82613f9c565b915061499783613f9c565b92508282039050818111156149af576149ae614499565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b60006149eb601283613ef5565b91506149f6826149b5565b602082019050919050565b60006020820190508181036000830152614a1a816149de565b9050919050565b7f535247207472616e736665722077617320756e73756363657366756c21000000600082015250565b6000614a57601d83613ef5565b9150614a6282614a21565b602082019050919050565b60006020820190508181036000830152614a8681614a4a565b9050919050565b6000614a9882613f9c565b9150614aa383613f9c565b9250828201905080821115614abb57614aba614499565b5b92915050565b7f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c6560008201527f617374203125206f6620746f74616c20737570706c7900000000000000000000602082015250565b6000614b1d603683613ef5565b9150614b2882614ac1565b604082019050919050565b60006020820190508181036000830152614b4c81614b10565b9050919050565b600081519050614b6281614033565b92915050565b600060208284031215614b7e57614b7d613fd0565b5b6000614b8c84828501614b53565b91505092915050565b7f446561646c696e65204558504952454400000000000000000000000000000000600082015250565b6000614bcb601083613ef5565b9150614bd682614b95565b602082019050919050565b60006020820190508181036000830152614bfa81614bbe565b9050919050565b7f427579696e6720616e642073656c6c696e6720696e207468652073616d65206260008201527f6c6f636b206973206e6f7420616c6c6f77656421000000000000000000000000602082015250565b6000614c5d603483613ef5565b9150614c6882614c01565b604082019050919050565b60006020820190508181036000830152614c8c81614c50565b9050919050565b7f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e740000600082015250565b6000614cc9601e83613ef5565b9150614cd482614c93565b602082019050919050565b60006020820190508181036000830152614cf881614cbc565b9050919050565b7f494e53554646494349454e54204f555450555420414d4f554e54000000000000600082015250565b6000614d35601a83613ef5565b9150614d4082614cff565b602082019050919050565b60006020820190508181036000830152614d6481614d28565b9050919050565b7f535247207472616e73666572206661696c656400000000000000000000000000600082015250565b6000614da1601383613ef5565b9150614dac82614d6b565b602082019050919050565b60006020820190508181036000830152614dd081614d94565b9050919050565b6000606082019050614dec6000830186613fa6565b614df96020830185613fa6565b614e066040830184613fa6565b949350505050565b7f4e6f204c69717569646974790000000000000000000000000000000000000000600082015250565b6000614e44600c83613ef5565b9150614e4f82614e0e565b602082019050919050565b60006020820190508181036000830152614e7381614e37565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ed6602683613ef5565b9150614ee182614e7a565b604082019050919050565b60006020820190508181036000830152614f0581614ec9565b9050919050565b7f53756d206f6620736861726573206d7573742062652031303000000000000000600082015250565b6000614f42601983613ef5565b9150614f4d82614f0c565b602082019050919050565b60006020820190508181036000830152614f7181614f35565b9050919050565b7f54686520746f6b656e20686173206e6f206c6971756964697479000000000000600082015250565b6000614fae601a83613ef5565b9150614fb982614f78565b602082019050919050565b60006020820190508181036000830152614fdd81614fa1565b9050919050565b7f54726164696e67206973206e6f74204f70656e00000000000000000000000000600082015250565b600061501a601383613ef5565b915061502582614fe4565b602082019050919050565b600060208201905081810360008301526150498161500d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615086601383613ef5565b915061509182615050565b602082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b7f53524732303a204d75737420427579206d6f7265207468616e2031206465636960008201527f6d616c0000000000000000000000000000000000000000000000000000000000602082015250565b6000615118602383613ef5565b9150615123826150bc565b604082019050919050565b600060208201905081810360008301526151478161510b565b9050919050565b6000606082019050615163600083018661420c565b615170602083018561420c565b61517d6040830184613fa6565b949350505050565b7f7472616e73666572206f6620535247206661696c656421000000000000000000600082015250565b60006151bb601783613ef5565b91506151c682615185565b602082019050919050565b600060208201905081810360008301526151ea816151ae565b9050919050565b7f53524732303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000615227601d83613ef5565b9150615232826151f1565b602082019050919050565b600060208201905081810360008301526152568161521a565b9050919050565b7f7472616e7366657220746f20746865207a65726f2061646472657373206f722060008201527f4341000000000000000000000000000000000000000000000000000000000000602082015250565b60006152b9602283613ef5565b91506152c48261525d565b604082019050919050565b600060208201905081810360008301526152e8816152ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061534b602983613ef5565b9150615356826152ef565b604082019050919050565b6000602082019050818103600083015261537a8161533e565b9050919050565b7f4d61782077616c6c657420657863656564656421000000000000000000000000600082015250565b60006153b7601483613ef5565b91506153c282615381565b602082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615449602483613ef5565b9150615454826153ed565b604082019050919050565b600060208201905081810360008301526154788161543c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154db602283613ef5565b91506154e68261547f565b604082019050919050565b6000602082019050818103600083015261550a816154ce565b905091905056fea26469706673582212202386b1aac7cbae0cc7db4a0c16c3731991e1c5e9d6551dffdc78e223753a1dd864736f6c63430008110033

Deployed Bytecode Sourcemap

2658:19398:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6532:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18247:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6809:450;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6099:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4881:51;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19797:392;;;:::i;:::-;;18411:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19412:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18621:431;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8366:335;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4996:52;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7397:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6718:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4189:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3845:61;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4072:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4523:74;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5128:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20763:675;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7267:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4446:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5174:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4700:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3932:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6209:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20197:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2214:148;;;:::i;:::-;;5284:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4660:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7523:284;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4263:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2000:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21446:141;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6623:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5080:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4122:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4156:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20492:263;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5518:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;8136:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4389:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21643:171;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14783:3412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21876:177;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5237:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6336:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4317:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4939:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4624:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2370:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19060:344;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5313:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7945:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11061:3390;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6532:83;6569:13;6602:5;;;;;;;;;;;;;;;;;6595:12;;6532:83;:::o;18247:89::-;18292:7;18319:9;;18312:16;;18247:89;:::o;6809:450::-;6911:4;6960:1;6941:21;;:7;:21;;;6933:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7056:1;7034:24;;:10;:24;;;7012:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7170:6;7135:11;:23;7147:10;7135:23;;;;;;;;;;;;;;;:32;7159:7;7135:32;;;;;;;;;;;;;;;:41;;;;7213:7;7192:37;;7201:10;7192:37;;;7222:6;7192:37;;;;;;:::i;:::-;;;;;;;;7247:4;7240:11;;6809:450;;;;:::o;6099:102::-;6154:7;3400:1;3450:2;:13;;;;:::i;:::-;3884:5;:22;;;;:::i;:::-;6174:19;;6099:102;:::o;4881:51::-;;;;:::o;19797:392::-;201:1;347:7;;:19;339:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;201:1;413:7;:18;;;;2137:12:::1;:10;:12::i;:::-;2127:22;;:6;::::0;::::1;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19870:10:::2;3524:42;19883:14;;;19912:10;;;;;;;;;;;4739:3;19951:9;;19938:10;;:22;;;;:::i;:::-;19937:39;;;;:::i;:::-;19883:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19870:117;;19998:10;3524:42;20011:14;;;20040;;;;;;;;;;;4739:3;20083:13;;20070:10;;:26;;;;:::i;:::-;20069:43;;;;:::i;:::-;20011:112;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19998:125;;20141:5;:14;;;;;20150:5;20141:14;20134:22;;;;:::i;:::-;;20180:1;20167:10;:14;;;;19859:330;;157:1:::0;454:7;:22;;;;19797:392::o;18411:202::-;18476:7;18592:13;:11;:13::i;:::-;18551:9;:24;18569:4;18551:24;;;;;;;;;;;;;;;;18538:9;;18518;:17;18528:6;18518:17;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;18517:58;;;;:::i;:::-;18516:89;;;;:::i;:::-;18496:109;;18411:202;;;:::o;19412:377::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19592:1:::1;19567:27;;:13;:27;;;;:62;;;;;19627:1;19598:31;;:17;:31;;;;19567:62;19545:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;19723:13;19710:10;;:26;;;;;;;;;;;;;;;;;;19764:17;19747:14;;:34;;;;;;;;;;;;;;;;;;19412:377:::0;;:::o;18621:431::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18768:2:::1;18755:9;:15;;:52;;;;;18805:2;18791:10;:16;;18755:52;:89;;;;;18841:3;18828:9;:16;;18755:89;:127;;;;;18879:3;18865:10;:17;;18755:127;18733:194;;;;;;;;;;;;:::i;:::-;;;;;;;;;18949:9;18940:6;:18;;;;18979:10;18969:7;:20;;;;19007:37;19022:9;19033:10;19007:37;;;;;;;:::i;:::-;;;;;;;;18621:431:::0;;:::o;8366:335::-;8500:4;8517:15;8535:10;8517:28;;8595:40;8611:6;8619:7;8628:6;8595:15;:40::i;:::-;8653;8667:6;8675:9;8686:6;8653:13;:40::i;:::-;8646:47;;;8366:335;;;;;:::o;4996:52::-;5038:10;4996:52;:::o;7397:118::-;7450:7;7492:9;:15;4804:42;7492:15;;;;;;;;;;;;;;;;3400:1;3450:2;:13;;;;:::i;:::-;3884:5;:22;;;;:::i;:::-;7477:30;;;;:::i;:::-;7470:37;;7397:118;:::o;6718:83::-;6759:5;3400:1;6777:16;;6718:83;:::o;4189:37::-;4223:3;4189:37;:::o;3845:61::-;3400:1;3450:2;:13;;;;:::i;:::-;3884:5;:22;;;;:::i;:::-;3845:61;:::o;4072:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;4523:74::-;;;;;;;;;;;;;:::o;5128:39::-;;;;;;;;;;;;;;;;;:::o;20763:675::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20837:19:::1;20916:9;;20887:12;20860:9;:24;20878:4;20860:24;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;20859:66;;;;:::i;:::-;20837:88;;20969:11;20944:9;:21;20954:10;20944:21;;;;;;;;;;;;;;;;:36;;20936:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21016:9;3524:42;21028:14;;;21051:4;21058:12;21028:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21016:55;;21090:4;21082:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21141:14;21158:9;;21141:26;;21202:12;21190:9;;:24;;;;:::i;:::-;21178:9;:36;;;;21253:11;21225:9;:24;21243:4;21225:24;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;21300:11;21275:9;:21;21285:10;21275:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;21358:6;21345:9;;21334:8;;:20;;;;:::i;:::-;21333:31;;;;:::i;:::-;21322:8;:42;;;;21411:4;21382:48;;21391:10;21382:48;;;21418:11;21382:48;;;;;;:::i;:::-;;;;;;;;20826:612;;;20763:675:::0;:::o;7267:122::-;7322:4;7346:35;7354:7;7363:17;7346:7;:35::i;:::-;7339:42;;7267:122;;;:::o;4446:70::-;;;;;;;;;;;;;:::o;5174:30::-;;;;:::o;4700:42::-;4739:3;4700:42;:::o;3932:44::-;;;;;;;;;;;;;;;;;:::o;6209:119::-;6275:7;6302:9;:18;6312:7;6302:18;;;;;;;;;;;;;;;;6295:25;;6209:119;;;:::o;20197:287::-;20295:7;20320:19;20366:11;20354:9;;:23;;;;:::i;:::-;20342:8;;:36;;;;:::i;:::-;20320:58;;20389:20;20423:9;;20412:8;;:20;;;;:::i;:::-;20389:43;;20464:12;20450:11;:26;;;;:::i;:::-;20443:33;;;;20197:287;;;:::o;2214:148::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2321:1:::1;2284:40;;2305:6;::::0;::::1;;;;;;;;2284:40;;;;;;;;;;;;2352:1;2335:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2214:148::o:0;5284:22::-;;;;:::o;4660:33::-;;;;:::o;7523:284::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7647:3:::1;3400:1;3450:2;:13;;;;:::i;:::-;3884:5;:22;;;;:::i;:::-;7632:18;;;;:::i;:::-;7620:8;:30;;7598:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;7752:8;7743:6;:17;;;;7776:23;7790:8;7776:23;;;;;;:::i;:::-;;;;;;;;7523:284:::0;:::o;4263:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;2000:79::-;2038:7;2065:6;;;;;;;;;;;2058:13;;2000:79;:::o;21446:141::-;21493:7;21565:13;:11;:13::i;:::-;21546:16;:14;:16::i;:::-;21521:22;:20;:22::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;:::-;21513:66;;21446:141;:::o;6623:87::-;6662:13;6695:7;;;;;;;;;;;;;;;;;6688:14;;6623:87;:::o;5080:41::-;;;;;;;;;;;;;;;;;:::o;4122:27::-;;;;:::o;4156:26::-;;;;:::o;20492:263::-;20556:7;20576:17;20607:9;:24;20625:4;20607:24;;;;;;;;;;;;;;;;20596:8;;:35;;;;:::i;:::-;20576:55;;20642:16;20700:8;20673:9;:24;20691:4;20673:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;20661:8;;:48;;;;:::i;:::-;20642:67;;20739:8;20727:9;:20;;;;:::i;:::-;20720:27;;;;20492:263;;;:::o;7815:122::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7923:6:::1;7901:11;:19;7913:6;7901:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;7815:122:::0;;:::o;5518:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8136:188::-;8243:4;8272:44;8286:10;8298:9;8309:6;8272:13;:44::i;:::-;8265:51;;8136:188;;;;:::o;4389:29::-;;;;:::o;21643:171::-;21687:7;3524:42;21739:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3524:42;21715:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;;;:::i;:::-;21707:51;;21643:171;:::o;14783:3412::-;14919:4;201:1;347:7;;:19;339:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;201:1;413:7;:18;;;;14989:15:::1;14977:8;:27;;14969:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15115:12;15086:13;:25;15100:10;15086:25;;;;;;;;;;;;;;;;:41:::0;15064:143:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15220:14;15237:10;15220:27;;15349:11;15328:9;:17;15338:6;15328:17;;;;;;;;;;;;;;;;:32;;15306:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;15483:17;15568:11;15541:9;:24;15559:4;15541:24;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;15529:8;;:51;;;;:::i;:::-;15503:9;;:78;;;;:::i;:::-;15483:98;;15592:17;4223:3;15636:7;;4223:3;15626:17;;;;:::i;:::-;15613:9;:31;;;;:::i;:::-;15612:43;;;;:::i;:::-;15592:63;;15666:17;15698:9;15686;:21;;;;:::i;:::-;15666:41;;15768:9;15755;:22;;15747:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15854:15;15872:11;:23;15884:10;15872:23;;;;;;;;;;;;;;;;;;;;;;;;;:129;;3524:42;15964:14;;;15979:10;15991:9;15964:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15872:129;;;3524:42;15911:14;;;15926:10;15938:9;15911:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15872:129;15854:147;;16020:10;16012:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16152:11;16132:9;:17;16142:6;16132:17;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;16112:9;:17;16122:6;16112:17;;;;;;;;;;;;;;;:51;;;;16294:11;:23;16306:10;16294:23;;;;;;;;;;;;;;;;;;;;;;;;;:87;;16372:9;16359:10;;:22;;;;:::i;:::-;16294:87;;;16333:10;;16294:87;16281:10;:100;;;;16416:9;16404;;:21;;;;:::i;:::-;16392:9;:33;;;;16538:11;16511:9;:24;16529:4;16511:24;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;16484:9;:24;16502:4;16484:24;;;;;;;;;;;;;;;:65;;;;16587:13;16603:15;16587:31;;16629:18;16662:13;:11;:13::i;:::-;16650:9;:25;;;;:::i;:::-;16629:46;;16701:10;16686:11;;:25;;;;;;;:::i;:::-;;;;;;;;16744:10;16722:6;:18;16729:10;16722:18;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;16780:10;16765:4;:11;16770:5;16765:11;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;16848:1;16837:7;;:12;;;;;;;:::i;:::-;;;;;;;;16883:5;16860:11;:20;16872:7;;16860:20;;;;;;;;;;;:28;;;;16899:14;16935:13;:11;:13::i;:::-;16916:16;:14;:16::i;:::-;:32;;;;:::i;:::-;16899:49;;16989:5;16959:15;:22;16975:5;16959:22;;;;;;;;;;;:27;;:35;;;;17040:1;17009:15;:22;17025:5;17009:22;;;;;;;;;;;:27;;;:32:::0;17005:174:::1;;17088:15;:73;17122:11;:24;17144:1;17134:7;;:11;;;;:::i;:::-;17122:24;;;;;;;;;;;;17088:73;;;;;;;;;;;:79;;;17058:15;:22;17074:5;17058:22;;;;;;;;;;;:27;;:109;;;;17005:174;17220:6;17189:15;:22;17205:5;17189:22;;;;;;;;;;;:28;;:37;;;;17287:6;17257:15;:22;17273:5;17257:22;;;;;;;;;;;:27;;;:36;:85;;;;17341:1;17310:15;:22;17326:5;17310:22;;;;;;;;;;;:27;;;:32;17257:85;17239:178;;;17399:6;17369:15;:22;17385:5;17369:22;;;;;;;;;;;:27;;:36;;;;17239:178;17476:6;17447:15;:22;17463:5;17447:22;;;;;;;;;;;:26;;;:35;:83;;;;17529:1;17499:15;:22;17515:5;17499:22;;;;;;;;;;;:26;;;:31;17447:83;17429:175;;;17586:6;17557:15;:22;17573:5;17557:22;;;;;;;;;;;:26;;:35;;;;17429:175;17688:4;17663:44;;17672:6;17663:44;;;17695:11;17663:44;;;;;;:::i;:::-;;;;;;;;17722:11;:23;17734:10;17722:23;;;;;;;;;;;;;;;;;;;;;;;;;17718:448;;;17822:10;17767:167;;17798:4;17767:167;;;17851:11;17881:9;17909:10;17767:167;;;;;;;;:::i;:::-;;;;;;;;17718:448;;;18027:10;17972:182;;18003:4;17972:182;;;18056:11;18086:9;18126:13;:11;:13::i;:::-;18114:9;:25;;;;:::i;:::-;17972:182;;;;;;;;:::i;:::-;;;;;;;;17718:448;18183:4;18176:11;;;;;;;;;;157:1:::0;454:7;:22;;;;14783:3412;;;;;:::o;21876:177::-;21923:7;21963:1;21951:9;;:13;21943:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22021:9;:24;22039:4;22021:24;;;;;;;;;;;;;;;;5271:6;21999:9;;:19;;;;:::i;:::-;:46;;;;:::i;:::-;21992:53;;21876:177;:::o;5237:40::-;5271:6;5237:40;:::o;6336:188::-;6456:7;6488:11;:19;6500:6;6488:19;;;;;;;;;;;;;;;:28;6508:7;6488:28;;;;;;;;;;;;;;;;6481:35;;6336:188;;;;:::o;4317:41::-;;;;:::o;4939:50::-;;;;:::o;4624:29::-;;;;:::o;2370:281::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2493:1:::1;2473:22;;:8;:22;;::::0;2451:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2606:8;2577:38;;2598:6;::::0;::::1;;;;;;;;2577:38;;;;;;;;;;;;2635:8;2626:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2370:281:::0;:::o;19060:344::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4739:3:::1;19231:16;19216:12;:31;;;;:::i;:::-;:47;19194:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;19341:12;19329:9;:24;;;;19380:16;19364:13;:32;;;;19060:344:::0;;:::o;5313:46::-;;;;;;;;;;;;;;;;;:::o;7945:153::-;2137:12;:10;:12::i;:::-;2127:22;;:6;;;;;;;;;;:22;;;2119:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8084:6:::1;8058:15;:23;8074:6;8058:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7945:153:::0;;:::o;11061:3390::-;11196:4;201:1;347:7;;:19;339:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;201:1;413:7;:18;;;;11266:15:::1;11254:8;:27;;11246:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11370:12;11342:13;:25;11356:10;11342:25;;;;;;;;;;;;;;;:40;;;;11444:1;11432:9;;:13;11424:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;5038:10;11548:15;:34;;11526:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11672:17;11692:11;:23;11704:10;11692:23;;;;;;;;;;;;;;;;;;;;;;;;;:94;;4223:3;11769:6;;11757:9;:18;;;;:::i;:::-;11756:30;;;;:::i;:::-;11692:94;;;11731:9;11692:94;11672:114;;11842:20;11930:9;;11918;:21;;;;:::i;:::-;11906:8;;:34;;;;:::i;:::-;11865:9;:24;11883:4;11865:24;;;;;;;;;;;;;;;;:76;;;;:::i;:::-;11842:99;;12046:6;;12030:12;12006:9;:21;12016:10;12006:21;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:46;;:94;;;;12073:15;:27;12089:10;12073:27;;;;;;;;;;;;;;;;;;;;;;;;;12006:94;11984:163;;;;;;;;;;;;:::i;:::-;;;;;;;;;12213:1;12198:12;:16;12190:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12323:11;12307:12;:27;;12299:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12445:6;3524:42;12454:18;;;12473:10;12493:4;12500:9;12454:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12445:65;;12531:1;12523:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;12626:29;12630:10;12642:12;12626:3;:29::i;:::-;12725:17;12757:9;12745;:21;;;;:::i;:::-;12725:41;;12803:9;12790:10;;:22;;;;:::i;:::-;12777:10;:35;;;;12847:9;12835;;:21;;;;:::i;:::-;12823:9;:33;;;;12894:13;12910:15;12894:31;;12936:17;12968:13;:11;:13::i;:::-;12956:9;:25;;;;:::i;:::-;12936:45;;13007:9;12992:11;;:24;;;;;;;:::i;:::-;;;;;;;;13049:9;13027:6;:18;13034:10;13027:18;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13084:9;13069:4;:11;13074:5;13069:11;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;13151:1;13140:7;;:12;;;;;;;:::i;:::-;;;;;;;;13186:5;13163:11;:20;13175:7;;13163:20;;;;;;;;;;;:28;;;;13202:14;13238:13;:11;:13::i;:::-;13219:16;:14;:16::i;:::-;:32;;;;:::i;:::-;13202:49;;13292:5;13262:15;:22;13278:5;13262:22;;;;;;;;;;;:27;;:35;;;;13343:1;13312:15;:22;13328:5;13312:22;;;;;;;;;;;:27;;;:32:::0;13308:405:::1;;13376:1;13365:7;;:12:::0;13361:341:::1;;13515:13;:11;:13::i;:::-;3400:1;3450:2;:13;;;;:::i;:::-;3884:5;:22;;;;:::i;:::-;13463:9;13451;;:21;;;;:::i;:::-;13450:40;;;;:::i;:::-;13449:79;;;;:::i;:::-;13398:15;:22;13414:5;13398:22;;;;;;;;;;;:27;;:130;;;;13361:341;;;13599:15;:81;13637:11;:24;13659:1;13649:7;;:11;;;;:::i;:::-;13637:24;;;;;;;;;;;;13599:81;;;;;;;;;;;:87;;;13569:15;:22;13585:5;13569:22;;;;;;;;;;;:27;;:117;;;;13361:341;13308:405;13754:6;13723:15;:22;13739:5;13723:22;;;;;;;;;;;:28;;:37;;;;13821:6;13791:15;:22;13807:5;13791:22;;;;;;;;;;;:27;;;:36;:85;;;;13875:1;13844:15;:22;13860:5;13844:22;;;;;;;;;;;:27;;;:32;13791:85;13773:178;;;13933:6;13903:15;:22;13919:5;13903:22;;;;;;;;;;;:27;;:36;;;;13773:178;14010:6;13981:15;:22;13997:5;13981:22;;;;;;;;;;;:26;;;:35;:83;;;;14063:1;14033:15;:22;14049:5;14033:22;;;;;;;;;;;:26;;;:31;13981:83;13963:175;;;14120:6;14091:15;:22;14107:5;14091:22;;;;;;;;;;;:26;;:35;;;;13963:175;14219:10;14195:49;;14212:4;14195:49;;;14231:12;14195:49;;;;;;:::i;:::-;;;;;;;;14314:4;14260:161;;14281:10;14260:161;;;14334:12;14361:9;14397:13;:11;:13::i;:::-;14385:9;:25;;;;:::i;:::-;14260:161;;;;;;;;:::i;:::-;;;;;;;;14439:4;14432:11;;;;;;;;;157:1:::0;454:7;:22;;;;11061:3390;;;;;:::o;1534:115::-;1587:15;1630:10;1615:26;;1534:115;:::o;10048:545::-;10183:24;10210:11;:18;10222:5;10210:18;;;;;;;;;;;;;;;:27;10229:7;10210:27;;;;;;;;;;;;;;;;10183:54;;10272:17;10252:16;:37;10248:338;;10352:6;10332:16;:26;;10306:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;10508:51;10517:5;10524:7;10552:6;10533:16;:25;10508:8;:51::i;:::-;10248:338;10172:421;10048:545;;;:::o;8739:858::-;8865:4;8958:1;8937:23;;:9;:23;;;;:53;;;;;8985:4;8964:26;;:9;:26;;;;8937:53;8915:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;9080:1;9071:6;:10;9063:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9160:15;:26;9176:9;9160:26;;;;;;;;;;;;;;;;;;;;;;;;;:86;;;;9240:6;;9230;9207:9;:20;9217:9;9207:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:39;;9160:86;9138:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;9380:6;9360:9;:17;9370:6;9360:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9340:9;:17;9350:6;9340:17;;;;;;;;;;;;;;;:46;;;;9481:6;9458:9;:20;9468:9;9458:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;9435:9;:20;9445:9;9435:20;;;;;;;;;;;;;;;:52;;;;9549:9;9532:35;;9541:6;9532:35;;;9560:6;9532:35;;;;;;:::i;:::-;;;;;;;;9585:4;9578:11;;8739:858;;;;;:::o;14505:196::-;14616:6;14594:9;:19;14604:8;14594:19;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;14572:9;:19;14582:8;14572:19;;;;;;;;;;;;;;;:50;;;;14687:6;14660:9;:24;14678:4;14660:24;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;14633:9;:24;14651:4;14633:24;;;;;;;;;;;;;;;:60;;;;14505:196;;:::o;10601:380::-;10754:1;10737:19;;:5;:19;;;10729:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10835:1;10816:21;;:7;:21;;;10808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10919:6;10889:11;:18;10901:5;10889:18;;;;;;;;;;;;;;;:27;10908:7;10889:27;;;;;;;;;;;;;;;:36;;;;10957:7;10941:32;;10950:5;10941:32;;;10966:6;10941:32;;;;;;:::i;:::-;;;;;;;;10601:380;;;:::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;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:474::-;4201:6;4209;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4511:2;4537:53;4582:7;4573:6;4562:9;4558:22;4537:53;:::i;:::-;4527:63;;4482:118;4133:474;;;;;:::o;4613:::-;4681:6;4689;4738:2;4726:9;4717:7;4713:23;4709:32;4706:119;;;4744:79;;:::i;:::-;4706:119;4864:1;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4835:117;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4613:474;;;;;:::o;5093:619::-;5170:6;5178;5186;5235:2;5223:9;5214:7;5210:23;5206:32;5203:119;;;5241:79;;:::i;:::-;5203:119;5361:1;5386:53;5431:7;5422:6;5411:9;5407:22;5386:53;:::i;:::-;5376:63;;5332:117;5488:2;5514:53;5559:7;5550:6;5539:9;5535:22;5514:53;:::i;:::-;5504:63;;5459:118;5616:2;5642:53;5687:7;5678:6;5667:9;5663:22;5642:53;:::i;:::-;5632:63;;5587:118;5093:619;;;;;:::o;5718:86::-;5753:7;5793:4;5786:5;5782:16;5771:27;;5718:86;;;:::o;5810:112::-;5893:22;5909:5;5893:22;:::i;:::-;5888:3;5881:35;5810:112;;:::o;5928:214::-;6017:4;6055:2;6044:9;6040:18;6032:26;;6068:67;6132:1;6121:9;6117:17;6108:6;6068:67;:::i;:::-;5928:214;;;;:::o;6148:118::-;6235:24;6253:5;6235:24;:::i;:::-;6230:3;6223:37;6148:118;;:::o;6272:222::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:71;6484:1;6473:9;6469:17;6460:6;6416:71;:::i;:::-;6272:222;;;;:::o;6500:329::-;6559:6;6608:2;6596:9;6587:7;6583:23;6579:32;6576:119;;;6614:79;;:::i;:::-;6576:119;6734:1;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6705:117;6500:329;;;;:::o;6835:116::-;6905:21;6920:5;6905:21;:::i;:::-;6898:5;6895:32;6885:60;;6941:1;6938;6931:12;6885:60;6835:116;:::o;6957:133::-;7000:5;7038:6;7025:20;7016:29;;7054:30;7078:5;7054:30;:::i;:::-;6957:133;;;;:::o;7096:468::-;7161:6;7169;7218:2;7206:9;7197:7;7193:23;7189:32;7186:119;;;7224:79;;:::i;:::-;7186:119;7344:1;7369:53;7414:7;7405:6;7394:9;7390:22;7369:53;:::i;:::-;7359:63;;7315:117;7471:2;7497:50;7539:7;7530:6;7519:9;7515:22;7497:50;:::i;:::-;7487:60;;7442:115;7096:468;;;;;:::o;7570:664::-;7775:4;7813:3;7802:9;7798:19;7790:27;;7827:71;7895:1;7884:9;7880:17;7871:6;7827:71;:::i;:::-;7908:72;7976:2;7965:9;7961:18;7952:6;7908:72;:::i;:::-;7990;8058:2;8047:9;8043:18;8034:6;7990:72;:::i;:::-;8072;8140:2;8129:9;8125:18;8116:6;8072:72;:::i;:::-;8154:73;8222:3;8211:9;8207:19;8198:6;8154:73;:::i;:::-;7570:664;;;;;;;;:::o;8240:619::-;8317:6;8325;8333;8382:2;8370:9;8361:7;8357:23;8353:32;8350:119;;;8388:79;;:::i;:::-;8350:119;8508:1;8533:53;8578:7;8569:6;8558:9;8554:22;8533:53;:::i;:::-;8523:63;;8479:117;8635:2;8661:53;8706:7;8697:6;8686:9;8682:22;8661:53;:::i;:::-;8651:63;;8606:118;8763:2;8789:53;8834:7;8825:6;8814:9;8810:22;8789:53;:::i;:::-;8779:63;;8734:118;8240:619;;;;;:::o;8865:221::-;9005:34;9001:1;8993:6;8989:14;8982:58;9074:4;9069:2;9061:6;9057:15;9050:29;8865:221;:::o;9092:366::-;9234:3;9255:67;9319:2;9314:3;9255:67;:::i;:::-;9248:74;;9331:93;9420:3;9331:93;:::i;:::-;9449:2;9444:3;9440:12;9433:19;;9092:366;;;:::o;9464:419::-;9630:4;9668:2;9657:9;9653:18;9645:26;;9717:9;9711:4;9707:20;9703:1;9692:9;9688:17;9681:47;9745:131;9871:4;9745:131;:::i;:::-;9737:139;;9464:419;;;:::o;9889:223::-;10029:34;10025:1;10017:6;10013:14;10006:58;10098:6;10093:2;10085:6;10081:15;10074:31;9889:223;:::o;10118:366::-;10260:3;10281:67;10345:2;10340:3;10281:67;:::i;:::-;10274:74;;10357:93;10446:3;10357:93;:::i;:::-;10475:2;10470:3;10466:12;10459:19;;10118:366;;;:::o;10490:419::-;10656:4;10694:2;10683:9;10679:18;10671:26;;10743:9;10737:4;10733:20;10729:1;10718:9;10714:17;10707:47;10771:131;10897:4;10771:131;:::i;:::-;10763:139;;10490:419;;;:::o;10915:180::-;10963:77;10960:1;10953:88;11060:4;11057:1;11050:15;11084:4;11081:1;11074:15;11101:102;11143:8;11190:5;11187:1;11183:13;11162:34;;11101:102;;;:::o;11209:848::-;11270:5;11277:4;11301:6;11292:15;;11325:5;11316:14;;11339:712;11360:1;11350:8;11347:15;11339:712;;;11455:4;11450:3;11446:14;11440:4;11437:24;11434:50;;;11464:18;;:::i;:::-;11434:50;11514:1;11504:8;11500:16;11497:451;;;11929:4;11922:5;11918:16;11909:25;;11497:451;11979:4;11973;11969:15;11961:23;;12009:32;12032:8;12009:32;:::i;:::-;11997:44;;11339:712;;;11209:848;;;;;;;:::o;12063:1073::-;12117:5;12308:8;12298:40;;12329:1;12320:10;;12331:5;;12298:40;12357:4;12347:36;;12374:1;12365:10;;12376:5;;12347:36;12443:4;12491:1;12486:27;;;;12527:1;12522:191;;;;12436:277;;12486:27;12504:1;12495:10;;12506:5;;;12522:191;12567:3;12557:8;12554:17;12551:43;;;12574:18;;:::i;:::-;12551:43;12623:8;12620:1;12616:16;12607:25;;12658:3;12651:5;12648:14;12645:40;;;12665:18;;:::i;:::-;12645:40;12698:5;;;12436:277;;12822:2;12812:8;12809:16;12803:3;12797:4;12794:13;12790:36;12772:2;12762:8;12759:16;12754:2;12748:4;12745:12;12741:35;12725:111;12722:246;;;12878:8;12872:4;12868:19;12859:28;;12913:3;12906:5;12903:14;12900:40;;;12920:18;;:::i;:::-;12900:40;12953:5;;12722:246;12993:42;13031:3;13021:8;13015:4;13012:1;12993:42;:::i;:::-;12978:57;;;;13067:4;13062:3;13058:14;13051:5;13048:25;13045:51;;;13076:18;;:::i;:::-;13045:51;13125:4;13118:5;13114:16;13105:25;;12063:1073;;;;;;:::o;13142:281::-;13200:5;13224:23;13242:4;13224:23;:::i;:::-;13216:31;;13268:25;13284:8;13268:25;:::i;:::-;13256:37;;13312:104;13349:66;13339:8;13333:4;13312:104;:::i;:::-;13303:113;;13142:281;;;;:::o;13429:410::-;13469:7;13492:20;13510:1;13492:20;:::i;:::-;13487:25;;13526:20;13544:1;13526:20;:::i;:::-;13521:25;;13581:1;13578;13574:9;13603:30;13621:11;13603:30;:::i;:::-;13592:41;;13782:1;13773:7;13769:15;13766:1;13763:22;13743:1;13736:9;13716:83;13693:139;;13812:18;;:::i;:::-;13693:139;13477:362;13429:410;;;;:::o;13845:181::-;13985:33;13981:1;13973:6;13969:14;13962:57;13845:181;:::o;14032:366::-;14174:3;14195:67;14259:2;14254:3;14195:67;:::i;:::-;14188:74;;14271:93;14360:3;14271:93;:::i;:::-;14389:2;14384:3;14380:12;14373:19;;14032:366;;;:::o;14404:419::-;14570:4;14608:2;14597:9;14593:18;14585:26;;14657:9;14651:4;14647:20;14643:1;14632:9;14628:17;14621:47;14685:131;14811:4;14685:131;:::i;:::-;14677:139;;14404:419;;;:::o;14829:182::-;14969:34;14965:1;14957:6;14953:14;14946:58;14829:182;:::o;15017:366::-;15159:3;15180:67;15244:2;15239:3;15180:67;:::i;:::-;15173:74;;15256:93;15345:3;15256:93;:::i;:::-;15374:2;15369:3;15365:12;15358:19;;15017:366;;;:::o;15389:419::-;15555:4;15593:2;15582:9;15578:18;15570:26;;15642:9;15636:4;15632:20;15628:1;15617:9;15613:17;15606:47;15670:131;15796:4;15670:131;:::i;:::-;15662:139;;15389:419;;;:::o;15814:180::-;15862:77;15859:1;15852:88;15959:4;15956:1;15949:15;15983:4;15980:1;15973:15;16000:185;16040:1;16057:20;16075:1;16057:20;:::i;:::-;16052:25;;16091:20;16109:1;16091:20;:::i;:::-;16086:25;;16130:1;16120:35;;16135:18;;:::i;:::-;16120:35;16177:1;16174;16170:9;16165:14;;16000:185;;;;:::o;16191:332::-;16312:4;16350:2;16339:9;16335:18;16327:26;;16363:71;16431:1;16420:9;16416:17;16407:6;16363:71;:::i;:::-;16444:72;16512:2;16501:9;16497:18;16488:6;16444:72;:::i;:::-;16191:332;;;;;:::o;16529:137::-;16583:5;16614:6;16608:13;16599:22;;16630:30;16654:5;16630:30;:::i;:::-;16529:137;;;;:::o;16672:345::-;16739:6;16788:2;16776:9;16767:7;16763:23;16759:32;16756:119;;;16794:79;;:::i;:::-;16756:119;16914:1;16939:61;16992:7;16983:6;16972:9;16968:22;16939:61;:::i;:::-;16929:71;;16885:125;16672:345;;;;:::o;17023:180::-;17071:77;17068:1;17061:88;17168:4;17165:1;17158:15;17192:4;17189:1;17182:15;17209:227;17349:34;17345:1;17337:6;17333:14;17326:58;17418:10;17413:2;17405:6;17401:15;17394:35;17209:227;:::o;17442:366::-;17584:3;17605:67;17669:2;17664:3;17605:67;:::i;:::-;17598:74;;17681:93;17770:3;17681:93;:::i;:::-;17799:2;17794:3;17790:12;17783:19;;17442:366;;;:::o;17814:419::-;17980:4;18018:2;18007:9;18003:18;17995:26;;18067:9;18061:4;18057:20;18053:1;18042:9;18038:17;18031:47;18095:131;18221:4;18095:131;:::i;:::-;18087:139;;17814:419;;;:::o;18239:167::-;18379:19;18375:1;18367:6;18363:14;18356:43;18239:167;:::o;18412:366::-;18554:3;18575:67;18639:2;18634:3;18575:67;:::i;:::-;18568:74;;18651:93;18740:3;18651:93;:::i;:::-;18769:2;18764:3;18760:12;18753:19;;18412:366;;;:::o;18784:419::-;18950:4;18988:2;18977:9;18973:18;18965:26;;19037:9;19031:4;19027:20;19023:1;19012:9;19008:17;19001:47;19065:131;19191:4;19065:131;:::i;:::-;19057:139;;18784:419;;;:::o;19209:332::-;19330:4;19368:2;19357:9;19353:18;19345:26;;19381:71;19449:1;19438:9;19434:17;19425:6;19381:71;:::i;:::-;19462:72;19530:2;19519:9;19515:18;19506:6;19462:72;:::i;:::-;19209:332;;;;;:::o;19547:194::-;19587:4;19607:20;19625:1;19607:20;:::i;:::-;19602:25;;19641:20;19659:1;19641:20;:::i;:::-;19636:25;;19685:1;19682;19678:9;19670:17;;19709:1;19703:4;19700:11;19697:37;;;19714:18;;:::i;:::-;19697:37;19547:194;;;;:::o;19747:168::-;19887:20;19883:1;19875:6;19871:14;19864:44;19747:168;:::o;19921:366::-;20063:3;20084:67;20148:2;20143:3;20084:67;:::i;:::-;20077:74;;20160:93;20249:3;20160:93;:::i;:::-;20278:2;20273:3;20269:12;20262:19;;19921:366;;;:::o;20293:419::-;20459:4;20497:2;20486:9;20482:18;20474:26;;20546:9;20540:4;20536:20;20532:1;20521:9;20517:17;20510:47;20574:131;20700:4;20574:131;:::i;:::-;20566:139;;20293:419;;;:::o;20718:179::-;20858:31;20854:1;20846:6;20842:14;20835:55;20718:179;:::o;20903:366::-;21045:3;21066:67;21130:2;21125:3;21066:67;:::i;:::-;21059:74;;21142:93;21231:3;21142:93;:::i;:::-;21260:2;21255:3;21251:12;21244:19;;20903:366;;;:::o;21275:419::-;21441:4;21479:2;21468:9;21464:18;21456:26;;21528:9;21522:4;21518:20;21514:1;21503:9;21499:17;21492:47;21556:131;21682:4;21556:131;:::i;:::-;21548:139;;21275:419;;;:::o;21700:191::-;21740:3;21759:20;21777:1;21759:20;:::i;:::-;21754:25;;21793:20;21811:1;21793:20;:::i;:::-;21788:25;;21836:1;21833;21829:9;21822:16;;21857:3;21854:1;21851:10;21848:36;;;21864:18;;:::i;:::-;21848:36;21700:191;;;;:::o;21897:241::-;22037:34;22033:1;22025:6;22021:14;22014:58;22106:24;22101:2;22093:6;22089:15;22082:49;21897:241;:::o;22144:366::-;22286:3;22307:67;22371:2;22366:3;22307:67;:::i;:::-;22300:74;;22383:93;22472:3;22383:93;:::i;:::-;22501:2;22496:3;22492:12;22485:19;;22144:366;;;:::o;22516:419::-;22682:4;22720:2;22709:9;22705:18;22697:26;;22769:9;22763:4;22759:20;22755:1;22744:9;22740:17;22733:47;22797:131;22923:4;22797:131;:::i;:::-;22789:139;;22516:419;;;:::o;22941:143::-;22998:5;23029:6;23023:13;23014:22;;23045:33;23072:5;23045:33;:::i;:::-;22941:143;;;;:::o;23090:351::-;23160:6;23209:2;23197:9;23188:7;23184:23;23180:32;23177:119;;;23215:79;;:::i;:::-;23177:119;23335:1;23360:64;23416:7;23407:6;23396:9;23392:22;23360:64;:::i;:::-;23350:74;;23306:128;23090:351;;;;:::o;23447:166::-;23587:18;23583:1;23575:6;23571:14;23564:42;23447:166;:::o;23619:366::-;23761:3;23782:67;23846:2;23841:3;23782:67;:::i;:::-;23775:74;;23858:93;23947:3;23858:93;:::i;:::-;23976:2;23971:3;23967:12;23960:19;;23619:366;;;:::o;23991:419::-;24157:4;24195:2;24184:9;24180:18;24172:26;;24244:9;24238:4;24234:20;24230:1;24219:9;24215:17;24208:47;24272:131;24398:4;24272:131;:::i;:::-;24264:139;;23991:419;;;:::o;24416:239::-;24556:34;24552:1;24544:6;24540:14;24533:58;24625:22;24620:2;24612:6;24608:15;24601:47;24416:239;:::o;24661:366::-;24803:3;24824:67;24888:2;24883:3;24824:67;:::i;:::-;24817:74;;24900:93;24989:3;24900:93;:::i;:::-;25018:2;25013:3;25009:12;25002:19;;24661:366;;;:::o;25033:419::-;25199:4;25237:2;25226:9;25222:18;25214:26;;25286:9;25280:4;25276:20;25272:1;25261:9;25257:17;25250:47;25314:131;25440:4;25314:131;:::i;:::-;25306:139;;25033:419;;;:::o;25458:180::-;25598:32;25594:1;25586:6;25582:14;25575:56;25458:180;:::o;25644:366::-;25786:3;25807:67;25871:2;25866:3;25807:67;:::i;:::-;25800:74;;25883:93;25972:3;25883:93;:::i;:::-;26001:2;25996:3;25992:12;25985:19;;25644:366;;;:::o;26016:419::-;26182:4;26220:2;26209:9;26205:18;26197:26;;26269:9;26263:4;26259:20;26255:1;26244:9;26240:17;26233:47;26297:131;26423:4;26297:131;:::i;:::-;26289:139;;26016:419;;;:::o;26441:176::-;26581:28;26577:1;26569:6;26565:14;26558:52;26441:176;:::o;26623:366::-;26765:3;26786:67;26850:2;26845:3;26786:67;:::i;:::-;26779:74;;26862:93;26951:3;26862:93;:::i;:::-;26980:2;26975:3;26971:12;26964:19;;26623:366;;;:::o;26995:419::-;27161:4;27199:2;27188:9;27184:18;27176:26;;27248:9;27242:4;27238:20;27234:1;27223:9;27219:17;27212:47;27276:131;27402:4;27276:131;:::i;:::-;27268:139;;26995:419;;;:::o;27420:169::-;27560:21;27556:1;27548:6;27544:14;27537:45;27420:169;:::o;27595:366::-;27737:3;27758:67;27822:2;27817:3;27758:67;:::i;:::-;27751:74;;27834:93;27923:3;27834:93;:::i;:::-;27952:2;27947:3;27943:12;27936:19;;27595:366;;;:::o;27967:419::-;28133:4;28171:2;28160:9;28156:18;28148:26;;28220:9;28214:4;28210:20;28206:1;28195:9;28191:17;28184:47;28248:131;28374:4;28248:131;:::i;:::-;28240:139;;27967:419;;;:::o;28392:442::-;28541:4;28579:2;28568:9;28564:18;28556:26;;28592:71;28660:1;28649:9;28645:17;28636:6;28592:71;:::i;:::-;28673:72;28741:2;28730:9;28726:18;28717:6;28673:72;:::i;:::-;28755;28823:2;28812:9;28808:18;28799:6;28755:72;:::i;:::-;28392:442;;;;;;:::o;28840:162::-;28980:14;28976:1;28968:6;28964:14;28957:38;28840:162;:::o;29008:366::-;29150:3;29171:67;29235:2;29230:3;29171:67;:::i;:::-;29164:74;;29247:93;29336:3;29247:93;:::i;:::-;29365:2;29360:3;29356:12;29349:19;;29008:366;;;:::o;29380:419::-;29546:4;29584:2;29573:9;29569:18;29561:26;;29633:9;29627:4;29623:20;29619:1;29608:9;29604:17;29597:47;29661:131;29787:4;29661:131;:::i;:::-;29653:139;;29380:419;;;:::o;29805:225::-;29945:34;29941:1;29933:6;29929:14;29922:58;30014:8;30009:2;30001:6;29997:15;29990:33;29805:225;:::o;30036:366::-;30178:3;30199:67;30263:2;30258:3;30199:67;:::i;:::-;30192:74;;30275:93;30364:3;30275:93;:::i;:::-;30393:2;30388:3;30384:12;30377:19;;30036:366;;;:::o;30408:419::-;30574:4;30612:2;30601:9;30597:18;30589:26;;30661:9;30655:4;30651:20;30647:1;30636:9;30632:17;30625:47;30689:131;30815:4;30689:131;:::i;:::-;30681:139;;30408:419;;;:::o;30833:175::-;30973:27;30969:1;30961:6;30957:14;30950:51;30833:175;:::o;31014:366::-;31156:3;31177:67;31241:2;31236:3;31177:67;:::i;:::-;31170:74;;31253:93;31342:3;31253:93;:::i;:::-;31371:2;31366:3;31362:12;31355:19;;31014:366;;;:::o;31386:419::-;31552:4;31590:2;31579:9;31575:18;31567:26;;31639:9;31633:4;31629:20;31625:1;31614:9;31610:17;31603:47;31667:131;31793:4;31667:131;:::i;:::-;31659:139;;31386:419;;;:::o;31811:176::-;31951:28;31947:1;31939:6;31935:14;31928:52;31811:176;:::o;31993:366::-;32135:3;32156:67;32220:2;32215:3;32156:67;:::i;:::-;32149:74;;32232:93;32321:3;32232:93;:::i;:::-;32350:2;32345:3;32341:12;32334:19;;31993:366;;;:::o;32365:419::-;32531:4;32569:2;32558:9;32554:18;32546:26;;32618:9;32612:4;32608:20;32604:1;32593:9;32589:17;32582:47;32646:131;32772:4;32646:131;:::i;:::-;32638:139;;32365:419;;;:::o;32790:169::-;32930:21;32926:1;32918:6;32914:14;32907:45;32790:169;:::o;32965:366::-;33107:3;33128:67;33192:2;33187:3;33128:67;:::i;:::-;33121:74;;33204:93;33293:3;33204:93;:::i;:::-;33322:2;33317:3;33313:12;33306:19;;32965:366;;;:::o;33337:419::-;33503:4;33541:2;33530:9;33526:18;33518:26;;33590:9;33584:4;33580:20;33576:1;33565:9;33561:17;33554:47;33618:131;33744:4;33618:131;:::i;:::-;33610:139;;33337:419;;;:::o;33762:169::-;33902:21;33898:1;33890:6;33886:14;33879:45;33762:169;:::o;33937:366::-;34079:3;34100:67;34164:2;34159:3;34100:67;:::i;:::-;34093:74;;34176:93;34265:3;34176:93;:::i;:::-;34294:2;34289:3;34285:12;34278:19;;33937:366;;;:::o;34309:419::-;34475:4;34513:2;34502:9;34498:18;34490:26;;34562:9;34556:4;34552:20;34548:1;34537:9;34533:17;34526:47;34590:131;34716:4;34590:131;:::i;:::-;34582:139;;34309:419;;;:::o;34734:222::-;34874:34;34870:1;34862:6;34858:14;34851:58;34943:5;34938:2;34930:6;34926:15;34919:30;34734:222;:::o;34962:366::-;35104:3;35125:67;35189:2;35184:3;35125:67;:::i;:::-;35118:74;;35201:93;35290:3;35201:93;:::i;:::-;35319:2;35314:3;35310:12;35303:19;;34962:366;;;:::o;35334:419::-;35500:4;35538:2;35527:9;35523:18;35515:26;;35587:9;35581:4;35577:20;35573:1;35562:9;35558:17;35551:47;35615:131;35741:4;35615:131;:::i;:::-;35607:139;;35334:419;;;:::o;35759:442::-;35908:4;35946:2;35935:9;35931:18;35923:26;;35959:71;36027:1;36016:9;36012:17;36003:6;35959:71;:::i;:::-;36040:72;36108:2;36097:9;36093:18;36084:6;36040:72;:::i;:::-;36122;36190:2;36179:9;36175:18;36166:6;36122:72;:::i;:::-;35759:442;;;;;;:::o;36207:173::-;36347:25;36343:1;36335:6;36331:14;36324:49;36207:173;:::o;36386:366::-;36528:3;36549:67;36613:2;36608:3;36549:67;:::i;:::-;36542:74;;36625:93;36714:3;36625:93;:::i;:::-;36743:2;36738:3;36734:12;36727:19;;36386:366;;;:::o;36758:419::-;36924:4;36962:2;36951:9;36947:18;36939:26;;37011:9;37005:4;37001:20;36997:1;36986:9;36982:17;36975:47;37039:131;37165:4;37039:131;:::i;:::-;37031:139;;36758:419;;;:::o;37183:179::-;37323:31;37319:1;37311:6;37307:14;37300:55;37183:179;:::o;37368:366::-;37510:3;37531:67;37595:2;37590:3;37531:67;:::i;:::-;37524:74;;37607:93;37696:3;37607:93;:::i;:::-;37725:2;37720:3;37716:12;37709:19;;37368:366;;;:::o;37740:419::-;37906:4;37944:2;37933:9;37929:18;37921:26;;37993:9;37987:4;37983:20;37979:1;37968:9;37964:17;37957:47;38021:131;38147:4;38021:131;:::i;:::-;38013:139;;37740:419;;;:::o;38165:221::-;38305:34;38301:1;38293:6;38289:14;38282:58;38374:4;38369:2;38361:6;38357:15;38350:29;38165:221;:::o;38392:366::-;38534:3;38555:67;38619:2;38614:3;38555:67;:::i;:::-;38548:74;;38631:93;38720:3;38631:93;:::i;:::-;38749:2;38744:3;38740:12;38733:19;;38392:366;;;:::o;38764:419::-;38930:4;38968:2;38957:9;38953:18;38945:26;;39017:9;39011:4;39007:20;39003:1;38992:9;38988:17;38981:47;39045:131;39171:4;39045:131;:::i;:::-;39037:139;;38764:419;;;:::o;39189:228::-;39329:34;39325:1;39317:6;39313:14;39306:58;39398:11;39393:2;39385:6;39381:15;39374:36;39189:228;:::o;39423:366::-;39565:3;39586:67;39650:2;39645:3;39586:67;:::i;:::-;39579:74;;39662:93;39751:3;39662:93;:::i;:::-;39780:2;39775:3;39771:12;39764:19;;39423:366;;;:::o;39795:419::-;39961:4;39999:2;39988:9;39984:18;39976:26;;40048:9;40042:4;40038:20;40034:1;40023:9;40019:17;40012:47;40076:131;40202:4;40076:131;:::i;:::-;40068:139;;39795:419;;;:::o;40220:170::-;40360:22;40356:1;40348:6;40344:14;40337:46;40220:170;:::o;40396:366::-;40538:3;40559:67;40623:2;40618:3;40559:67;:::i;:::-;40552:74;;40635:93;40724:3;40635:93;:::i;:::-;40753:2;40748:3;40744:12;40737:19;;40396:366;;;:::o;40768:419::-;40934:4;40972:2;40961:9;40957:18;40949:26;;41021:9;41015:4;41011:20;41007:1;40996:9;40992:17;40985:47;41049:131;41175:4;41049:131;:::i;:::-;41041:139;;40768:419;;;:::o;41193:223::-;41333:34;41329:1;41321:6;41317:14;41310:58;41402:6;41397:2;41389:6;41385:15;41378:31;41193:223;:::o;41422:366::-;41564:3;41585:67;41649:2;41644:3;41585:67;:::i;:::-;41578:74;;41661:93;41750:3;41661:93;:::i;:::-;41779:2;41774:3;41770:12;41763:19;;41422:366;;;:::o;41794:419::-;41960:4;41998:2;41987:9;41983:18;41975:26;;42047:9;42041:4;42037:20;42033:1;42022:9;42018:17;42011:47;42075:131;42201:4;42075:131;:::i;:::-;42067:139;;41794:419;;;:::o;42219:221::-;42359:34;42355:1;42347:6;42343:14;42336:58;42428:4;42423:2;42415:6;42411:15;42404:29;42219:221;:::o;42446:366::-;42588:3;42609:67;42673:2;42668:3;42609:67;:::i;:::-;42602:74;;42685:93;42774:3;42685:93;:::i;:::-;42803:2;42798:3;42794:12;42787:19;;42446:366;;;:::o;42818:419::-;42984:4;43022:2;43011:9;43007:18;42999:26;;43071:9;43065:4;43061:20;43057:1;43046:9;43042:17;43035:47;43099:131;43225:4;43099:131;:::i;:::-;43091:139;;42818:419;;;:::o

Swarm Source

ipfs://2386b1aac7cbae0cc7db4a0c16c3731991e1c5e9d6551dffdc78e223753a1dd8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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