ETH Price: $3,058.98 (+2.22%)
Gas: 6 Gwei

Contract

0x332679057B9E8b541993d658069543f7AdFDab93
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve178049922023-07-30 9:35:23263 days ago1690709723IN
0x33267905...7AdFDab93
0 ETH0.0008087517.21753242
Transfer176351722023-07-06 13:42:47287 days ago1688650967IN
0x33267905...7AdFDab93
0 ETH0.0017991426.04584737
Approve176350322023-07-06 13:14:11287 days ago1688649251IN
0x33267905...7AdFDab93
0 ETH0.0013563128.8669568
Set Max Hold Lim...176004672023-07-01 16:44:11292 days ago1688229851IN
0x33267905...7AdFDab93
0 ETH0.0006276818.65117356
Include Or Exclu...175688622023-06-27 6:13:47296 days ago1687846427IN
0x33267905...7AdFDab93
0 ETH0.0005864812.53221687
Include Or Exclu...175688612023-06-27 6:13:35296 days ago1687846415IN
0x33267905...7AdFDab93
0 ETH0.0005985112.7950554
Include Or Exclu...175688602023-06-27 6:13:23296 days ago1687846403IN
0x33267905...7AdFDab93
0 ETH0.0006026312.8774584
Approve175688542023-06-27 6:12:11296 days ago1687846331IN
0x33267905...7AdFDab93
0 ETH0.0007417115.79427515
0x60806040175686052023-06-27 5:22:11296 days ago1687843331IN
 Create: FeelrToken
0 ETH0.0893186212.84067468

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeelrToken

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.10;

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

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

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

    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 = payable(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 FeelrToken is Context, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;

    string private _name = "Feelr";
    string private _symbol = "$Feelr";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000_000 * 1e9;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;

    uint256 public minTokenToSwap = _totalSupply.div(1e5); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = _totalSupply.mul(2).div(100); // this is the max wallet holding limit
    uint256 public botFee = 990;
    uint256 public percentDivider = 1000;
    uint256 public snipingTime = 60 seconds;
    uint256 public launchedAt;

    bool public autoSwapStatus; // should be true to auto swap
    bool public feesStatus; // enable by default
    bool public trading; // once enable can't be disable afterwards

    uint256 public marketingFeeOnBuying = 30; // 3% will be added to the marketing address

    uint256 public marketingFeeOnSelling = 30; // 3% will be added to the marketing address

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = address(0xAd8F6242c3965296ce1871668A6810DbFcB0f632);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;
        isExcludedFromMaxHolding[dexPair] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;

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

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

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

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

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

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

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

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

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

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "$Feelr: decreased allowance or below zero"
            )
        );
        return true;
    }

    function includeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxHolding[account] = value;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0, "$Feelr: can't be 0");
        minTokenToSwap = _amount;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= _totalSupply.div(percentDivider),
            "$Feelr: should be greater than 0.1%"
        );
        maxHoldLimit = _amount;
    }

    function setBuyFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnBuying = _marketingFee;
        require(
            _marketingFee <= percentDivider.mul(15).div(100),
            "$Feelr: can't be more than 15%"
        );
    }

    function setSellFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnSelling = _marketingFee;
        require(
            _marketingFee <= percentDivider.mul(15).div(100),
            "$Feelr: can't be more than 15%"
        );
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        autoSwapStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function updateAddresses(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function enableTrading() external onlyOwner {
        require(!trading, "$Feelr: already enabled");
        trading = true;
        feesStatus = true;
        autoSwapStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount.mul(marketingFeeOnBuying).div(percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount.mul(marketingFeeOnSelling).div(percentDivider);
        return fee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "$Feelr: approve from the zero address");
        require(spender != address(0), "$Feelr: approve to the zero address");

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "$Feelr: transfer from the zero address");
        require(to != address(0), "$Feelr: transfer to the zero address");
        require(amount > 0, "$Feelr: Amount must be greater than zero");

        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    "$Feelr: trading is disable"
                );
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "$Feelr: max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                sender != address(dexRouter)
            ) {
                allFee = amount.mul(botFee).div(percentDivider);
                tTransferAmount = amount.sub(allFee);
            } else {
                allFee = totalBuyFeePerTx(amount);
                tTransferAmount = amount.sub(allFee);
            }

            _balances[sender] = _balances[sender].sub(
                amount,
                "$Feelr: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(
                amount,
                "$Feelr: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender].sub(
                amount,
                "$Feelr: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)].add(amount);

        emit Transfer(sender, address(this), amount);
    }

    function distributeAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            autoSwapStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minTokenToSwap);

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minTokenToSwap);

            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(marketingWallet).transfer(ethForMarketing);
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }
}

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoSwapStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600581526020017f4665656c72000000000000000000000000000000000000000000000000000000815250600690805190602001906200005192919062000b55565b506040518060400160405280600681526020017f244665656c720000000000000000000000000000000000000000000000000000815250600790805190602001906200009f92919062000b55565b506009600860006101000a81548160ff021916908360ff160217905550683635c9adc5dea00000600955620000e8620186a0600954620009e660201b62001f531790919060201c565b600d556200012260646200010e600260095462000a3860201b62001f9d1790919060201c565b620009e660201b62001f531790919060201c565b600e556103de600f556103e8601055603c601155601e601455601e6015553480156200014d57600080fd5b506200015e62000abc60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600954600160006200022f62000ac460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ad8f6242c3965296ce1871668a6810dbfcb0f632600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000c6f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd919062000c6f565b6040518363ffffffff1660e01b8152600401620003fc92919062000cb2565b6020604051808303816000875af11580156200041c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000442919062000c6f565b905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620004dc62000ac460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200061562000ac460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200074e62000ac460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200097562000ac460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620009d6919062000cfa565b60405180910390a3505062000fd3565b600062000a3083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000aed60201b60201c565b905092915050565b60008083141562000a4d576000905062000ab6565b6000828462000a5d919062000d46565b905082848262000a6e919062000dd6565b1462000ab1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa89062000e95565b60405180910390fd5b809150505b92915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2e919062000f4a565b60405180910390fd5b506000838562000b48919062000dd6565b9050809150509392505050565b82805462000b639062000f9d565b90600052602060002090601f01602090048101928262000b87576000855562000bd3565b82601f1062000ba257805160ff191683800117855562000bd3565b8280016001018555821562000bd3579182015b8281111562000bd257825182559160200191906001019062000bb5565b5b50905062000be2919062000be6565b5090565b5b8082111562000c0157600081600090555060010162000be7565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c378262000c0a565b9050919050565b62000c498162000c2a565b811462000c5557600080fd5b50565b60008151905062000c698162000c3e565b92915050565b60006020828403121562000c885762000c8762000c05565b5b600062000c988482850162000c58565b91505092915050565b62000cac8162000c2a565b82525050565b600060408201905062000cc9600083018562000ca1565b62000cd8602083018462000ca1565b9392505050565b6000819050919050565b62000cf48162000cdf565b82525050565b600060208201905062000d11600083018462000ce9565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d538262000cdf565b915062000d608362000cdf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d9c5762000d9b62000d17565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000de38262000cdf565b915062000df08362000cdf565b92508262000e035762000e0262000da7565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000e7d60218362000e0e565b915062000e8a8262000e1f565b604082019050919050565b6000602082019050818103600083015262000eb08162000e6e565b9050919050565b600081519050919050565b60005b8381101562000ee257808201518184015260208101905062000ec5565b8381111562000ef2576000848401525b50505050565b6000601f19601f8301169050919050565b600062000f168262000eb7565b62000f22818562000e0e565b935062000f3481856020860162000ec2565b62000f3f8162000ef8565b840191505092915050565b6000602082019050818103600083015262000f66818462000f09565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fb657607f821691505b6020821081141562000fcd5762000fcc62000f6e565b5b50919050565b6143fe8062000fe36000396000f3fe6080604052600436106102765760003560e01c80638a8c523c1161014f578063b0bc2a2d116100c1578063ed4214291161007a578063ed42142914610987578063f097ea1a146109c4578063f242ab41146109ed578063f2fde38b14610a18578063f4b3dbc314610a41578063fe6f1b0514610a7e5761027d565b8063b0bc2a2d14610877578063bf56b371146108a0578063bf862391146108cb578063dd62ed3e146108f6578063ea5b9e8514610933578063ec44acf21461095c5761027d565b80639a36dfa1116101135780639a36dfa114610757578063a2b8a94714610782578063a457c2d7146107ab578063a643c1a0146107e8578063a7c29b4014610811578063a9059cbb1461083a5761027d565b80638a8c523c146106845780638da5cb5b1461069b578063950eb5d5146106c657806395d89b41146106ef57806399b102b51461071a5761027d565b80635342acb4116101e85780637c6a9a9c116101ac5780637c6a9a9c146105725780637d99c66d1461059d578063844af78e146105c857806384ea21bc146105f35780638756aabd14610630578063879dd3c5146106595761027d565b80635342acb41461048d578063679a3c59146104ca57806370a08231146104f3578063715018a61461053057806375f0a874146105475761027d565b80631884f1e61161023a5780631884f1e61461036957806323b872dd14610394578063267fb987146103d15780632d129390146103fc578063313ce5671461042557806339509351146104505761027d565b806306fdde03146102825780630758d924146102ad578063095ea7b3146102d85780630a2d140c1461031557806318160ddd1461033e5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610aa9565b6040516102a4919061346f565b60405180910390f35b3480156102b957600080fd5b506102c2610b3b565b6040516102cf9190613510565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906135a4565b610b61565b60405161030c91906135ff565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190613646565b610b7f565b005b34801561034a57600080fd5b50610353610c31565b6040516103609190613682565b60405180910390f35b34801561037557600080fd5b5061037e610c3b565b60405161038b9190613682565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b6919061369d565b610c41565b6040516103c891906135ff565b60405180910390f35b3480156103dd57600080fd5b506103e6610d1a565b6040516103f391906135ff565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e91906136f0565b610d2d565b005b34801561043157600080fd5b5061043a610e1d565b604051610447919061374c565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906135a4565b610e34565b60405161048491906135ff565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613767565b610ee7565b6040516104c191906135ff565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190613767565b610f07565b005b3480156104ff57600080fd5b5061051a60048036038101906105159190613767565b610fe6565b6040516105279190613682565b60405180910390f35b34801561053c57600080fd5b5061054561102f565b005b34801561055357600080fd5b5061055c611182565b60405161056991906137a3565b60405180910390f35b34801561057e57600080fd5b506105876111a8565b6040516105949190613682565b60405180910390f35b3480156105a957600080fd5b506105b26111ae565b6040516105bf9190613682565b60405180910390f35b3480156105d457600080fd5b506105dd6111b4565b6040516105ea9190613682565b60405180910390f35b3480156105ff57600080fd5b5061061a60048036038101906106159190613767565b6111ba565b60405161062791906135ff565b60405180910390f35b34801561063c57600080fd5b50610657600480360381019061065291906137be565b6111da565b005b34801561066557600080fd5b5061066e6112d2565b60405161067b91906135ff565b60405180910390f35b34801561069057600080fd5b506106996112e5565b005b3480156106a757600080fd5b506106b0611424565b6040516106bd91906137a3565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e891906137be565b61144d565b005b3480156106fb57600080fd5b50610704611557565b604051610711919061346f565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c9190613767565b6115e9565b60405161074e91906135ff565b60405180910390f35b34801561076357600080fd5b5061076c611609565b6040516107799190613682565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a491906137be565b61160f565b005b3480156107b757600080fd5b506107d260048036038101906107cd91906135a4565b611719565b6040516107df91906135ff565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190613767565b6117e6565b005b34801561081d57600080fd5b50610838600480360381019061083391906136f0565b6118bf565b005b34801561084657600080fd5b50610861600480360381019061085c91906135a4565b6119af565b60405161086e91906135ff565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190613646565b6119cd565b005b3480156108ac57600080fd5b506108b5611a7f565b6040516108c29190613682565b60405180910390f35b3480156108d757600080fd5b506108e0611a85565b6040516108ed9190613682565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906137eb565b611a8b565b60405161092a9190613682565b60405180910390f35b34801561093f57600080fd5b5061095a600480360381019061095591906136f0565b611b12565b005b34801561096857600080fd5b50610971611c02565b60405161097e91906135ff565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a991906137be565b611c15565b6040516109bb9190613682565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e691906137be565b611c4c565b005b3480156109f957600080fd5b50610a02611d2e565b604051610a0f91906137a3565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613767565b611d54565b005b348015610a4d57600080fd5b50610a686004803603810190610a6391906137be565b611f16565b604051610a759190613682565b60405180910390f35b348015610a8a57600080fd5b50610a93611f4d565b604051610aa09190613682565b60405180910390f35b606060068054610ab89061385a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae49061385a565b8015610b315780601f10610b0657610100808354040283529160200191610b31565b820191906000526020600020905b815481529060010190602001808311610b1457829003601f168201915b5050505050905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b75610b6e612018565b8484612020565b6001905092915050565b610b87612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906138d8565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000600954905090565b600d5481565b6000610c4e8484846121eb565b610d0f84610c5a612018565b610d0a856040518060600160405280602981526020016143a060299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc0612018565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b612020565b600190509392505050565b601360009054906101000a900460ff1681565b610d35612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db9906138d8565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600860009054906101000a900460ff16905090565b6000610edd610e41612018565b84610ed88560026000610e52612018565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b612020565b6001905092915050565b60036020528060005260406000206000915054906101000a900460ff1681565b610f0f612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f93906138d8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610fe2573d6000803e3d6000fd5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611037612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906138d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60115481565b60155481565b60056020528060005260406000206000915054906101000a900460ff1681565b6111e2612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906138d8565b60405180910390fd5b611286601054600954611f5390919063ffffffff16565b8110156112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf9061396a565b60405180910390fd5b80600e8190555050565b601360019054906101000a900460ff1681565b6112ed612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611371906138d8565b60405180910390fd5b601360029054906101000a900460ff16156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c1906139d6565b60405180910390fd5b6001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001601360006101000a81548160ff02191690831515021790555042601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611455612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d9906138d8565b60405180910390fd5b806014819055506115126064611504600f601054611f9d90919063ffffffff16565b611f5390919063ffffffff16565b811115611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b90613a42565b60405180910390fd5b50565b6060600780546115669061385a565b80601f01602080910402602001604051908101604052809291908181526020018280546115929061385a565b80156115df5780601f106115b4576101008083540402835291602001916115df565b820191906000526020600020905b8154815290600101906020018083116115c257829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600e5481565b611617612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b906138d8565b60405180910390fd5b806015819055506116d460646116c6600f601054611f9d90919063ffffffff16565b611f5390919063ffffffff16565b811115611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90613a42565b60405180910390fd5b50565b60006117dc611726612018565b846117d7856040518060600160405280602981526020016143776029913960026000611750612018565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b612020565b6001905092915050565b6117ee612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611872906138d8565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118c7612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b906138d8565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006119c36119bc612018565b84846121eb565b6001905092915050565b6119d5612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a59906138d8565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b60125481565b600f5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b1a612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e906138d8565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360029054906101000a900460ff1681565b600080611c41601054611c3360145486611f9d90919063ffffffff16565b611f5390919063ffffffff16565b905080915050919050565b611c54612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd8906138d8565b60405180910390fd5b60008111611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b90613aae565b60405180910390fd5b80600d8190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d5c612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de0906138d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5090613b40565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080611f42601054611f3460155486611f9d90919063ffffffff16565b611f5390919063ffffffff16565b905080915050919050565b60105481565b6000611f9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612710565b905092915050565b600080831415611fb05760009050612012565b60008284611fbe9190613b8f565b9050828482611fcd9190613c18565b1461200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490613cbb565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208790613d4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790613ddf565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121de9190613682565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613e71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613f03565b60405180910390fd5b6000811161230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590613f95565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123b25750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124b857601360029054906101000a900460ff166124b7578273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561247757508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad90614001565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661256957600e546125278261251985610fe6565b6126b290919063ffffffff16565b1115612568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f9061406d565b60405180910390fd5b5b6125738383612773565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061261a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126325750601360019054906101000a900460ff16155b1561263c57600090505b61264884848484612970565b50505050565b6000838311158290612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d919061346f565b60405180910390fd5b50600083856126a5919061408d565b9050809150509392505050565b60008082846126c191906140c1565b905083811015612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd90614163565b60405180910390fd5b8091505092915050565b60008083118290612757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274e919061346f565b60405180910390fd5b50600083856127669190613c18565b9050809150509392505050565b600061277e30610fe6565b90506000600d5482101590508080156127e55750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127fd5750601360009054906101000a900460ff165b801561288e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561288c5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b1561296a576128c230600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54612020565b6128f0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d546130a8565b6000479050600081111561296857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612966573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156129ca5750805b15612c80576000806011546012546129e291906140c1565b42108015612a3e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15612a8857612a6c601054612a5e600f5487611f9d90919063ffffffff16565b611f5390919063ffffffff16565b9150612a81828561328e90919063ffffffff16565b9050612aa9565b612a9184611c15565b9150612aa6828561328e90919063ffffffff16565b90505b612b32846040518060400160405280601c81526020017f244665656c723a20696e73756666696369656e742062616c616e636500000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bc781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c679190613682565b60405180910390a3612c7986836132d8565b50506130a2565b8273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612cda5750805b15612eda576000612cea83611f16565b90506000612d01828561328e90919063ffffffff16565b9050612d8c846040518060400160405280601c81526020017f244665656c723a20696e73756666696369656e742062616c616e636500000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ec19190613682565b60405180910390a3612ed386836132d8565b50506130a1565b612f63826040518060400160405280601c81526020017f244665656c723a20696e73756666696369656e742062616c616e636500000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130989190613682565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff8111156130ca576130c9614183565b5b6040519080825280602002602001820160405280156130f85781602001602082028036833780820191505090505b50905030816000815181106131105761310f6141b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b991906141f6565b816001815181106131cd576131cc6141b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c4261323691906140c1565b6040518663ffffffff1660e01b815260040161325695949392919061431c565b600060405180830381600087803b15801561327057600080fd5b505af1158015613284573d6000803e3d6000fd5b5050505050505050565b60006132d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061264e565b905092915050565b61332a81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133ca9190613682565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134105780820151818401526020810190506133f5565b8381111561341f576000848401525b50505050565b6000601f19601f8301169050919050565b6000613441826133d6565b61344b81856133e1565b935061345b8185602086016133f2565b61346481613425565b840191505092915050565b600060208201905081810360008301526134898184613436565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006134d66134d16134cc84613491565b6134b1565b613491565b9050919050565b60006134e8826134bb565b9050919050565b60006134fa826134dd565b9050919050565b61350a816134ef565b82525050565b60006020820190506135256000830184613501565b92915050565b600080fd5b600061353b82613491565b9050919050565b61354b81613530565b811461355657600080fd5b50565b60008135905061356881613542565b92915050565b6000819050919050565b6135818161356e565b811461358c57600080fd5b50565b60008135905061359e81613578565b92915050565b600080604083850312156135bb576135ba61352b565b5b60006135c985828601613559565b92505060206135da8582860161358f565b9150509250929050565b60008115159050919050565b6135f9816135e4565b82525050565b600060208201905061361460008301846135f0565b92915050565b613623816135e4565b811461362e57600080fd5b50565b6000813590506136408161361a565b92915050565b60006020828403121561365c5761365b61352b565b5b600061366a84828501613631565b91505092915050565b61367c8161356e565b82525050565b60006020820190506136976000830184613673565b92915050565b6000806000606084860312156136b6576136b561352b565b5b60006136c486828701613559565b93505060206136d586828701613559565b92505060406136e68682870161358f565b9150509250925092565b600080604083850312156137075761370661352b565b5b600061371585828601613559565b925050602061372685828601613631565b9150509250929050565b600060ff82169050919050565b61374681613730565b82525050565b6000602082019050613761600083018461373d565b92915050565b60006020828403121561377d5761377c61352b565b5b600061378b84828501613559565b91505092915050565b61379d81613530565b82525050565b60006020820190506137b86000830184613794565b92915050565b6000602082840312156137d4576137d361352b565b5b60006137e28482850161358f565b91505092915050565b600080604083850312156138025761380161352b565b5b600061381085828601613559565b925050602061382185828601613559565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061387257607f821691505b602082108114156138865761388561382b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138c26020836133e1565b91506138cd8261388c565b602082019050919050565b600060208201905081810360008301526138f1816138b5565b9050919050565b7f244665656c723a2073686f756c642062652067726561746572207468616e203060008201527f2e31250000000000000000000000000000000000000000000000000000000000602082015250565b60006139546023836133e1565b915061395f826138f8565b604082019050919050565b6000602082019050818103600083015261398381613947565b9050919050565b7f244665656c723a20616c726561647920656e61626c6564000000000000000000600082015250565b60006139c06017836133e1565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f244665656c723a2063616e2774206265206d6f7265207468616e203135250000600082015250565b6000613a2c601e836133e1565b9150613a37826139f6565b602082019050919050565b60006020820190508181036000830152613a5b81613a1f565b9050919050565b7f244665656c723a2063616e277420626520300000000000000000000000000000600082015250565b6000613a986012836133e1565b9150613aa382613a62565b602082019050919050565b60006020820190508181036000830152613ac781613a8b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b2a6026836133e1565b9150613b3582613ace565b604082019050919050565b60006020820190508181036000830152613b5981613b1d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b9a8261356e565b9150613ba58361356e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bde57613bdd613b60565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c238261356e565b9150613c2e8361356e565b925082613c3e57613c3d613be9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ca56021836133e1565b9150613cb082613c49565b604082019050919050565b60006020820190508181036000830152613cd481613c98565b9050919050565b7f244665656c723a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d376025836133e1565b9150613d4282613cdb565b604082019050919050565b60006020820190508181036000830152613d6681613d2a565b9050919050565b7f244665656c723a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613dc96023836133e1565b9150613dd482613d6d565b604082019050919050565b60006020820190508181036000830152613df881613dbc565b9050919050565b7f244665656c723a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e5b6026836133e1565b9150613e6682613dff565b604082019050919050565b60006020820190508181036000830152613e8a81613e4e565b9050919050565b7f244665656c723a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613eed6024836133e1565b9150613ef882613e91565b604082019050919050565b60006020820190508181036000830152613f1c81613ee0565b9050919050565b7f244665656c723a20416d6f756e74206d7573742062652067726561746572207460008201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b6000613f7f6028836133e1565b9150613f8a82613f23565b604082019050919050565b60006020820190508181036000830152613fae81613f72565b9050919050565b7f244665656c723a2074726164696e672069732064697361626c65000000000000600082015250565b6000613feb601a836133e1565b9150613ff682613fb5565b602082019050919050565b6000602082019050818103600083015261401a81613fde565b9050919050565b7f244665656c723a206d617820686f6c64206c696d697420657863656564730000600082015250565b6000614057601e836133e1565b915061406282614021565b602082019050919050565b600060208201905081810360008301526140868161404a565b9050919050565b60006140988261356e565b91506140a38361356e565b9250828210156140b6576140b5613b60565b5b828203905092915050565b60006140cc8261356e565b91506140d78361356e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561410c5761410b613b60565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061414d601b836133e1565b915061415882614117565b602082019050919050565b6000602082019050818103600083015261417c81614140565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506141f081613542565b92915050565b60006020828403121561420c5761420b61352b565b5b600061421a848285016141e1565b91505092915050565b6000819050919050565b600061424861424361423e84614223565b6134b1565b61356e565b9050919050565b6142588161422d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61429381613530565b82525050565b60006142a5838361428a565b60208301905092915050565b6000602082019050919050565b60006142c98261425e565b6142d38185614269565b93506142de8361427a565b8060005b8381101561430f5781516142f68882614299565b9750614301836142b1565b9250506001810190506142e2565b5085935050505092915050565b600060a0820190506143316000830188613673565b61433e602083018761424f565b818103604083015261435081866142be565b905061435f6060830185613794565b61436c6080830184613673565b969550505050505056fe244665656c723a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726f244665656c723a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b5cce5746ac48eefb291369bde2c6a662d02394d6bb9f49d21b3fcb4fcb673bd64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102765760003560e01c80638a8c523c1161014f578063b0bc2a2d116100c1578063ed4214291161007a578063ed42142914610987578063f097ea1a146109c4578063f242ab41146109ed578063f2fde38b14610a18578063f4b3dbc314610a41578063fe6f1b0514610a7e5761027d565b8063b0bc2a2d14610877578063bf56b371146108a0578063bf862391146108cb578063dd62ed3e146108f6578063ea5b9e8514610933578063ec44acf21461095c5761027d565b80639a36dfa1116101135780639a36dfa114610757578063a2b8a94714610782578063a457c2d7146107ab578063a643c1a0146107e8578063a7c29b4014610811578063a9059cbb1461083a5761027d565b80638a8c523c146106845780638da5cb5b1461069b578063950eb5d5146106c657806395d89b41146106ef57806399b102b51461071a5761027d565b80635342acb4116101e85780637c6a9a9c116101ac5780637c6a9a9c146105725780637d99c66d1461059d578063844af78e146105c857806384ea21bc146105f35780638756aabd14610630578063879dd3c5146106595761027d565b80635342acb41461048d578063679a3c59146104ca57806370a08231146104f3578063715018a61461053057806375f0a874146105475761027d565b80631884f1e61161023a5780631884f1e61461036957806323b872dd14610394578063267fb987146103d15780632d129390146103fc578063313ce5671461042557806339509351146104505761027d565b806306fdde03146102825780630758d924146102ad578063095ea7b3146102d85780630a2d140c1461031557806318160ddd1461033e5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610aa9565b6040516102a4919061346f565b60405180910390f35b3480156102b957600080fd5b506102c2610b3b565b6040516102cf9190613510565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906135a4565b610b61565b60405161030c91906135ff565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190613646565b610b7f565b005b34801561034a57600080fd5b50610353610c31565b6040516103609190613682565b60405180910390f35b34801561037557600080fd5b5061037e610c3b565b60405161038b9190613682565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b6919061369d565b610c41565b6040516103c891906135ff565b60405180910390f35b3480156103dd57600080fd5b506103e6610d1a565b6040516103f391906135ff565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e91906136f0565b610d2d565b005b34801561043157600080fd5b5061043a610e1d565b604051610447919061374c565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906135a4565b610e34565b60405161048491906135ff565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613767565b610ee7565b6040516104c191906135ff565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec9190613767565b610f07565b005b3480156104ff57600080fd5b5061051a60048036038101906105159190613767565b610fe6565b6040516105279190613682565b60405180910390f35b34801561053c57600080fd5b5061054561102f565b005b34801561055357600080fd5b5061055c611182565b60405161056991906137a3565b60405180910390f35b34801561057e57600080fd5b506105876111a8565b6040516105949190613682565b60405180910390f35b3480156105a957600080fd5b506105b26111ae565b6040516105bf9190613682565b60405180910390f35b3480156105d457600080fd5b506105dd6111b4565b6040516105ea9190613682565b60405180910390f35b3480156105ff57600080fd5b5061061a60048036038101906106159190613767565b6111ba565b60405161062791906135ff565b60405180910390f35b34801561063c57600080fd5b50610657600480360381019061065291906137be565b6111da565b005b34801561066557600080fd5b5061066e6112d2565b60405161067b91906135ff565b60405180910390f35b34801561069057600080fd5b506106996112e5565b005b3480156106a757600080fd5b506106b0611424565b6040516106bd91906137a3565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e891906137be565b61144d565b005b3480156106fb57600080fd5b50610704611557565b604051610711919061346f565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c9190613767565b6115e9565b60405161074e91906135ff565b60405180910390f35b34801561076357600080fd5b5061076c611609565b6040516107799190613682565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a491906137be565b61160f565b005b3480156107b757600080fd5b506107d260048036038101906107cd91906135a4565b611719565b6040516107df91906135ff565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190613767565b6117e6565b005b34801561081d57600080fd5b50610838600480360381019061083391906136f0565b6118bf565b005b34801561084657600080fd5b50610861600480360381019061085c91906135a4565b6119af565b60405161086e91906135ff565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190613646565b6119cd565b005b3480156108ac57600080fd5b506108b5611a7f565b6040516108c29190613682565b60405180910390f35b3480156108d757600080fd5b506108e0611a85565b6040516108ed9190613682565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906137eb565b611a8b565b60405161092a9190613682565b60405180910390f35b34801561093f57600080fd5b5061095a600480360381019061095591906136f0565b611b12565b005b34801561096857600080fd5b50610971611c02565b60405161097e91906135ff565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a991906137be565b611c15565b6040516109bb9190613682565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e691906137be565b611c4c565b005b3480156109f957600080fd5b50610a02611d2e565b604051610a0f91906137a3565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613767565b611d54565b005b348015610a4d57600080fd5b50610a686004803603810190610a6391906137be565b611f16565b604051610a759190613682565b60405180910390f35b348015610a8a57600080fd5b50610a93611f4d565b604051610aa09190613682565b60405180910390f35b606060068054610ab89061385a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae49061385a565b8015610b315780601f10610b0657610100808354040283529160200191610b31565b820191906000526020600020905b815481529060010190602001808311610b1457829003601f168201915b5050505050905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b75610b6e612018565b8484612020565b6001905092915050565b610b87612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906138d8565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000600954905090565b600d5481565b6000610c4e8484846121eb565b610d0f84610c5a612018565b610d0a856040518060600160405280602981526020016143a060299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc0612018565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b612020565b600190509392505050565b601360009054906101000a900460ff1681565b610d35612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db9906138d8565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600860009054906101000a900460ff16905090565b6000610edd610e41612018565b84610ed88560026000610e52612018565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b612020565b6001905092915050565b60036020528060005260406000206000915054906101000a900460ff1681565b610f0f612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f93906138d8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610fe2573d6000803e3d6000fd5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611037612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb906138d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60115481565b60155481565b60056020528060005260406000206000915054906101000a900460ff1681565b6111e2612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906138d8565b60405180910390fd5b611286601054600954611f5390919063ffffffff16565b8110156112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf9061396a565b60405180910390fd5b80600e8190555050565b601360019054906101000a900460ff1681565b6112ed612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611371906138d8565b60405180910390fd5b601360029054906101000a900460ff16156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c1906139d6565b60405180910390fd5b6001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001601360006101000a81548160ff02191690831515021790555042601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611455612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d9906138d8565b60405180910390fd5b806014819055506115126064611504600f601054611f9d90919063ffffffff16565b611f5390919063ffffffff16565b811115611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b90613a42565b60405180910390fd5b50565b6060600780546115669061385a565b80601f01602080910402602001604051908101604052809291908181526020018280546115929061385a565b80156115df5780601f106115b4576101008083540402835291602001916115df565b820191906000526020600020905b8154815290600101906020018083116115c257829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600e5481565b611617612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b906138d8565b60405180910390fd5b806015819055506116d460646116c6600f601054611f9d90919063ffffffff16565b611f5390919063ffffffff16565b811115611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90613a42565b60405180910390fd5b50565b60006117dc611726612018565b846117d7856040518060600160405280602981526020016143776029913960026000611750612018565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b612020565b6001905092915050565b6117ee612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611872906138d8565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118c7612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b906138d8565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006119c36119bc612018565b84846121eb565b6001905092915050565b6119d5612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a59906138d8565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b60125481565b600f5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b1a612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e906138d8565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360029054906101000a900460ff1681565b600080611c41601054611c3360145486611f9d90919063ffffffff16565b611f5390919063ffffffff16565b905080915050919050565b611c54612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd8906138d8565b60405180910390fd5b60008111611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b90613aae565b60405180910390fd5b80600d8190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d5c612018565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de0906138d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5090613b40565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080611f42601054611f3460155486611f9d90919063ffffffff16565b611f5390919063ffffffff16565b905080915050919050565b60105481565b6000611f9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612710565b905092915050565b600080831415611fb05760009050612012565b60008284611fbe9190613b8f565b9050828482611fcd9190613c18565b1461200d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200490613cbb565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208790613d4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790613ddf565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121de9190613682565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613e71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613f03565b60405180910390fd5b6000811161230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590613f95565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123b25750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124b857601360029054906101000a900460ff166124b7578273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561247757508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad90614001565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661256957600e546125278261251985610fe6565b6126b290919063ffffffff16565b1115612568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f9061406d565b60405180910390fd5b5b6125738383612773565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061261a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126325750601360019054906101000a900460ff16155b1561263c57600090505b61264884848484612970565b50505050565b6000838311158290612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d919061346f565b60405180910390fd5b50600083856126a5919061408d565b9050809150509392505050565b60008082846126c191906140c1565b905083811015612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd90614163565b60405180910390fd5b8091505092915050565b60008083118290612757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274e919061346f565b60405180910390fd5b50600083856127669190613c18565b9050809150509392505050565b600061277e30610fe6565b90506000600d5482101590508080156127e55750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127fd5750601360009054906101000a900460ff165b801561288e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561288c5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b1561296a576128c230600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54612020565b6128f0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d546130a8565b6000479050600081111561296857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612966573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156129ca5750805b15612c80576000806011546012546129e291906140c1565b42108015612a3e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15612a8857612a6c601054612a5e600f5487611f9d90919063ffffffff16565b611f5390919063ffffffff16565b9150612a81828561328e90919063ffffffff16565b9050612aa9565b612a9184611c15565b9150612aa6828561328e90919063ffffffff16565b90505b612b32846040518060400160405280601c81526020017f244665656c723a20696e73756666696369656e742062616c616e636500000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bc781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c679190613682565b60405180910390a3612c7986836132d8565b50506130a2565b8273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612cda5750805b15612eda576000612cea83611f16565b90506000612d01828561328e90919063ffffffff16565b9050612d8c846040518060400160405280601c81526020017f244665656c723a20696e73756666696369656e742062616c616e636500000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ec19190613682565b60405180910390a3612ed386836132d8565b50506130a1565b612f63826040518060400160405280601c81526020017f244665656c723a20696e73756666696369656e742062616c616e636500000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130989190613682565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff8111156130ca576130c9614183565b5b6040519080825280602002602001820160405280156130f85781602001602082028036833780820191505090505b50905030816000815181106131105761310f6141b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b991906141f6565b816001815181106131cd576131cc6141b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c4261323691906140c1565b6040518663ffffffff1660e01b815260040161325695949392919061431c565b600060405180830381600087803b15801561327057600080fd5b505af1158015613284573d6000803e3d6000fd5b5050505050505050565b60006132d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061264e565b905092915050565b61332a81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b290919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133ca9190613682565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134105780820151818401526020810190506133f5565b8381111561341f576000848401525b50505050565b6000601f19601f8301169050919050565b6000613441826133d6565b61344b81856133e1565b935061345b8185602086016133f2565b61346481613425565b840191505092915050565b600060208201905081810360008301526134898184613436565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006134d66134d16134cc84613491565b6134b1565b613491565b9050919050565b60006134e8826134bb565b9050919050565b60006134fa826134dd565b9050919050565b61350a816134ef565b82525050565b60006020820190506135256000830184613501565b92915050565b600080fd5b600061353b82613491565b9050919050565b61354b81613530565b811461355657600080fd5b50565b60008135905061356881613542565b92915050565b6000819050919050565b6135818161356e565b811461358c57600080fd5b50565b60008135905061359e81613578565b92915050565b600080604083850312156135bb576135ba61352b565b5b60006135c985828601613559565b92505060206135da8582860161358f565b9150509250929050565b60008115159050919050565b6135f9816135e4565b82525050565b600060208201905061361460008301846135f0565b92915050565b613623816135e4565b811461362e57600080fd5b50565b6000813590506136408161361a565b92915050565b60006020828403121561365c5761365b61352b565b5b600061366a84828501613631565b91505092915050565b61367c8161356e565b82525050565b60006020820190506136976000830184613673565b92915050565b6000806000606084860312156136b6576136b561352b565b5b60006136c486828701613559565b93505060206136d586828701613559565b92505060406136e68682870161358f565b9150509250925092565b600080604083850312156137075761370661352b565b5b600061371585828601613559565b925050602061372685828601613631565b9150509250929050565b600060ff82169050919050565b61374681613730565b82525050565b6000602082019050613761600083018461373d565b92915050565b60006020828403121561377d5761377c61352b565b5b600061378b84828501613559565b91505092915050565b61379d81613530565b82525050565b60006020820190506137b86000830184613794565b92915050565b6000602082840312156137d4576137d361352b565b5b60006137e28482850161358f565b91505092915050565b600080604083850312156138025761380161352b565b5b600061381085828601613559565b925050602061382185828601613559565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061387257607f821691505b602082108114156138865761388561382b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138c26020836133e1565b91506138cd8261388c565b602082019050919050565b600060208201905081810360008301526138f1816138b5565b9050919050565b7f244665656c723a2073686f756c642062652067726561746572207468616e203060008201527f2e31250000000000000000000000000000000000000000000000000000000000602082015250565b60006139546023836133e1565b915061395f826138f8565b604082019050919050565b6000602082019050818103600083015261398381613947565b9050919050565b7f244665656c723a20616c726561647920656e61626c6564000000000000000000600082015250565b60006139c06017836133e1565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f244665656c723a2063616e2774206265206d6f7265207468616e203135250000600082015250565b6000613a2c601e836133e1565b9150613a37826139f6565b602082019050919050565b60006020820190508181036000830152613a5b81613a1f565b9050919050565b7f244665656c723a2063616e277420626520300000000000000000000000000000600082015250565b6000613a986012836133e1565b9150613aa382613a62565b602082019050919050565b60006020820190508181036000830152613ac781613a8b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b2a6026836133e1565b9150613b3582613ace565b604082019050919050565b60006020820190508181036000830152613b5981613b1d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b9a8261356e565b9150613ba58361356e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bde57613bdd613b60565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c238261356e565b9150613c2e8361356e565b925082613c3e57613c3d613be9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ca56021836133e1565b9150613cb082613c49565b604082019050919050565b60006020820190508181036000830152613cd481613c98565b9050919050565b7f244665656c723a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d376025836133e1565b9150613d4282613cdb565b604082019050919050565b60006020820190508181036000830152613d6681613d2a565b9050919050565b7f244665656c723a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613dc96023836133e1565b9150613dd482613d6d565b604082019050919050565b60006020820190508181036000830152613df881613dbc565b9050919050565b7f244665656c723a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e5b6026836133e1565b9150613e6682613dff565b604082019050919050565b60006020820190508181036000830152613e8a81613e4e565b9050919050565b7f244665656c723a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613eed6024836133e1565b9150613ef882613e91565b604082019050919050565b60006020820190508181036000830152613f1c81613ee0565b9050919050565b7f244665656c723a20416d6f756e74206d7573742062652067726561746572207460008201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b6000613f7f6028836133e1565b9150613f8a82613f23565b604082019050919050565b60006020820190508181036000830152613fae81613f72565b9050919050565b7f244665656c723a2074726164696e672069732064697361626c65000000000000600082015250565b6000613feb601a836133e1565b9150613ff682613fb5565b602082019050919050565b6000602082019050818103600083015261401a81613fde565b9050919050565b7f244665656c723a206d617820686f6c64206c696d697420657863656564730000600082015250565b6000614057601e836133e1565b915061406282614021565b602082019050919050565b600060208201905081810360008301526140868161404a565b9050919050565b60006140988261356e565b91506140a38361356e565b9250828210156140b6576140b5613b60565b5b828203905092915050565b60006140cc8261356e565b91506140d78361356e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561410c5761410b613b60565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061414d601b836133e1565b915061415882614117565b602082019050919050565b6000602082019050818103600083015261417c81614140565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506141f081613542565b92915050565b60006020828403121561420c5761420b61352b565b5b600061421a848285016141e1565b91505092915050565b6000819050919050565b600061424861424361423e84614223565b6134b1565b61356e565b9050919050565b6142588161422d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61429381613530565b82525050565b60006142a5838361428a565b60208301905092915050565b6000602082019050919050565b60006142c98261425e565b6142d38185614269565b93506142de8361427a565b8060005b8381101561430f5781516142f68882614299565b9750614301836142b1565b9250506001810190506142e2565b5085935050505092915050565b600060a0820190506143316000830188613673565b61433e602083018761424f565b818103604083015261435081866142be565b905061435f6060830185613794565b61436c6080830184613673565b969550505050505056fe244665656c723a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726f244665656c723a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b5cce5746ac48eefb291369bde2c6a662d02394d6bb9f49d21b3fcb4fcb673bd64736f6c634300080a0033

Deployed Bytecode Sourcemap

3138:12780:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6150:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3813:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7038:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9872:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6427:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3915:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7232:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4285:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8733:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6336:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7687:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3356:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10460:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6535:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2685:157;;;;;;;;;;;;;:::i;:::-;;3876:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4470:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4205:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4564:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3471:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4349:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10221:231;;;;;;;;;;;;;:::i;:::-;;2471:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9330:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6241:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3412:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4023:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9600:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7988:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10090:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8560:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6662:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9983:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4251:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4128:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6862:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8393:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4399:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10597:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8914:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3847:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2850:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10783:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4162:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6150:83;6187:13;6220:5;6213:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6150:83;:::o;3813:27::-;;;;;;;;;;;;;:::o;7038:186::-;7138:4;7155:39;7164:12;:10;:12::i;:::-;7178:7;7187:6;7155:8;:39::i;:::-;7212:4;7205:11;;7038:186;;;;:::o;9872:103::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9961:6:::1;9944:14;;:23;;;;;;;;;;;;;;;;;;9872:103:::0;:::o;6427:100::-;6480:7;6507:12;;6500:19;;6427:100;:::o;3915:53::-;;;;:::o;7232:447::-;7364:4;7381:36;7391:6;7399:9;7410:6;7381:9;:36::i;:::-;7428:221;7451:6;7472:12;:10;:12::i;:::-;7499:139;7555:6;7499:139;;;;;;;;;;;;;;;;;:11;:19;7511:6;7499:19;;;;;;;;;;;;;;;:33;7519:12;:10;:12::i;:::-;7499:33;;;;;;;;;;;;;;;;:37;;:139;;;;;:::i;:::-;7428:8;:221::i;:::-;7667:4;7660:11;;7232:447;;;;;:::o;4285:26::-;;;;;;;;;;;;;:::o;8733:173::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8893:5:::1;8857:24;:33;8882:7;8857:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;8733:173:::0;;:::o;6336:83::-;6377:5;6402:9;;;;;;;;;;;6395:16;;6336:83;:::o;7687:293::-;7800:4;7817:133;7840:12;:10;:12::i;:::-;7867:7;7889:50;7928:10;7889:11;:25;7901:12;:10;:12::i;:::-;7889:25;;;;;;;;;;;;;;;:34;7915:7;7889:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7817:8;:133::i;:::-;7968:4;7961:11;;7687:293;;;;:::o;3356:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10460:129::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10539:9:::1;10531:27;;:50;10559:21;10531:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10460:129:::0;:::o;6535:119::-;6601:7;6628:9;:18;6638:7;6628:18;;;;;;;;;;;;;;;;6621:25;;6535:119;;;:::o;2685:157::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2792:1:::1;2755:40;;2776:6;::::0;::::1;;;;;;;;2755:40;;;;;;;;;;;;2831:1;2806:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2685:157::o:0;3876:30::-;;;;;;;;;;;;;:::o;4470:40::-;;;;:::o;4205:39::-;;;;:::o;4564:41::-;;;;:::o;3471:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;9081:241::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9186:32:::1;9203:14;;9186:12;;:16;;:32;;;;:::i;:::-;9175:7;:43;;9153:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;9307:7;9292:12;:22;;;;9081:241:::0;:::o;4349:22::-;;;;;;;;;;;;;:::o;10221:231::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10285:7:::1;;;;;;;;;;;10284:8;10276:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10341:4;10331:7;;:14;;;;;;;;;;;;;;;;;;10369:4;10356:10;;:17;;;;;;;;;;;;;;;;;;10401:4;10384:14;;:21;;;;;;;;;;;;;;;;;;10429:15;10416:10;:28;;;;10221:231::o:0;2471:79::-;2509:7;2536:6;;;;;;;;;;;2529:13;;2471:79;:::o;9330:262::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9432:13:::1;9409:20;:36;;;;9495:31;9522:3;9495:22;9514:2;9495:14;;:18;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;9478:13;:48;;9456:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;9330:262:::0;:::o;6241:87::-;6280:13;6313:7;6306:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6241:87;:::o;3412:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4023:58::-;;;;:::o;9600:264::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9704:13:::1;9680:21;:37;;;;9767:31;9794:3;9767:22;9786:2;9767:14;;:18;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;9750:13;:48;;9728:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;9600:264:::0;:::o;7988:397::-;8106:4;8123:232;8146:12;:10;:12::i;:::-;8173:7;8195:149;8252:15;8195:149;;;;;;;;;;;;;;;;;:11;:25;8207:12;:10;:12::i;:::-;8195:25;;;;;;;;;;;;;;;:34;8221:7;8195:34;;;;;;;;;;;;;;;;:38;;:149;;;;;:::i;:::-;8123:8;:232::i;:::-;8373:4;8366:11;;7988:397;;;;:::o;10090:123::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10189:16:::1;10171:15;;:34;;;;;;;;;;;;;;;;;;10090:123:::0;:::o;8560:165::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8712:5:::1;8680:20;:29;8701:7;8680:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8560:165:::0;;:::o;6662:192::-;6765:4;6782:42;6792:12;:10;:12::i;:::-;6806:9;6817:6;6782:9;:42::i;:::-;6842:4;6835:11;;6662:192;;;;:::o;9983:99::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10068:6:::1;10055:10;;:19;;;;;;;;;;;;;;;;;;9983:99:::0;:::o;4251:25::-;;;;:::o;4128:27::-;;;;:::o;6862:168::-;6968:7;6995:11;:18;7007:5;6995:18;;;;;;;;;;;;;;;:27;7014:7;6995:27;;;;;;;;;;;;;;;;6988:34;;6862:168;;;;:::o;8393:159::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8539:5:::1;8510:17;:26;8528:7;8510:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8393:159:::0;;:::o;4399:19::-;;;;;;;;;;;;;:::o;10597:178::-;10660:7;10680:11;10694:52;10731:14;;10694:32;10705:20;;10694:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;10680:66;;10764:3;10757:10;;;10597:178;;;:::o;8914:159::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9006:1:::1;8996:7;:11;8988:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9058:7;9041:14;:24;;;;8914:159:::0;:::o;3847:22::-;;;;;;;;;;;;;:::o;2850:281::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2973:1:::1;2953:22;;:8;:22;;;;2931:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3086:8;3057:38;;3078:6;::::0;::::1;;;;;;;;3057:38;;;;;;;;;;;;3115:8;3106:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2850:281:::0;:::o;10783:180::-;10847:7;10867:11;10881:53;10919:14;;10881:33;10892:21;;10881:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;10867:67;;10952:3;10945:10;;;10783:180;;;:::o;4162:36::-;;;;:::o;17705:132::-;17763:7;17790:39;17794:1;17797;17790:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;17783:46;;17705:132;;;;:::o;17226:471::-;17284:7;17534:1;17529;:6;17525:47;;;17559:1;17552:8;;;;17525:47;17584:9;17600:1;17596;:5;;;;:::i;:::-;17584:17;;17629:1;17624;17620;:5;;;;:::i;:::-;:10;17612:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17688:1;17681:8;;;17226:471;;;;;:::o;1807:115::-;1860:15;1903:10;1888:26;;1807:115;:::o;10971:339::-;11081:1;11064:19;;:5;:19;;;;11056:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11163:1;11144:21;;:7;:21;;;;11136:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11248:6;11218:11;:18;11230:5;11218:18;;;;;;;;;;;;;;;:27;11237:7;11218:27;;;;;;;;;;;;;;;:36;;;;11286:7;11270:32;;11279:5;11270:32;;;11295:6;11270:32;;;;;;:::i;:::-;;;;;;;;10971:339;;;:::o;11318:1330::-;11422:1;11406:18;;:4;:18;;;;11398:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11500:1;11486:16;;:2;:16;;;;11478:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11571:1;11562:6;:10;11554:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11635:20;:26;11656:4;11635:26;;;;;;;;;;;;;;;;;;;;;;;;;11634:27;:56;;;;;11666:20;:24;11687:2;11666:24;;;;;;;;;;;;;;;;;;;;;;;;;11665:25;11634:56;11630:313;;;11756:7;;;;;;;;;;;11751:181;;11825:4;11814:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;11844:2;11833:13;;:7;;;;;;;;;;;:13;;;;11814:32;11784:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;11751:181;11630:313;11960:24;:28;11985:2;11960:28;;;;;;;;;;;;;;;;;;;;;;;;;11955:195;;12060:12;;12031:25;12049:6;12031:13;12041:2;12031:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;12005:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;11955:195;12191:30;12212:4;12218:2;12191:20;:30::i;:::-;12295:12;12310:4;12295:19;;12414:17;:23;12432:4;12414:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;12441:17;:21;12459:2;12441:21;;;;;;;;;;;;;;;;;;;;;;;;;12414:48;:63;;;;12467:10;;;;;;;;;;;12466:11;12414:63;12410:111;;;12504:5;12494:15;;12410:111;12599:41;12614:4;12620:2;12624:6;12632:7;12599:14;:41::i;:::-;11387:1261;11318:1330;;;:::o;16992:226::-;17112:7;17145:1;17140;:6;;17148:12;17132:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17172:9;17188:1;17184;:5;;;;:::i;:::-;17172:17;;17209:1;17202:8;;;16992:226;;;;;:::o;16659:181::-;16717:7;16737:9;16753:1;16749;:5;;;;:::i;:::-;16737:17;;16778:1;16773;:6;;16765:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16831:1;16824:8;;;16659:181;;;;:::o;17845:312::-;17965:7;17997:1;17993;:5;18000:12;17985:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18024:9;18040:1;18036;:5;;;;:::i;:::-;18024:17;;18148:1;18141:8;;;17845:312;;;;;:::o;14777:1138::-;15130:28;15161:24;15179:4;15161:9;:24::i;:::-;15130:55;;15198:15;15240:14;;15216:20;:38;;15198:56;;15285:10;:42;;;;;15320:7;;;;;;;;;;;15312:15;;:4;:15;;;;15285:42;:73;;;;;15344:14;;;;;;;;;;;15285:73;:131;;;;;15393:4;15377:21;;:4;:21;;;:38;;;;;15408:7;;;;;;;;;;;15402:13;;:2;:13;;;15377:38;15375:41;15285:131;15267:641;;;15491:59;15508:4;15523:9;;;;;;;;;;;15535:14;;15491:8;:59::i;:::-;15617:58;15648:9;;;;;;;;;;;15660:14;;15617:22;:58::i;:::-;15692:23;15718:21;15692:47;;15826:1;15808:15;:19;15804:92;;;15854:15;;;;;;;;;;;15846:33;;:50;15880:15;15846:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15804:92;15443:465;15267:641;14841:1074;;14777:1138;;:::o;12729:1831::-;12895:6;12884:17;;:7;;;;;;;;;;;:17;;;:28;;;;;12905:7;12884:28;12880:1673;;;12929:14;12958:23;13073:11;;13060:10;;:24;;;;:::i;:::-;13042:15;:42;:91;;;;;13123:9;;;;;;;;;;;13105:28;;:6;:28;;;;13042:91;13020:395;;;13177:38;13200:14;;13177:18;13188:6;;13177;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;13168:47;;13252:18;13263:6;13252;:10;;:18;;;;:::i;:::-;13234:36;;13020:395;;;13320:24;13337:6;13320:16;:24::i;:::-;13311:33;;13381:18;13392:6;13381;:10;;:18;;;;:::i;:::-;13363:36;;13020:395;13451:110;13491:6;13451:110;;;;;;;;;;;;;;;;;:9;:17;13461:6;13451:17;;;;;;;;;;;;;;;;:21;;:110;;;;;:::i;:::-;13431:9;:17;13441:6;13431:17;;;;;;;;;;;;;;;:130;;;;13599:41;13624:15;13599:9;:20;13609:9;13599:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;13576:9;:20;13586:9;13576:20;;;;;;;;;;;;;;;:64;;;;13677:9;13660:44;;13669:6;13660:44;;;13688:15;13660:44;;;;;;:::i;:::-;;;;;;;;13721:28;13734:6;13742;13721:12;:28::i;:::-;12914:847;;12880:1673;;;13782:9;13771:20;;:7;;;;;;;;;;;:20;;;:31;;;;;13795:7;13771:31;13767:786;;;13819:14;13836:25;13854:6;13836:17;:25::i;:::-;13819:42;;13876:23;13902:18;13913:6;13902;:10;;:18;;;;:::i;:::-;13876:44;;13955:110;13995:6;13955:110;;;;;;;;;;;;;;;;;:9;:17;13965:6;13955:17;;;;;;;;;;;;;;;;:21;;:110;;;;;:::i;:::-;13935:9;:17;13945:6;13935:17;;;;;;;;;;;;;;;:130;;;;14103:41;14128:15;14103:9;:20;14113:9;14103:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;14080:9;:20;14090:9;14080:20;;;;;;;;;;;;;;;:64;;;;14181:9;14164:44;;14173:6;14164:44;;;14192:15;14164:44;;;;;;:::i;:::-;;;;;;;;14225:28;14238:6;14246;14225:12;:28::i;:::-;13804:461;;13767:786;;;14306:110;14346:6;14306:110;;;;;;;;;;;;;;;;;:9;:17;14316:6;14306:17;;;;;;;;;;;;;;;;:21;;:110;;;;;:::i;:::-;14286:9;:17;14296:6;14286:17;;;;;;;;;;;;;;;:130;;;;14454:32;14479:6;14454:9;:20;14464:9;14454:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14431:9;:20;14441:9;14431:20;;;;;;;;;;;;;;;:55;;;;14523:9;14506:35;;14515:6;14506:35;;;14534:6;14506:35;;;;;;:::i;:::-;;;;;;;;13767:786;12880:1673;12729:1831;;;;:::o;16014:614::-;16129:20;16163:13;16129:48;;16246:21;16284:1;16270:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16246:40;;16315:4;16297;16302:1;16297:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16341:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16331:4;16336:1;16331:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;16396:9;:60;;;16471:11;16497:1;16541:4;16568;16606:3;16588:15;:21;;;;:::i;:::-;16396:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16118:510;;16014:614;;:::o;16848:136::-;16906:7;16933:43;16937:1;16940;16933:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16926:50;;16848:136;;;;:::o;14568:201::-;14668:36;14697:6;14668:9;:24;14686:4;14668:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;14641:9;:24;14659:4;14641:24;;;;;;;;;;;;;;;:63;;;;14747:4;14722:39;;14731:6;14722:39;;;14754:6;14722:39;;;;;;:::i;:::-;;;;;;;;14568:201;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2543:117::-;2652:1;2649;2642:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:116::-;4497:21;4512:5;4497:21;:::i;:::-;4490:5;4487:32;4477:60;;4533:1;4530;4523:12;4477:60;4427:116;:::o;4549:133::-;4592:5;4630:6;4617:20;4608:29;;4646:30;4670:5;4646:30;:::i;:::-;4549:133;;;;:::o;4688:323::-;4744:6;4793:2;4781:9;4772:7;4768:23;4764:32;4761:119;;;4799:79;;:::i;:::-;4761:119;4919:1;4944:50;4986:7;4977:6;4966:9;4962:22;4944:50;:::i;:::-;4934:60;;4890:114;4688:323;;;;:::o;5017:118::-;5104:24;5122:5;5104:24;:::i;:::-;5099:3;5092:37;5017:118;;:::o;5141:222::-;5234:4;5272:2;5261:9;5257:18;5249:26;;5285:71;5353:1;5342:9;5338:17;5329:6;5285:71;:::i;:::-;5141:222;;;;:::o;5369:619::-;5446:6;5454;5462;5511:2;5499:9;5490:7;5486:23;5482:32;5479:119;;;5517:79;;:::i;:::-;5479:119;5637:1;5662:53;5707:7;5698:6;5687:9;5683:22;5662:53;:::i;:::-;5652:63;;5608:117;5764:2;5790:53;5835:7;5826:6;5815:9;5811:22;5790:53;:::i;:::-;5780:63;;5735:118;5892:2;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5863:118;5369:619;;;;;:::o;5994:468::-;6059:6;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:50;6437:7;6428:6;6417:9;6413:22;6395:50;:::i;:::-;6385:60;;6340:115;5994:468;;;;;:::o;6468:86::-;6503:7;6543:4;6536:5;6532:16;6521:27;;6468:86;;;:::o;6560:112::-;6643:22;6659:5;6643:22;:::i;:::-;6638:3;6631:35;6560:112;;:::o;6678:214::-;6767:4;6805:2;6794:9;6790:18;6782:26;;6818:67;6882:1;6871:9;6867:17;6858:6;6818:67;:::i;:::-;6678:214;;;;:::o;6898:329::-;6957:6;7006:2;6994:9;6985:7;6981:23;6977:32;6974:119;;;7012:79;;:::i;:::-;6974:119;7132:1;7157:53;7202:7;7193:6;7182:9;7178:22;7157:53;:::i;:::-;7147:63;;7103:117;6898:329;;;;:::o;7233:118::-;7320:24;7338:5;7320:24;:::i;:::-;7315:3;7308:37;7233:118;;:::o;7357:222::-;7450:4;7488:2;7477:9;7473:18;7465:26;;7501:71;7569:1;7558:9;7554:17;7545:6;7501:71;:::i;:::-;7357:222;;;;:::o;7585:329::-;7644:6;7693:2;7681:9;7672:7;7668:23;7664:32;7661:119;;;7699:79;;:::i;:::-;7661:119;7819:1;7844:53;7889:7;7880:6;7869:9;7865:22;7844:53;:::i;:::-;7834:63;;7790:117;7585:329;;;;:::o;7920:474::-;7988:6;7996;8045:2;8033:9;8024:7;8020:23;8016:32;8013:119;;;8051:79;;:::i;:::-;8013:119;8171:1;8196:53;8241:7;8232:6;8221:9;8217:22;8196:53;:::i;:::-;8186:63;;8142:117;8298:2;8324:53;8369:7;8360:6;8349:9;8345:22;8324:53;:::i;:::-;8314:63;;8269:118;7920:474;;;;;:::o;8400:180::-;8448:77;8445:1;8438:88;8545:4;8542:1;8535:15;8569:4;8566:1;8559:15;8586:320;8630:6;8667:1;8661:4;8657:12;8647:22;;8714:1;8708:4;8704:12;8735:18;8725:81;;8791:4;8783:6;8779:17;8769:27;;8725:81;8853:2;8845:6;8842:14;8822:18;8819:38;8816:84;;;8872:18;;:::i;:::-;8816:84;8637:269;8586:320;;;:::o;8912:182::-;9052:34;9048:1;9040:6;9036:14;9029:58;8912:182;:::o;9100:366::-;9242:3;9263:67;9327:2;9322:3;9263:67;:::i;:::-;9256:74;;9339:93;9428:3;9339:93;:::i;:::-;9457:2;9452:3;9448:12;9441:19;;9100:366;;;:::o;9472:419::-;9638:4;9676:2;9665:9;9661:18;9653:26;;9725:9;9719:4;9715:20;9711:1;9700:9;9696:17;9689:47;9753:131;9879:4;9753:131;:::i;:::-;9745:139;;9472:419;;;:::o;9897:222::-;10037:34;10033:1;10025:6;10021:14;10014:58;10106:5;10101:2;10093:6;10089:15;10082:30;9897:222;:::o;10125:366::-;10267:3;10288:67;10352:2;10347:3;10288:67;:::i;:::-;10281:74;;10364:93;10453:3;10364:93;:::i;:::-;10482:2;10477:3;10473:12;10466:19;;10125:366;;;:::o;10497:419::-;10663:4;10701:2;10690:9;10686:18;10678:26;;10750:9;10744:4;10740:20;10736:1;10725:9;10721:17;10714:47;10778:131;10904:4;10778:131;:::i;:::-;10770:139;;10497:419;;;:::o;10922:173::-;11062:25;11058:1;11050:6;11046:14;11039:49;10922:173;:::o;11101:366::-;11243:3;11264:67;11328:2;11323:3;11264:67;:::i;:::-;11257:74;;11340:93;11429:3;11340:93;:::i;:::-;11458:2;11453:3;11449:12;11442:19;;11101:366;;;:::o;11473:419::-;11639:4;11677:2;11666:9;11662:18;11654:26;;11726:9;11720:4;11716:20;11712:1;11701:9;11697:17;11690:47;11754:131;11880:4;11754:131;:::i;:::-;11746:139;;11473:419;;;:::o;11898:180::-;12038:32;12034:1;12026:6;12022:14;12015:56;11898:180;:::o;12084:366::-;12226:3;12247:67;12311:2;12306:3;12247:67;:::i;:::-;12240:74;;12323:93;12412:3;12323:93;:::i;:::-;12441:2;12436:3;12432:12;12425:19;;12084:366;;;:::o;12456:419::-;12622:4;12660:2;12649:9;12645:18;12637:26;;12709:9;12703:4;12699:20;12695:1;12684:9;12680:17;12673:47;12737:131;12863:4;12737:131;:::i;:::-;12729:139;;12456:419;;;:::o;12881:168::-;13021:20;13017:1;13009:6;13005:14;12998:44;12881:168;:::o;13055:366::-;13197:3;13218:67;13282:2;13277:3;13218:67;:::i;:::-;13211:74;;13294:93;13383:3;13294:93;:::i;:::-;13412:2;13407:3;13403:12;13396:19;;13055:366;;;:::o;13427:419::-;13593:4;13631:2;13620:9;13616:18;13608:26;;13680:9;13674:4;13670:20;13666:1;13655:9;13651:17;13644:47;13708:131;13834:4;13708:131;:::i;:::-;13700:139;;13427:419;;;:::o;13852:225::-;13992:34;13988:1;13980:6;13976:14;13969:58;14061:8;14056:2;14048:6;14044:15;14037:33;13852:225;:::o;14083:366::-;14225:3;14246:67;14310:2;14305:3;14246:67;:::i;:::-;14239:74;;14322:93;14411:3;14322:93;:::i;:::-;14440:2;14435:3;14431:12;14424:19;;14083:366;;;:::o;14455:419::-;14621:4;14659:2;14648:9;14644:18;14636:26;;14708:9;14702:4;14698:20;14694:1;14683:9;14679:17;14672:47;14736:131;14862:4;14736:131;:::i;:::-;14728:139;;14455:419;;;:::o;14880:180::-;14928:77;14925:1;14918:88;15025:4;15022:1;15015:15;15049:4;15046:1;15039:15;15066:348;15106:7;15129:20;15147:1;15129:20;:::i;:::-;15124:25;;15163:20;15181:1;15163:20;:::i;:::-;15158:25;;15351:1;15283:66;15279:74;15276:1;15273:81;15268:1;15261:9;15254:17;15250:105;15247:131;;;15358:18;;:::i;:::-;15247:131;15406:1;15403;15399:9;15388:20;;15066:348;;;;:::o;15420:180::-;15468:77;15465:1;15458:88;15565:4;15562:1;15555:15;15589:4;15586:1;15579:15;15606:185;15646:1;15663:20;15681:1;15663:20;:::i;:::-;15658:25;;15697:20;15715:1;15697:20;:::i;:::-;15692:25;;15736:1;15726:35;;15741:18;;:::i;:::-;15726:35;15783:1;15780;15776:9;15771:14;;15606:185;;;;:::o;15797:220::-;15937:34;15933:1;15925:6;15921:14;15914:58;16006:3;16001:2;15993:6;15989:15;15982:28;15797:220;:::o;16023:366::-;16165:3;16186:67;16250:2;16245:3;16186:67;:::i;:::-;16179:74;;16262:93;16351:3;16262:93;:::i;:::-;16380:2;16375:3;16371:12;16364:19;;16023:366;;;:::o;16395:419::-;16561:4;16599:2;16588:9;16584:18;16576:26;;16648:9;16642:4;16638:20;16634:1;16623:9;16619:17;16612:47;16676:131;16802:4;16676:131;:::i;:::-;16668:139;;16395:419;;;:::o;16820:224::-;16960:34;16956:1;16948:6;16944:14;16937:58;17029:7;17024:2;17016:6;17012:15;17005:32;16820:224;:::o;17050:366::-;17192:3;17213:67;17277:2;17272:3;17213:67;:::i;:::-;17206:74;;17289:93;17378:3;17289:93;:::i;:::-;17407:2;17402:3;17398:12;17391:19;;17050:366;;;:::o;17422:419::-;17588:4;17626:2;17615:9;17611:18;17603:26;;17675:9;17669:4;17665:20;17661:1;17650:9;17646:17;17639:47;17703:131;17829:4;17703:131;:::i;:::-;17695:139;;17422:419;;;:::o;17847:222::-;17987:34;17983:1;17975:6;17971:14;17964:58;18056:5;18051:2;18043:6;18039:15;18032:30;17847:222;:::o;18075:366::-;18217:3;18238:67;18302:2;18297:3;18238:67;:::i;:::-;18231:74;;18314:93;18403:3;18314:93;:::i;:::-;18432:2;18427:3;18423:12;18416:19;;18075:366;;;:::o;18447:419::-;18613:4;18651:2;18640:9;18636:18;18628:26;;18700:9;18694:4;18690:20;18686:1;18675:9;18671:17;18664:47;18728:131;18854:4;18728:131;:::i;:::-;18720:139;;18447:419;;;:::o;18872:225::-;19012:34;19008:1;19000:6;18996:14;18989:58;19081:8;19076:2;19068:6;19064:15;19057:33;18872:225;:::o;19103:366::-;19245:3;19266:67;19330:2;19325:3;19266:67;:::i;:::-;19259:74;;19342:93;19431:3;19342:93;:::i;:::-;19460:2;19455:3;19451:12;19444:19;;19103:366;;;:::o;19475:419::-;19641:4;19679:2;19668:9;19664:18;19656:26;;19728:9;19722:4;19718:20;19714:1;19703:9;19699:17;19692:47;19756:131;19882:4;19756:131;:::i;:::-;19748:139;;19475:419;;;:::o;19900:223::-;20040:34;20036:1;20028:6;20024:14;20017:58;20109:6;20104:2;20096:6;20092:15;20085:31;19900:223;:::o;20129:366::-;20271:3;20292:67;20356:2;20351:3;20292:67;:::i;:::-;20285:74;;20368:93;20457:3;20368:93;:::i;:::-;20486:2;20481:3;20477:12;20470:19;;20129:366;;;:::o;20501:419::-;20667:4;20705:2;20694:9;20690:18;20682:26;;20754:9;20748:4;20744:20;20740:1;20729:9;20725:17;20718:47;20782:131;20908:4;20782:131;:::i;:::-;20774:139;;20501:419;;;:::o;20926:227::-;21066:34;21062:1;21054:6;21050:14;21043:58;21135:10;21130:2;21122:6;21118:15;21111:35;20926:227;:::o;21159:366::-;21301:3;21322:67;21386:2;21381:3;21322:67;:::i;:::-;21315:74;;21398:93;21487:3;21398:93;:::i;:::-;21516:2;21511:3;21507:12;21500:19;;21159:366;;;:::o;21531:419::-;21697:4;21735:2;21724:9;21720:18;21712:26;;21784:9;21778:4;21774:20;21770:1;21759:9;21755:17;21748:47;21812:131;21938:4;21812:131;:::i;:::-;21804:139;;21531:419;;;:::o;21956:176::-;22096:28;22092:1;22084:6;22080:14;22073:52;21956:176;:::o;22138:366::-;22280:3;22301:67;22365:2;22360:3;22301:67;:::i;:::-;22294:74;;22377:93;22466:3;22377:93;:::i;:::-;22495:2;22490:3;22486:12;22479:19;;22138:366;;;:::o;22510:419::-;22676:4;22714:2;22703:9;22699:18;22691:26;;22763:9;22757:4;22753:20;22749:1;22738:9;22734:17;22727:47;22791:131;22917:4;22791:131;:::i;:::-;22783:139;;22510:419;;;:::o;22935:180::-;23075:32;23071:1;23063:6;23059:14;23052:56;22935:180;:::o;23121:366::-;23263:3;23284:67;23348:2;23343:3;23284:67;:::i;:::-;23277:74;;23360:93;23449:3;23360:93;:::i;:::-;23478:2;23473:3;23469:12;23462:19;;23121:366;;;:::o;23493:419::-;23659:4;23697:2;23686:9;23682:18;23674:26;;23746:9;23740:4;23736:20;23732:1;23721:9;23717:17;23710:47;23774:131;23900:4;23774:131;:::i;:::-;23766:139;;23493:419;;;:::o;23918:191::-;23958:4;23978:20;23996:1;23978:20;:::i;:::-;23973:25;;24012:20;24030:1;24012:20;:::i;:::-;24007:25;;24051:1;24048;24045:8;24042:34;;;24056:18;;:::i;:::-;24042:34;24101:1;24098;24094:9;24086:17;;23918:191;;;;:::o;24115:305::-;24155:3;24174:20;24192:1;24174:20;:::i;:::-;24169:25;;24208:20;24226:1;24208:20;:::i;:::-;24203:25;;24362:1;24294:66;24290:74;24287:1;24284:81;24281:107;;;24368:18;;:::i;:::-;24281:107;24412:1;24409;24405:9;24398:16;;24115:305;;;;:::o;24426:177::-;24566:29;24562:1;24554:6;24550:14;24543:53;24426:177;:::o;24609:366::-;24751:3;24772:67;24836:2;24831:3;24772:67;:::i;:::-;24765:74;;24848:93;24937:3;24848:93;:::i;:::-;24966:2;24961:3;24957:12;24950:19;;24609:366;;;:::o;24981:419::-;25147:4;25185:2;25174:9;25170:18;25162:26;;25234:9;25228:4;25224:20;25220:1;25209:9;25205:17;25198:47;25262:131;25388:4;25262:131;:::i;:::-;25254:139;;24981:419;;;:::o;25406:180::-;25454:77;25451:1;25444:88;25551:4;25548:1;25541:15;25575:4;25572:1;25565:15;25592:180;25640:77;25637:1;25630:88;25737:4;25734:1;25727:15;25761:4;25758:1;25751:15;25778:143;25835:5;25866:6;25860:13;25851:22;;25882:33;25909:5;25882:33;:::i;:::-;25778:143;;;;:::o;25927:351::-;25997:6;26046:2;26034:9;26025:7;26021:23;26017:32;26014:119;;;26052:79;;:::i;:::-;26014:119;26172:1;26197:64;26253:7;26244:6;26233:9;26229:22;26197:64;:::i;:::-;26187:74;;26143:128;25927:351;;;;:::o;26284:85::-;26329:7;26358:5;26347:16;;26284:85;;;:::o;26375:158::-;26433:9;26466:61;26484:42;26493:32;26519:5;26493:32;:::i;:::-;26484:42;:::i;:::-;26466:61;:::i;:::-;26453:74;;26375:158;;;:::o;26539:147::-;26634:45;26673:5;26634:45;:::i;:::-;26629:3;26622:58;26539:147;;:::o;26692:114::-;26759:6;26793:5;26787:12;26777:22;;26692:114;;;:::o;26812:184::-;26911:11;26945:6;26940:3;26933:19;26985:4;26980:3;26976:14;26961:29;;26812:184;;;;:::o;27002:132::-;27069:4;27092:3;27084:11;;27122:4;27117:3;27113:14;27105:22;;27002:132;;;:::o;27140:108::-;27217:24;27235:5;27217:24;:::i;:::-;27212:3;27205:37;27140:108;;:::o;27254:179::-;27323:10;27344:46;27386:3;27378:6;27344:46;:::i;:::-;27422:4;27417:3;27413:14;27399:28;;27254:179;;;;:::o;27439:113::-;27509:4;27541;27536:3;27532:14;27524:22;;27439:113;;;:::o;27588:732::-;27707:3;27736:54;27784:5;27736:54;:::i;:::-;27806:86;27885:6;27880:3;27806:86;:::i;:::-;27799:93;;27916:56;27966:5;27916:56;:::i;:::-;27995:7;28026:1;28011:284;28036:6;28033:1;28030:13;28011:284;;;28112:6;28106:13;28139:63;28198:3;28183:13;28139:63;:::i;:::-;28132:70;;28225:60;28278:6;28225:60;:::i;:::-;28215:70;;28071:224;28058:1;28055;28051:9;28046:14;;28011:284;;;28015:14;28311:3;28304:10;;27712:608;;;27588:732;;;;:::o;28326:831::-;28589:4;28627:3;28616:9;28612:19;28604:27;;28641:71;28709:1;28698:9;28694:17;28685:6;28641:71;:::i;:::-;28722:80;28798:2;28787:9;28783:18;28774:6;28722:80;:::i;:::-;28849:9;28843:4;28839:20;28834:2;28823:9;28819:18;28812:48;28877:108;28980:4;28971:6;28877:108;:::i;:::-;28869:116;;28995:72;29063:2;29052:9;29048:18;29039:6;28995:72;:::i;:::-;29077:73;29145:3;29134:9;29130:19;29121:6;29077:73;:::i;:::-;28326:831;;;;;;;;:::o

Swarm Source

ipfs://b5cce5746ac48eefb291369bde2c6a662d02394d6bb9f49d21b3fcb4fcb673bd

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