ETH Price: $1,987.20 (-3.70%)
Gas: 0.06 Gwei

Contract

0x5ea69F68dc68D81e4e545d127Dfa97D9AeD178B9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Update Sell Tax196776222024-04-17 20:36:47688 days ago1713386207IN
0x5ea69F68...9AeD178B9
0 ETH0.0004562812.34112045
Update Sell Tax196776112024-04-17 20:34:35688 days ago1713386075IN
0x5ea69F68...9AeD178B9
0 ETH0.0004653212.58556491
Update Sell Tax196776022024-04-17 20:32:47688 days ago1713385967IN
0x5ea69F68...9AeD178B9
0 ETH0.0004807513.00287222
Approve196775962024-04-17 20:31:35688 days ago1713385895IN
0x5ea69F68...9AeD178B9
0 ETH0.0008203217.37579508
Update Sell Tax196775882024-04-17 20:29:59688 days ago1713385799IN
0x5ea69F68...9AeD178B9
0 ETH0.0005132912.90558285
Update Buy Tax196775862024-04-17 20:29:35688 days ago1713385775IN
0x5ea69F68...9AeD178B9
0 ETH0.0004467713.90124841
Update Buy Tax196775782024-04-17 20:27:59688 days ago1713385679IN
0x5ea69F68...9AeD178B9
0 ETH0.0005423714.67824811
Approve196775742024-04-17 20:27:11688 days ago1713385631IN
0x5ea69F68...9AeD178B9
0 ETH0.0008231117.43472846
Approve196775732024-04-17 20:26:59688 days ago1713385619IN
0x5ea69F68...9AeD178B9
0 ETH0.0009327219.75646389
Approve196775712024-04-17 20:26:35688 days ago1713385595IN
0x5ea69F68...9AeD178B9
0 ETH0.0007174515.19679663
Approve196775712024-04-17 20:26:35688 days ago1713385595IN
0x5ea69F68...9AeD178B9
0 ETH0.0007174515.19679663
Approve196775712024-04-17 20:26:35688 days ago1713385595IN
0x5ea69F68...9AeD178B9
0 ETH0.0007174515.19679663
Approve196775712024-04-17 20:26:35688 days ago1713385595IN
0x5ea69F68...9AeD178B9
0 ETH0.0007174515.19679663
Approve196775712024-04-17 20:26:35688 days ago1713385595IN
0x5ea69F68...9AeD178B9
0 ETH0.0007174515.19679663
Approve196775712024-04-17 20:26:35688 days ago1713385595IN
0x5ea69F68...9AeD178B9
0 ETH0.0007174515.19679663
Approve196775712024-04-17 20:26:35688 days ago1713385595IN
0x5ea69F68...9AeD178B9
0 ETH0.0007174515.19679663
Activate Trading...196775692024-04-17 20:26:11688 days ago1713385571IN
0x5ea69F68...9AeD178B9
0 ETH0.0005389414.78127508
Approve196773412024-04-17 19:40:23688 days ago1713382823IN
0x5ea69F68...9AeD178B9
0 ETH0.0006294913.33368871

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer196838712024-04-18 17:36:47687 days ago1713461807
0x5ea69F68...9AeD178B9
0.16026631 ETH
Transfer196838712024-04-18 17:36:47687 days ago1713461807
0x5ea69F68...9AeD178B9
0.16026631 ETH
Transfer196776102024-04-17 20:34:23688 days ago1713386063
0x5ea69F68...9AeD178B9
0.50216081 ETH
Transfer196776102024-04-17 20:34:23688 days ago1713386063
0x5ea69F68...9AeD178B9
0.26757801 ETH
Transfer196776102024-04-17 20:34:23688 days ago1713386063
0x5ea69F68...9AeD178B9
0.76973883 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.01060384 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.01237115 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.022975 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.02930294 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03418677 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.06348972 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.0300511 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03505962 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.06511072 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.0308283 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03596635 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.06679465 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03163605 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03690873 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.06854479 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03247599 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03788866 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.07036466 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03334985 ETH
Transfer196775712024-04-17 20:26:35688 days ago1713385595
0x5ea69F68...9AeD178B9
0.03890816 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RunChain

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-04-17
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.10;

/* Abstract Contracts */

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

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

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

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

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}


contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
        address account,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(
        address account,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
        // Nothing
    }
}

contract RunChain is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwap;
    uint256 public walletMax;
    uint256 public txMax;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingAddress;
    address public devAddress;

    uint256 public marketingTokens;
    uint256 public devTokens;

    mapping(address => bool) public excludeMaxPerTxn;

    mapping(address => bool) public taxExcluded;

    mapping(address => bool) public ammPairs;

    bool public limitsInEffect = true;

    uint256 public taxSellTotal;
    uint256 public taxSellMarketing;
    uint256 public taxSellDev;

    uint256 public taxBuyTotal;
    uint256 public taxBuyMarketing;
    uint256 public taxBuyDev;

    
    bool private bSwapping;

    mapping(address => bool) private blackList;
    
    constructor() ERC20("Rune Chain", "RUNE") {
        devAddress = owner();
        marketingAddress = owner();


        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        excludeMaxPerTxn[owner()] = true;
        excludeMaxPerTxn[address(this)] = true;

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwap = (totalSupply * 5) / 40000; // 0.05% swap wallet

        txMax = 2_000_000 * 1e18; // 2% from total supply maxTransactionTxn
        walletMax = 2_000_000 * 1e18; // 2% from total supply walletMaxSize

        taxExcluded[address(this)] = true;
        taxExcluded[owner()] = true;


        ammPairs[address(swapPair)] = true;
        
        excludeMaxPerTxn[address(0xdead)] = true;
        excludeMaxPerTxn[address(swapRouter)] = true;
        excludeMaxPerTxn[address(swapPair)] = true;

        taxExcluded[address(0xdead)] = true;

        taxBuyMarketing = 10;
        taxBuyDev = 5;
        taxBuyTotal = taxBuyMarketing + taxBuyDev;

        taxSellMarketing = 30;
        taxSellDev = 35;
        taxSellTotal = taxSellMarketing + taxSellDev;


        _mint(msg.sender, totalSupply);
    }

   

    

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: from is black list");
        require(!blackList[to], "ERC20: to is black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) {
                if (!bTradingActive) {
                    require(taxExcluded[from] || taxExcluded[to], "Trading is not active.");
                }

                if (ammPairs[from] && !excludeMaxPerTxn[to]) {
                    require(amount <= txMax, "Buy transfer amount exceeds the txMax.");
                    require(amount + balanceOf(to) <= walletMax, "Max wallet exceeded");
                }
                else if (ammPairs[to] && !excludeMaxPerTxn[from]) {
                    require(amount <= txMax, "Sell transfer amount exceeds the txMax.");
                }
                else if (!excludeMaxPerTxn[to]) {
                    require(amount + balanceOf(to) <= walletMax, "Max wallet exceeded");
                }
            }
        }


        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwap;
        if (bSwapEnabled && canSwap && !bSwapping &&
            !ammPairs[from] && !taxExcluded[from] && !taxExcluded[to]) {
            bSwapping = true;
            swapTax();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (taxExcluded[from] || taxExcluded[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            if (ammPairs[to] && taxSellTotal > 0) {
                fees = amount.mul(taxSellTotal).div(100);
                devTokens += (fees * taxSellDev) / taxSellTotal;
                marketingTokens += (fees * taxSellMarketing) / taxSellTotal;
            }
            else if (ammPairs[from] && taxBuyTotal > 0) {
                fees = amount.mul(taxBuyTotal).div(100);
                devTokens += (fees * taxBuyDev) / taxBuyTotal;
                marketingTokens += (fees * taxBuyMarketing) / taxBuyTotal;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }


    function swapTax() private {
        bool success;
        uint256 tokenAmountToSwap = marketingTokens + devTokens;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwap * 20)
            tokenBalance = minSwap * 20;

        uint256 prevETHBalance = address(this).balance;
        swapToEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(devTokens).div(tokenAmountToSwap);

        (success, ) = address(devAddress).call{value: ethForDev}("");
        (success, ) = address(marketingAddress).call{ value: address(this).balance }("");

        marketingTokens = 0;
        devTokens = 0;
    }

     function swapToEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    
    
    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    
     function excludeFromMaxTxn(address addr, bool value)
        external onlyOwner {
        excludeMaxPerTxn[addr] = value;
    }

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

    function removeLimits()
        external onlyOwner {
        limitsInEffect = false;
    }


    function updateSwapEnabled(bool enabled)
        external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(uint256 amount)
        external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwap = amount;
    }

    function updateMaxTokensPerWallet(uint256 newNum)
        external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set walletMax lower than 0.5%");
        walletMax = newNum * (10 ** decimals());
    }

    function updateMaxTokenAmountPerTxn(uint256 newNum)
        external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set txMax lower than 0.1%");
        txMax = newNum * (10 ** decimals());
    }

    function setBl(address addr, bool enable)
        external onlyOwner {
        blackList[addr] = enable;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        taxBuyMarketing = newMarketFee;
        taxBuyDev = newDevFee;
        taxBuyTotal = taxBuyMarketing + taxBuyDev;
        require(taxBuyTotal <= 95, "Must keep tax at 95% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        taxSellMarketing = newMarketFee;
        taxSellDev = newDevFee;
        taxSellTotal = taxSellMarketing + taxSellDev;
        require(taxSellTotal <= 95, "Must keep tax at 95% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }
   

    receive() external payable {}

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeMaxPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"taxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff021916908315150217905550600160125f6101000a81548160ff0219169083151502179055503480156200005d575f80fd5b506040518060400160405280600a81526020017f52756e6520436861696e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f52554e4500000000000000000000000000000000000000000000000000000000815250815f9081620000da919062000d1f565b508060019081620000ec919062000d1f565b5050506200010f620001036200084660201b60201c565b6200084d60201b60201c565b6200011f6200091060201b60201c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200016e6200091060201b60201c565b600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000293919062000e68565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000340919062000e68565b6040518363ffffffff1660e01b81526004016200035f92919062000ea9565b6020604051808303815f875af11580156200037c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a2919062000e68565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f620003f66200091060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f620004ab6200093860201b60201c565b600a620004b991906200105d565b6305f5e100620004ca9190620010ad565b9050619c40600582620004de9190620010ad565b620004ea919062001124565b6008819055506a01a784379d99db42000000600a819055506a01a784379d99db42000000600981905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6200057e6200091060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a6017819055506005601881905550601854601754620007ff91906200115b565b601681905550601e60148190555060236015819055506015546014546200082791906200115b565b6013819055506200083f33826200094060201b60201c565b506200123f565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a890620011f3565b60405180910390fd5b620009c45f838362000ab160201b60201c565b8060025f828254620009d791906200115b565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a2c91906200115b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a92919062001224565b60405180910390a362000aad5f838362000ab660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b3757607f821691505b60208210810362000b4d5762000b4c62000af2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bb17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b74565b62000bbd868362000b74565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c0762000c0162000bfb8462000bd5565b62000bde565b62000bd5565b9050919050565b5f819050919050565b62000c228362000be7565b62000c3a62000c318262000c0e565b84845462000b80565b825550505050565b5f90565b62000c5062000c42565b62000c5d81848462000c17565b505050565b5b8181101562000c845762000c785f8262000c46565b60018101905062000c63565b5050565b601f82111562000cd35762000c9d8162000b53565b62000ca88462000b65565b8101602085101562000cb8578190505b62000cd062000cc78562000b65565b83018262000c62565b50505b505050565b5f82821c905092915050565b5f62000cf55f198460080262000cd8565b1980831691505092915050565b5f62000d0f838362000ce4565b9150826002028217905092915050565b62000d2a8262000abb565b67ffffffffffffffff81111562000d465762000d4562000ac5565b5b62000d52825462000b1f565b62000d5f82828562000c88565b5f60209050601f83116001811462000d95575f841562000d80578287015190505b62000d8c858262000d02565b86555062000dfb565b601f19841662000da58662000b53565b5f5b8281101562000dce5784890151825560018201915060208501945060208101905062000da7565b8683101562000dee578489015162000dea601f89168262000ce4565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e328262000e07565b9050919050565b62000e448162000e26565b811462000e4f575f80fd5b50565b5f8151905062000e628162000e39565b92915050565b5f6020828403121562000e805762000e7f62000e03565b5b5f62000e8f8482850162000e52565b91505092915050565b62000ea38162000e26565b82525050565b5f60408201905062000ebe5f83018562000e98565b62000ecd602083018462000e98565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f5e5780860481111562000f365762000f3562000ed4565b5b600185161562000f465780820291505b808102905062000f568562000f01565b945062000f16565b94509492505050565b5f8262000f7857600190506200104a565b8162000f87575f90506200104a565b816001811462000fa0576002811462000fab5762000fe1565b60019150506200104a565b60ff84111562000fc05762000fbf62000ed4565b5b8360020a91508482111562000fda5762000fd962000ed4565b5b506200104a565b5060208310610133831016604e8410600b84101617156200101b5782820a90508381111562001015576200101462000ed4565b5b6200104a565b6200102a848484600162000f0d565b9250905081840481111562001044576200104362000ed4565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010698262000bd5565b9150620010768362001051565b9250620010a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f67565b905092915050565b5f620010b98262000bd5565b9150620010c68362000bd5565b9250828202620010d68162000bd5565b91508282048414831517620010f057620010ef62000ed4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011308262000bd5565b91506200113d8362000bd5565b92508262001150576200114f620010f7565b5b828204905092915050565b5f620011678262000bd5565b9150620011748362000bd5565b92508282019050808211156200118f576200118e62000ed4565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f620011db60208362001195565b9150620011e882620011a5565b602082019050919050565b5f6020820190508181035f8301526200120c81620011cd565b9050919050565b6200121e8162000bd5565b82525050565b5f602082019050620012395f83018462001213565b92915050565b614a9b806200124d5f395ff3fe60806040526004361061028b575f3560e01c8063715018a611610159578063b38d5ef4116100c0578063d4394cf811610079578063d4394cf8146109b6578063d929a083146109de578063dd62ed3e14610a08578063f2f8ff2a14610a44578063f2fde38b14610a6e578063fe31452414610a9657610292565b8063b38d5ef4146108c0578063b79c1886146108e8578063bd8807ab14610910578063c29feb031461093a578063c31c9c0714610964578063d3aea37b1461098e57610292565b80639957401511610112578063995740151461078e578063a457c2d7146107b8578063a5ece941146107f4578063a72905a21461081e578063a9059cbb1461085a578063b29564711461089657610292565b8063715018a6146106bc578063751039fc146106d25780638b27306d146106e85780638da5cb5b14610712578063924de9b71461073c57806395d89b411461076457610292565b8063313ce567116101fd5780634a62bb65116101b65780634a62bb65146105b2578063544d1ec9146105dc578063556482091461060457806359cd90311461062e57806367b740e91461065857806370a082311461068057610292565b8063313ce5671461049457806339509351146104be57806339b622d3146104fa5780633ad10ef6146105365780633af50e571461056057806345167f261461058a57610292565b8063226036611161024f578063226036611461038c57806323b872dd146103b4578063261e3c03146103f057806326991cc81461041a5780632c81355e1461044457806330534fc21461046c57610292565b806306fdde0314610296578063095ea7b3146102c0578063151d8039146102fc57806318160ddd146103265780631968af9e1461035057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610ac0565b6040516102b7919061349a565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e1919061354b565b610b4f565b6040516102f391906135a3565b60405180910390f35b348015610307575f80fd5b50610310610b6c565b60405161031d91906135a3565b60405180910390f35b348015610331575f80fd5b5061033a610b7f565b60405161034791906135cb565b60405180910390f35b34801561035b575f80fd5b50610376600480360381019061037191906135e4565b610b88565b60405161038391906135a3565b60405180910390f35b348015610397575f80fd5b506103b260048036038101906103ad9190613639565b610ba5565b005b3480156103bf575f80fd5b506103da60048036038101906103d59190613677565b610c79565b6040516103e791906135a3565b60405180910390f35b3480156103fb575f80fd5b50610404610d6b565b60405161041191906135cb565b60405180910390f35b348015610425575f80fd5b5061042e610d71565b60405161043b91906136d6565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906136ef565b610d96565b005b348015610477575f80fd5b50610492600480360381019061048d9190613639565b610ee3565b005b34801561049f575f80fd5b506104a8610fb7565b6040516104b59190613735565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061354b565b610fbf565b6040516104f191906135a3565b60405180910390f35b348015610505575f80fd5b50610520600480360381019061051b91906135e4565b611066565b60405161052d91906135a3565b60405180910390f35b348015610541575f80fd5b5061054a611083565b60405161055791906136d6565b60405180910390f35b34801561056b575f80fd5b506105746110a8565b60405161058191906135cb565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab9190613639565b6110ae565b005b3480156105bd575f80fd5b506105c6611211565b6040516105d391906135a3565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd91906136ef565b611223565b005b34801561060f575f80fd5b50610618611348565b60405161062591906135cb565b60405180910390f35b348015610639575f80fd5b5061064261134e565b60405161064f91906135cb565b60405180910390f35b348015610663575f80fd5b5061067e600480360381019061067991906136ef565b611354565b005b34801561068b575f80fd5b506106a660048036038101906106a191906135e4565b611479565b6040516106b391906135cb565b60405180910390f35b3480156106c7575f80fd5b506106d06114bf565b005b3480156106dd575f80fd5b506106e6611546565b005b3480156106f3575f80fd5b506106fc6115dd565b60405161070991906135cb565b60405180910390f35b34801561071d575f80fd5b506107266115e3565b60405161073391906136d6565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d919061374e565b61160b565b005b34801561076f575f80fd5b506107786116a4565b604051610785919061349a565b60405180910390f35b348015610799575f80fd5b506107a2611734565b6040516107af91906135cb565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d9919061354b565b61173a565b6040516107eb91906135a3565b60405180910390f35b3480156107ff575f80fd5b50610808611820565b60405161081591906136d6565b60405180910390f35b348015610829575f80fd5b50610844600480360381019061083f91906135e4565b611846565b60405161085191906135a3565b60405180910390f35b348015610865575f80fd5b50610880600480360381019061087b919061354b565b611863565b60405161088d91906135a3565b60405180910390f35b3480156108a1575f80fd5b506108aa611880565b6040516108b791906135cb565b60405180910390f35b3480156108cb575f80fd5b506108e660048036038101906108e19190613779565b611886565b005b3480156108f3575f80fd5b5061090e60048036038101906109099190613779565b611970565b005b34801561091b575f80fd5b50610924611a5a565b60405161093191906135cb565b60405180910390f35b348015610945575f80fd5b5061094e611a60565b60405161095b91906135cb565b60405180910390f35b34801561096f575f80fd5b50610978611a66565b6040516109859190613812565b60405180910390f35b348015610999575f80fd5b506109b460048036038101906109af9190613639565b611a8b565b005b3480156109c1575f80fd5b506109dc60048036038101906109d79190613888565b611b5f565b005b3480156109e9575f80fd5b506109f2611de1565b6040516109ff91906135a3565b60405180910390f35b348015610a13575f80fd5b50610a2e6004803603810190610a2991906138d8565b611df3565b604051610a3b91906135cb565b60405180910390f35b348015610a4f575f80fd5b50610a58611e75565b604051610a6591906135cb565b60405180910390f35b348015610a79575f80fd5b50610a946004803603810190610a8f91906135e4565b611e7b565b005b348015610aa1575f80fd5b50610aaa611f71565b604051610ab791906135cb565b60405180910390f35b60605f8054610ace90613943565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa90613943565b8015610b455780601f10610b1c57610100808354040283529160200191610b45565b820191905f5260205f20905b815481529060010190602001808311610b2857829003601f168201915b5050505050905090565b5f610b62610b5b611f77565b8484611f7e565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600f602052805f5260405f205f915054906101000a900460ff1681565b610bad611f77565b73ffffffffffffffffffffffffffffffffffffffff16610bcb6115e3565b73ffffffffffffffffffffffffffffffffffffffff1614610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906139bd565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610c85848484612141565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ccc611f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290613a25565b60405180910390fd5b610d5f85610d57611f77565b858403611f7e565b60019150509392505050565b60155481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d9e611f77565b73ffffffffffffffffffffffffffffffffffffffff16610dbc6115e3565b73ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e09906139bd565b60405180910390fd5b620186a06001610e20610b7f565b610e2a9190613a70565b610e349190613ade565b811015610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90613b7e565b60405180910390fd5b6103e86005610e83610b7f565b610e8d9190613a70565b610e979190613ade565b811115610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090613c0c565b60405180910390fd5b8060088190555050565b610eeb611f77565b73ffffffffffffffffffffffffffffffffffffffff16610f096115e3565b73ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f56906139bd565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f61105c610fcb611f77565b848460045f610fd8611f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110579190613c2a565b611f7e565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6110b6611f77565b73ffffffffffffffffffffffffffffffffffffffff166110d46115e3565b73ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906139bd565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090613ccd565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b61122b611f77565b73ffffffffffffffffffffffffffffffffffffffff166112496115e3565b73ffffffffffffffffffffffffffffffffffffffff161461129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906139bd565b60405180910390fd5b6112a7610fb7565b600a6112b39190613e1a565b6103e860016112c0610b7f565b6112ca9190613a70565b6112d49190613ade565b6112de9190613ade565b811015611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790613eae565b60405180910390fd5b611328610fb7565b600a6113349190613e1a565b8161133f9190613a70565b600a8190555050565b600e5481565b60085481565b61135c611f77565b73ffffffffffffffffffffffffffffffffffffffff1661137a6115e3565b73ffffffffffffffffffffffffffffffffffffffff16146113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c7906139bd565b60405180910390fd5b6113d8610fb7565b600a6113e49190613e1a565b6103e860056113f1610b7f565b6113fb9190613a70565b6114059190613ade565b61140f9190613ade565b811015611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613f3c565b60405180910390fd5b611459610fb7565b600a6114659190613e1a565b816114709190613a70565b60098190555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c7611f77565b73ffffffffffffffffffffffffffffffffffffffff166114e56115e3565b73ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611532906139bd565b60405180910390fd5b6115445f612c7b565b565b61154e611f77565b73ffffffffffffffffffffffffffffffffffffffff1661156c6115e3565b73ffffffffffffffffffffffffffffffffffffffff16146115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9906139bd565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600d5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611613611f77565b73ffffffffffffffffffffffffffffffffffffffff166116316115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e906139bd565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116b390613943565b80601f01602080910402602001604051908101604052809291908181526020018280546116df90613943565b801561172a5780601f106117015761010080835404028352916020019161172a565b820191905f5260205f20905b81548152906001019060200180831161170d57829003601f168201915b5050505050905090565b60185481565b5f8060045f611747611f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f890613fa4565b60405180910390fd5b61181561180c611f77565b85858403611f7e565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f61187661186f611f77565b8484612141565b6001905092915050565b60165481565b61188e611f77565b73ffffffffffffffffffffffffffffffffffffffff166118ac6115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f9906139bd565b60405180910390fd5b81601781905550806018819055506018546017546119209190613c2a565b601681905550605f601654111561196c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119639061400c565b60405180910390fd5b5050565b611978611f77565b73ffffffffffffffffffffffffffffffffffffffff166119966115e3565b73ffffffffffffffffffffffffffffffffffffffff16146119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906139bd565b60405180910390fd5b8160148190555080601581905550601554601454611a0a9190613c2a565b601381905550605f6013541115611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d9061400c565b60405180910390fd5b5050565b60135481565b600a5481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a93611f77565b73ffffffffffffffffffffffffffffffffffffffff16611ab16115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906139bd565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611c11959493929190614039565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611c9b9392919061408a565b6040516020818303038152906040528051906020012090505f8282604051602001611cc7929190614133565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611d029493929190614169565b6020604051602081039080840390855afa158015611d22573d5f803e3d5ffd5b505050602060405103519050611d366115e3565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9a906141f6565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60175481565b611e83611f77565b73ffffffffffffffffffffffffffffffffffffffff16611ea16115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee906139bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9061425e565b60405180910390fd5b611f6e81612c7b565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe3906142c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361205a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120519061432e565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161213491906135cb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a690614396565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361221d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612214906143fe565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e90614466565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612328906144ce565b60405180910390fd5b5f81036123485761234383835f612d3e565b612c76565b60125f9054906101000a900460ff161561282a576123646115e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d257506123a26115e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240a57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612444575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561245c575060195f9054906101000a900460ff16155b1561282957600b5f9054906101000a900460ff1661254f5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061250f575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254590614536565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125ec5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561269357600a54811115612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d906145c4565b60405180910390fd5b60095461264283611479565b8261264d9190613c2a565b111561268e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126859061462c565b60405180910390fd5b612828565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127305750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561277f57600a5481111561277a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612771906146ba565b60405180910390fd5b612827565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612826576009546127d983611479565b826127e49190613c2a565b1115612825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281c9061462c565b60405180910390fd5b5b5b5b5b5b5f61283430611479565b90505f6008548210159050600b60019054906101000a900460ff1680156128585750805b8015612870575060195f9054906101000a900460ff16155b80156128c3575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612916575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612969575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129aa57600160195f6101000a81548160ff021916908315150217905550612990612fb6565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a58575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a61575f90505b5f8115612c665760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612abf57505f601354115b15612b5757612aec6064612ade6013548861319190919063ffffffff16565b6131a690919063ffffffff16565b905060135460155482612aff9190613a70565b612b099190613ade565b600e5f828254612b199190613c2a565b9250508190555060135460145482612b319190613a70565b612b3b9190613ade565b600d5f828254612b4b9190613c2a565b92505081905550612c43565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bae57505f601654115b15612c4257612bdb6064612bcd6016548861319190919063ffffffff16565b6131a690919063ffffffff16565b905060165460185482612bee9190613a70565b612bf89190613ade565b600e5f828254612c089190613c2a565b9250508190555060165460175482612c209190613a70565b612c2a9190613ade565b600d5f828254612c3a9190613c2a565b925050819055505b5b5f811115612c5757612c56873083612d3e565b5b8085612c6391906146d8565b94505b612c71878787612d3e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614755565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e11906147bd565b60405180910390fd5b612e258383836131bb565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea090614825565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f399190613c2a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f9d91906135cb565b60405180910390a3612fb08484846131c0565b50505050565b5f80600e54600d54612fc89190613c2a565b90505f612fd430611479565b90505f821480612fe357505f81145b15612ff05750505061318f565b6014600854612fff9190613a70565b8111156130185760146008546130159190613a70565b90505b5f479050613025826131c5565b5f61303982476133fb90919063ffffffff16565b90505f61306385613055600e548561319190919063ffffffff16565b6131a690919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516130aa90614870565b5f6040518083038185875af1925050503d805f81146130e4576040519150601f19603f3d011682016040523d82523d5f602084013e6130e9565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161313590614870565b5f6040518083038185875af1925050503d805f811461316f576040519150601f19603f3d011682016040523d82523d5f602084013e613174565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f818361319e9190613a70565b905092915050565b5f81836131b39190613ade565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156131e1576131e0614884565b5b60405190808252806020026020018201604052801561320f5781602001602082028036833780820191505090505b50905030815f81518110613226576132256148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ee91906148f2565b81600181518110613302576133016148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133683060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7e565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016133ca959493929190614a0d565b5f604051808303815f87803b1580156133e1575f80fd5b505af11580156133f3573d5f803e3d5ffd5b505050505050565b5f818361340891906146d8565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561344757808201518184015260208101905061342c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61346c82613410565b613476818561341a565b935061348681856020860161342a565b61348f81613452565b840191505092915050565b5f6020820190508181035f8301526134b28184613462565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134e7826134be565b9050919050565b6134f7816134dd565b8114613501575f80fd5b50565b5f81359050613512816134ee565b92915050565b5f819050919050565b61352a81613518565b8114613534575f80fd5b50565b5f8135905061354581613521565b92915050565b5f8060408385031215613561576135606134ba565b5b5f61356e85828601613504565b925050602061357f85828601613537565b9150509250929050565b5f8115159050919050565b61359d81613589565b82525050565b5f6020820190506135b65f830184613594565b92915050565b6135c581613518565b82525050565b5f6020820190506135de5f8301846135bc565b92915050565b5f602082840312156135f9576135f86134ba565b5b5f61360684828501613504565b91505092915050565b61361881613589565b8114613622575f80fd5b50565b5f813590506136338161360f565b92915050565b5f806040838503121561364f5761364e6134ba565b5b5f61365c85828601613504565b925050602061366d85828601613625565b9150509250929050565b5f805f6060848603121561368e5761368d6134ba565b5b5f61369b86828701613504565b93505060206136ac86828701613504565b92505060406136bd86828701613537565b9150509250925092565b6136d0816134dd565b82525050565b5f6020820190506136e95f8301846136c7565b92915050565b5f60208284031215613704576137036134ba565b5b5f61371184828501613537565b91505092915050565b5f60ff82169050919050565b61372f8161371a565b82525050565b5f6020820190506137485f830184613726565b92915050565b5f60208284031215613763576137626134ba565b5b5f61377084828501613625565b91505092915050565b5f806040838503121561378f5761378e6134ba565b5b5f61379c85828601613537565b92505060206137ad85828601613537565b9150509250929050565b5f819050919050565b5f6137da6137d56137d0846134be565b6137b7565b6134be565b9050919050565b5f6137eb826137c0565b9050919050565b5f6137fc826137e1565b9050919050565b61380c816137f2565b82525050565b5f6020820190506138255f830184613803565b92915050565b6138348161371a565b811461383e575f80fd5b50565b5f8135905061384f8161382b565b92915050565b5f819050919050565b61386781613855565b8114613871575f80fd5b50565b5f813590506138828161385e565b92915050565b5f805f6060848603121561389f5761389e6134ba565b5b5f6138ac86828701613841565b93505060206138bd86828701613874565b92505060406138ce86828701613874565b9150509250925092565b5f80604083850312156138ee576138ed6134ba565b5b5f6138fb85828601613504565b925050602061390c85828601613504565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061395a57607f821691505b60208210810361396d5761396c613916565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f6139a7600d8361341a565b91506139b282613973565b602082019050919050565b5f6020820190508181035f8301526139d48161399b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613a0f601d8361341a565b9150613a1a826139db565b602082019050919050565b5f6020820190508181035f830152613a3c81613a03565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a7a82613518565b9150613a8583613518565b9250828202613a9381613518565b91508282048414831517613aaa57613aa9613a43565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ae882613518565b9150613af383613518565b925082613b0357613b02613ab1565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613b6860358361341a565b9150613b7382613b0e565b604082019050919050565b5f6020820190508181035f830152613b9581613b5c565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613bf660348361341a565b9150613c0182613b9c565b604082019050919050565b5f6020820190508181035f830152613c2381613bea565b9050919050565b5f613c3482613518565b9150613c3f83613518565b9250828201905080821115613c5757613c56613a43565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f613cb760288361341a565b9150613cc282613c5d565b604082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613d4057808604811115613d1c57613d1b613a43565b5b6001851615613d2b5780820291505b8081029050613d3985613ceb565b9450613d00565b94509492505050565b5f82613d585760019050613e13565b81613d65575f9050613e13565b8160018114613d7b5760028114613d8557613db4565b6001915050613e13565b60ff841115613d9757613d96613a43565b5b8360020a915084821115613dae57613dad613a43565b5b50613e13565b5060208310610133831016604e8410600b8410161715613de95782820a905083811115613de457613de3613a43565b5b613e13565b613df68484846001613cf7565b92509050818404811115613e0d57613e0c613a43565b5b81810290505b9392505050565b5f613e2482613518565b9150613e2f8361371a565b9250613e5c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d49565b905092915050565b7f43616e6e6f74207365742074784d6178206c6f776572207468616e20302e31255f82015250565b5f613e9860208361341a565b9150613ea382613e64565b602082019050919050565b5f6020820190508181035f830152613ec581613e8c565b9050919050565b7f43616e6e6f74207365742077616c6c65744d6178206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f2660248361341a565b9150613f3182613ecc565b604082019050919050565b5f6020820190508181035f830152613f5381613f1a565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f613f8e601f8361341a565b9150613f9982613f5a565b602082019050919050565b5f6020820190508181035f830152613fbb81613f82565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f613ff6601c8361341a565b915061400182613fc2565b602082019050919050565b5f6020820190508181035f83015261402381613fea565b9050919050565b61403381613855565b82525050565b5f60a08201905061404c5f83018861402a565b614059602083018761402a565b614066604083018661402a565b61407360608301856135bc565b61408060808301846136c7565b9695505050505050565b5f60608201905061409d5f83018661402a565b6140aa602083018561402a565b6140b760408301846135bc565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6140fd6002836140bf565b9150614108826140c9565b600282019050919050565b5f819050919050565b61412d61412882613855565b614113565b82525050565b5f61413d826140f1565b9150614149828561411c565b602082019150614159828461411c565b6020820191508190509392505050565b5f60808201905061417c5f83018761402a565b6141896020830186613726565b614196604083018561402a565b6141a3606083018461402a565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6141e060118361341a565b91506141eb826141ac565b602082019050919050565b5f6020820190508181035f83015261420d816141d4565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61424860118361341a565b915061425382614214565b602082019050919050565b5f6020820190508181035f8301526142758161423c565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f6142b0601e8361341a565b91506142bb8261427c565b602082019050919050565b5f6020820190508181035f8301526142dd816142a4565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f61431860208361341a565b9150614323826142e4565b602082019050919050565b5f6020820190508181035f8301526143458161430c565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614380601b8361341a565b915061438b8261434c565b602082019050919050565b5f6020820190508181035f8301526143ad81614374565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6143e860198361341a565b91506143f3826143b4565b602082019050919050565b5f6020820190508181035f830152614415816143dc565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f61445060198361341a565b915061445b8261441c565b602082019050919050565b5f6020820190508181035f83015261447d81614444565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f6144b860178361341a565b91506144c382614484565b602082019050919050565b5f6020820190508181035f8301526144e5816144ac565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61452060168361341a565b915061452b826144ec565b602082019050919050565b5f6020820190508181035f83015261454d81614514565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f74784d61782e0000000000000000000000000000000000000000000000000000602082015250565b5f6145ae60268361341a565b91506145b982614554565b604082019050919050565b5f6020820190508181035f8301526145db816145a2565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61461660138361341a565b9150614621826145e2565b602082019050919050565b5f6020820190508181035f8301526146438161460a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f2074784d61782e00000000000000000000000000000000000000000000000000602082015250565b5f6146a460278361341a565b91506146af8261464a565b604082019050919050565b5f6020820190508181035f8301526146d181614698565b9050919050565b5f6146e282613518565b91506146ed83613518565b925082820390508181111561470557614704613a43565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f61473f601d8361341a565b915061474a8261470b565b602082019050919050565b5f6020820190508181035f83015261476c81614733565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f6147a7601b8361341a565b91506147b282614773565b602082019050919050565b5f6020820190508181035f8301526147d48161479b565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f61480f60208361341a565b915061481a826147db565b602082019050919050565b5f6020820190508181035f83015261483c81614803565b9050919050565b5f81905092915050565b50565b5f61485b5f83614843565b91506148668261484d565b5f82019050919050565b5f61487a82614850565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506148ec816134ee565b92915050565b5f60208284031215614907576149066134ba565b5b5f614914848285016148de565b91505092915050565b5f819050919050565b5f61494061493b6149368461491d565b6137b7565b613518565b9050919050565b61495081614926565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614988816134dd565b82525050565b5f614999838361497f565b60208301905092915050565b5f602082019050919050565b5f6149bb82614956565b6149c58185614960565b93506149d083614970565b805f5b83811015614a005781516149e7888261498e565b97506149f2836149a5565b9250506001810190506149d3565b5085935050505092915050565b5f60a082019050614a205f8301886135bc565b614a2d6020830187614947565b8181036040830152614a3f81866149b1565b9050614a4e60608301856136c7565b614a5b60808301846135bc565b969550505050505056fea2646970667358221220bfdef46a486a2947b4d3320ffa2910bc5b51ddf31980fdb367031a819004c56b64736f6c63430008180033

Deployed Bytecode

0x60806040526004361061028b575f3560e01c8063715018a611610159578063b38d5ef4116100c0578063d4394cf811610079578063d4394cf8146109b6578063d929a083146109de578063dd62ed3e14610a08578063f2f8ff2a14610a44578063f2fde38b14610a6e578063fe31452414610a9657610292565b8063b38d5ef4146108c0578063b79c1886146108e8578063bd8807ab14610910578063c29feb031461093a578063c31c9c0714610964578063d3aea37b1461098e57610292565b80639957401511610112578063995740151461078e578063a457c2d7146107b8578063a5ece941146107f4578063a72905a21461081e578063a9059cbb1461085a578063b29564711461089657610292565b8063715018a6146106bc578063751039fc146106d25780638b27306d146106e85780638da5cb5b14610712578063924de9b71461073c57806395d89b411461076457610292565b8063313ce567116101fd5780634a62bb65116101b65780634a62bb65146105b2578063544d1ec9146105dc578063556482091461060457806359cd90311461062e57806367b740e91461065857806370a082311461068057610292565b8063313ce5671461049457806339509351146104be57806339b622d3146104fa5780633ad10ef6146105365780633af50e571461056057806345167f261461058a57610292565b8063226036611161024f578063226036611461038c57806323b872dd146103b4578063261e3c03146103f057806326991cc81461041a5780632c81355e1461044457806330534fc21461046c57610292565b806306fdde0314610296578063095ea7b3146102c0578063151d8039146102fc57806318160ddd146103265780631968af9e1461035057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610ac0565b6040516102b7919061349a565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e1919061354b565b610b4f565b6040516102f391906135a3565b60405180910390f35b348015610307575f80fd5b50610310610b6c565b60405161031d91906135a3565b60405180910390f35b348015610331575f80fd5b5061033a610b7f565b60405161034791906135cb565b60405180910390f35b34801561035b575f80fd5b50610376600480360381019061037191906135e4565b610b88565b60405161038391906135a3565b60405180910390f35b348015610397575f80fd5b506103b260048036038101906103ad9190613639565b610ba5565b005b3480156103bf575f80fd5b506103da60048036038101906103d59190613677565b610c79565b6040516103e791906135a3565b60405180910390f35b3480156103fb575f80fd5b50610404610d6b565b60405161041191906135cb565b60405180910390f35b348015610425575f80fd5b5061042e610d71565b60405161043b91906136d6565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906136ef565b610d96565b005b348015610477575f80fd5b50610492600480360381019061048d9190613639565b610ee3565b005b34801561049f575f80fd5b506104a8610fb7565b6040516104b59190613735565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061354b565b610fbf565b6040516104f191906135a3565b60405180910390f35b348015610505575f80fd5b50610520600480360381019061051b91906135e4565b611066565b60405161052d91906135a3565b60405180910390f35b348015610541575f80fd5b5061054a611083565b60405161055791906136d6565b60405180910390f35b34801561056b575f80fd5b506105746110a8565b60405161058191906135cb565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab9190613639565b6110ae565b005b3480156105bd575f80fd5b506105c6611211565b6040516105d391906135a3565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd91906136ef565b611223565b005b34801561060f575f80fd5b50610618611348565b60405161062591906135cb565b60405180910390f35b348015610639575f80fd5b5061064261134e565b60405161064f91906135cb565b60405180910390f35b348015610663575f80fd5b5061067e600480360381019061067991906136ef565b611354565b005b34801561068b575f80fd5b506106a660048036038101906106a191906135e4565b611479565b6040516106b391906135cb565b60405180910390f35b3480156106c7575f80fd5b506106d06114bf565b005b3480156106dd575f80fd5b506106e6611546565b005b3480156106f3575f80fd5b506106fc6115dd565b60405161070991906135cb565b60405180910390f35b34801561071d575f80fd5b506107266115e3565b60405161073391906136d6565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d919061374e565b61160b565b005b34801561076f575f80fd5b506107786116a4565b604051610785919061349a565b60405180910390f35b348015610799575f80fd5b506107a2611734565b6040516107af91906135cb565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d9919061354b565b61173a565b6040516107eb91906135a3565b60405180910390f35b3480156107ff575f80fd5b50610808611820565b60405161081591906136d6565b60405180910390f35b348015610829575f80fd5b50610844600480360381019061083f91906135e4565b611846565b60405161085191906135a3565b60405180910390f35b348015610865575f80fd5b50610880600480360381019061087b919061354b565b611863565b60405161088d91906135a3565b60405180910390f35b3480156108a1575f80fd5b506108aa611880565b6040516108b791906135cb565b60405180910390f35b3480156108cb575f80fd5b506108e660048036038101906108e19190613779565b611886565b005b3480156108f3575f80fd5b5061090e60048036038101906109099190613779565b611970565b005b34801561091b575f80fd5b50610924611a5a565b60405161093191906135cb565b60405180910390f35b348015610945575f80fd5b5061094e611a60565b60405161095b91906135cb565b60405180910390f35b34801561096f575f80fd5b50610978611a66565b6040516109859190613812565b60405180910390f35b348015610999575f80fd5b506109b460048036038101906109af9190613639565b611a8b565b005b3480156109c1575f80fd5b506109dc60048036038101906109d79190613888565b611b5f565b005b3480156109e9575f80fd5b506109f2611de1565b6040516109ff91906135a3565b60405180910390f35b348015610a13575f80fd5b50610a2e6004803603810190610a2991906138d8565b611df3565b604051610a3b91906135cb565b60405180910390f35b348015610a4f575f80fd5b50610a58611e75565b604051610a6591906135cb565b60405180910390f35b348015610a79575f80fd5b50610a946004803603810190610a8f91906135e4565b611e7b565b005b348015610aa1575f80fd5b50610aaa611f71565b604051610ab791906135cb565b60405180910390f35b60605f8054610ace90613943565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa90613943565b8015610b455780601f10610b1c57610100808354040283529160200191610b45565b820191905f5260205f20905b815481529060010190602001808311610b2857829003601f168201915b5050505050905090565b5f610b62610b5b611f77565b8484611f7e565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600f602052805f5260405f205f915054906101000a900460ff1681565b610bad611f77565b73ffffffffffffffffffffffffffffffffffffffff16610bcb6115e3565b73ffffffffffffffffffffffffffffffffffffffff1614610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c18906139bd565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610c85848484612141565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ccc611f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290613a25565b60405180910390fd5b610d5f85610d57611f77565b858403611f7e565b60019150509392505050565b60155481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d9e611f77565b73ffffffffffffffffffffffffffffffffffffffff16610dbc6115e3565b73ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e09906139bd565b60405180910390fd5b620186a06001610e20610b7f565b610e2a9190613a70565b610e349190613ade565b811015610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90613b7e565b60405180910390fd5b6103e86005610e83610b7f565b610e8d9190613a70565b610e979190613ade565b811115610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090613c0c565b60405180910390fd5b8060088190555050565b610eeb611f77565b73ffffffffffffffffffffffffffffffffffffffff16610f096115e3565b73ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f56906139bd565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f61105c610fcb611f77565b848460045f610fd8611f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110579190613c2a565b611f7e565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6110b6611f77565b73ffffffffffffffffffffffffffffffffffffffff166110d46115e3565b73ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906139bd565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090613ccd565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b61122b611f77565b73ffffffffffffffffffffffffffffffffffffffff166112496115e3565b73ffffffffffffffffffffffffffffffffffffffff161461129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906139bd565b60405180910390fd5b6112a7610fb7565b600a6112b39190613e1a565b6103e860016112c0610b7f565b6112ca9190613a70565b6112d49190613ade565b6112de9190613ade565b811015611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790613eae565b60405180910390fd5b611328610fb7565b600a6113349190613e1a565b8161133f9190613a70565b600a8190555050565b600e5481565b60085481565b61135c611f77565b73ffffffffffffffffffffffffffffffffffffffff1661137a6115e3565b73ffffffffffffffffffffffffffffffffffffffff16146113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c7906139bd565b60405180910390fd5b6113d8610fb7565b600a6113e49190613e1a565b6103e860056113f1610b7f565b6113fb9190613a70565b6114059190613ade565b61140f9190613ade565b811015611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613f3c565b60405180910390fd5b611459610fb7565b600a6114659190613e1a565b816114709190613a70565b60098190555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c7611f77565b73ffffffffffffffffffffffffffffffffffffffff166114e56115e3565b73ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611532906139bd565b60405180910390fd5b6115445f612c7b565b565b61154e611f77565b73ffffffffffffffffffffffffffffffffffffffff1661156c6115e3565b73ffffffffffffffffffffffffffffffffffffffff16146115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9906139bd565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b600d5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611613611f77565b73ffffffffffffffffffffffffffffffffffffffff166116316115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e906139bd565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116b390613943565b80601f01602080910402602001604051908101604052809291908181526020018280546116df90613943565b801561172a5780601f106117015761010080835404028352916020019161172a565b820191905f5260205f20905b81548152906001019060200180831161170d57829003601f168201915b5050505050905090565b60185481565b5f8060045f611747611f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f890613fa4565b60405180910390fd5b61181561180c611f77565b85858403611f7e565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f61187661186f611f77565b8484612141565b6001905092915050565b60165481565b61188e611f77565b73ffffffffffffffffffffffffffffffffffffffff166118ac6115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f9906139bd565b60405180910390fd5b81601781905550806018819055506018546017546119209190613c2a565b601681905550605f601654111561196c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119639061400c565b60405180910390fd5b5050565b611978611f77565b73ffffffffffffffffffffffffffffffffffffffff166119966115e3565b73ffffffffffffffffffffffffffffffffffffffff16146119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906139bd565b60405180910390fd5b8160148190555080601581905550601554601454611a0a9190613c2a565b601381905550605f6013541115611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d9061400c565b60405180910390fd5b5050565b60135481565b600a5481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a93611f77565b73ffffffffffffffffffffffffffffffffffffffff16611ab16115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906139bd565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611c11959493929190614039565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611c9b9392919061408a565b6040516020818303038152906040528051906020012090505f8282604051602001611cc7929190614133565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611d029493929190614169565b6020604051602081039080840390855afa158015611d22573d5f803e3d5ffd5b505050602060405103519050611d366115e3565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9a906141f6565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60175481565b611e83611f77565b73ffffffffffffffffffffffffffffffffffffffff16611ea16115e3565b73ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee906139bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9061425e565b60405180910390fd5b611f6e81612c7b565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe3906142c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361205a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120519061432e565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161213491906135cb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a690614396565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361221d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612214906143fe565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e90614466565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612328906144ce565b60405180910390fd5b5f81036123485761234383835f612d3e565b612c76565b60125f9054906101000a900460ff161561282a576123646115e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d257506123a26115e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240a57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612444575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561245c575060195f9054906101000a900460ff16155b1561282957600b5f9054906101000a900460ff1661254f5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061250f575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254590614536565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125ec5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561269357600a54811115612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d906145c4565b60405180910390fd5b60095461264283611479565b8261264d9190613c2a565b111561268e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126859061462c565b60405180910390fd5b612828565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127305750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561277f57600a5481111561277a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612771906146ba565b60405180910390fd5b612827565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612826576009546127d983611479565b826127e49190613c2a565b1115612825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281c9061462c565b60405180910390fd5b5b5b5b5b5b5f61283430611479565b90505f6008548210159050600b60019054906101000a900460ff1680156128585750805b8015612870575060195f9054906101000a900460ff16155b80156128c3575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612916575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612969575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129aa57600160195f6101000a81548160ff021916908315150217905550612990612fb6565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a58575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a61575f90505b5f8115612c665760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612abf57505f601354115b15612b5757612aec6064612ade6013548861319190919063ffffffff16565b6131a690919063ffffffff16565b905060135460155482612aff9190613a70565b612b099190613ade565b600e5f828254612b199190613c2a565b9250508190555060135460145482612b319190613a70565b612b3b9190613ade565b600d5f828254612b4b9190613c2a565b92505081905550612c43565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bae57505f601654115b15612c4257612bdb6064612bcd6016548861319190919063ffffffff16565b6131a690919063ffffffff16565b905060165460185482612bee9190613a70565b612bf89190613ade565b600e5f828254612c089190613c2a565b9250508190555060165460175482612c209190613a70565b612c2a9190613ade565b600d5f828254612c3a9190613c2a565b925050819055505b5b5f811115612c5757612c56873083612d3e565b5b8085612c6391906146d8565b94505b612c71878787612d3e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614755565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e11906147bd565b60405180910390fd5b612e258383836131bb565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea090614825565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f399190613c2a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f9d91906135cb565b60405180910390a3612fb08484846131c0565b50505050565b5f80600e54600d54612fc89190613c2a565b90505f612fd430611479565b90505f821480612fe357505f81145b15612ff05750505061318f565b6014600854612fff9190613a70565b8111156130185760146008546130159190613a70565b90505b5f479050613025826131c5565b5f61303982476133fb90919063ffffffff16565b90505f61306385613055600e548561319190919063ffffffff16565b6131a690919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516130aa90614870565b5f6040518083038185875af1925050503d805f81146130e4576040519150601f19603f3d011682016040523d82523d5f602084013e6130e9565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161313590614870565b5f6040518083038185875af1925050503d805f811461316f576040519150601f19603f3d011682016040523d82523d5f602084013e613174565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f818361319e9190613a70565b905092915050565b5f81836131b39190613ade565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156131e1576131e0614884565b5b60405190808252806020026020018201604052801561320f5781602001602082028036833780820191505090505b50905030815f81518110613226576132256148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ee91906148f2565b81600181518110613302576133016148b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133683060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7e565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016133ca959493929190614a0d565b5f604051808303815f87803b1580156133e1575f80fd5b505af11580156133f3573d5f803e3d5ffd5b505050505050565b5f818361340891906146d8565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561344757808201518184015260208101905061342c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61346c82613410565b613476818561341a565b935061348681856020860161342a565b61348f81613452565b840191505092915050565b5f6020820190508181035f8301526134b28184613462565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134e7826134be565b9050919050565b6134f7816134dd565b8114613501575f80fd5b50565b5f81359050613512816134ee565b92915050565b5f819050919050565b61352a81613518565b8114613534575f80fd5b50565b5f8135905061354581613521565b92915050565b5f8060408385031215613561576135606134ba565b5b5f61356e85828601613504565b925050602061357f85828601613537565b9150509250929050565b5f8115159050919050565b61359d81613589565b82525050565b5f6020820190506135b65f830184613594565b92915050565b6135c581613518565b82525050565b5f6020820190506135de5f8301846135bc565b92915050565b5f602082840312156135f9576135f86134ba565b5b5f61360684828501613504565b91505092915050565b61361881613589565b8114613622575f80fd5b50565b5f813590506136338161360f565b92915050565b5f806040838503121561364f5761364e6134ba565b5b5f61365c85828601613504565b925050602061366d85828601613625565b9150509250929050565b5f805f6060848603121561368e5761368d6134ba565b5b5f61369b86828701613504565b93505060206136ac86828701613504565b92505060406136bd86828701613537565b9150509250925092565b6136d0816134dd565b82525050565b5f6020820190506136e95f8301846136c7565b92915050565b5f60208284031215613704576137036134ba565b5b5f61371184828501613537565b91505092915050565b5f60ff82169050919050565b61372f8161371a565b82525050565b5f6020820190506137485f830184613726565b92915050565b5f60208284031215613763576137626134ba565b5b5f61377084828501613625565b91505092915050565b5f806040838503121561378f5761378e6134ba565b5b5f61379c85828601613537565b92505060206137ad85828601613537565b9150509250929050565b5f819050919050565b5f6137da6137d56137d0846134be565b6137b7565b6134be565b9050919050565b5f6137eb826137c0565b9050919050565b5f6137fc826137e1565b9050919050565b61380c816137f2565b82525050565b5f6020820190506138255f830184613803565b92915050565b6138348161371a565b811461383e575f80fd5b50565b5f8135905061384f8161382b565b92915050565b5f819050919050565b61386781613855565b8114613871575f80fd5b50565b5f813590506138828161385e565b92915050565b5f805f6060848603121561389f5761389e6134ba565b5b5f6138ac86828701613841565b93505060206138bd86828701613874565b92505060406138ce86828701613874565b9150509250925092565b5f80604083850312156138ee576138ed6134ba565b5b5f6138fb85828601613504565b925050602061390c85828601613504565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061395a57607f821691505b60208210810361396d5761396c613916565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f6139a7600d8361341a565b91506139b282613973565b602082019050919050565b5f6020820190508181035f8301526139d48161399b565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613a0f601d8361341a565b9150613a1a826139db565b602082019050919050565b5f6020820190508181035f830152613a3c81613a03565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a7a82613518565b9150613a8583613518565b9250828202613a9381613518565b91508282048414831517613aaa57613aa9613a43565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ae882613518565b9150613af383613518565b925082613b0357613b02613ab1565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613b6860358361341a565b9150613b7382613b0e565b604082019050919050565b5f6020820190508181035f830152613b9581613b5c565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613bf660348361341a565b9150613c0182613b9c565b604082019050919050565b5f6020820190508181035f830152613c2381613bea565b9050919050565b5f613c3482613518565b9150613c3f83613518565b9250828201905080821115613c5757613c56613a43565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f613cb760288361341a565b9150613cc282613c5d565b604082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613d4057808604811115613d1c57613d1b613a43565b5b6001851615613d2b5780820291505b8081029050613d3985613ceb565b9450613d00565b94509492505050565b5f82613d585760019050613e13565b81613d65575f9050613e13565b8160018114613d7b5760028114613d8557613db4565b6001915050613e13565b60ff841115613d9757613d96613a43565b5b8360020a915084821115613dae57613dad613a43565b5b50613e13565b5060208310610133831016604e8410600b8410161715613de95782820a905083811115613de457613de3613a43565b5b613e13565b613df68484846001613cf7565b92509050818404811115613e0d57613e0c613a43565b5b81810290505b9392505050565b5f613e2482613518565b9150613e2f8361371a565b9250613e5c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d49565b905092915050565b7f43616e6e6f74207365742074784d6178206c6f776572207468616e20302e31255f82015250565b5f613e9860208361341a565b9150613ea382613e64565b602082019050919050565b5f6020820190508181035f830152613ec581613e8c565b9050919050565b7f43616e6e6f74207365742077616c6c65744d6178206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f2660248361341a565b9150613f3182613ecc565b604082019050919050565b5f6020820190508181035f830152613f5381613f1a565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f613f8e601f8361341a565b9150613f9982613f5a565b602082019050919050565b5f6020820190508181035f830152613fbb81613f82565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f613ff6601c8361341a565b915061400182613fc2565b602082019050919050565b5f6020820190508181035f83015261402381613fea565b9050919050565b61403381613855565b82525050565b5f60a08201905061404c5f83018861402a565b614059602083018761402a565b614066604083018661402a565b61407360608301856135bc565b61408060808301846136c7565b9695505050505050565b5f60608201905061409d5f83018661402a565b6140aa602083018561402a565b6140b760408301846135bc565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6140fd6002836140bf565b9150614108826140c9565b600282019050919050565b5f819050919050565b61412d61412882613855565b614113565b82525050565b5f61413d826140f1565b9150614149828561411c565b602082019150614159828461411c565b6020820191508190509392505050565b5f60808201905061417c5f83018761402a565b6141896020830186613726565b614196604083018561402a565b6141a3606083018461402a565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6141e060118361341a565b91506141eb826141ac565b602082019050919050565b5f6020820190508181035f83015261420d816141d4565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61424860118361341a565b915061425382614214565b602082019050919050565b5f6020820190508181035f8301526142758161423c565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f6142b0601e8361341a565b91506142bb8261427c565b602082019050919050565b5f6020820190508181035f8301526142dd816142a4565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f61431860208361341a565b9150614323826142e4565b602082019050919050565b5f6020820190508181035f8301526143458161430c565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614380601b8361341a565b915061438b8261434c565b602082019050919050565b5f6020820190508181035f8301526143ad81614374565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6143e860198361341a565b91506143f3826143b4565b602082019050919050565b5f6020820190508181035f830152614415816143dc565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f61445060198361341a565b915061445b8261441c565b602082019050919050565b5f6020820190508181035f83015261447d81614444565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f6144b860178361341a565b91506144c382614484565b602082019050919050565b5f6020820190508181035f8301526144e5816144ac565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61452060168361341a565b915061452b826144ec565b602082019050919050565b5f6020820190508181035f83015261454d81614514565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f74784d61782e0000000000000000000000000000000000000000000000000000602082015250565b5f6145ae60268361341a565b91506145b982614554565b604082019050919050565b5f6020820190508181035f8301526145db816145a2565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61461660138361341a565b9150614621826145e2565b602082019050919050565b5f6020820190508181035f8301526146438161460a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f2074784d61782e00000000000000000000000000000000000000000000000000602082015250565b5f6146a460278361341a565b91506146af8261464a565b604082019050919050565b5f6020820190508181035f8301526146d181614698565b9050919050565b5f6146e282613518565b91506146ed83613518565b925082820390508181111561470557614704613a43565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f61473f601d8361341a565b915061474a8261470b565b602082019050919050565b5f6020820190508181035f83015261476c81614733565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f6147a7601b8361341a565b91506147b282614773565b602082019050919050565b5f6020820190508181035f8301526147d48161479b565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f61480f60208361341a565b915061481a826147db565b602082019050919050565b5f6020820190508181035f83015261483c81614803565b9050919050565b5f81905092915050565b50565b5f61485b5f83614843565b91506148668261484d565b5f82019050919050565b5f61487a82614850565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506148ec816134ee565b92915050565b5f60208284031215614907576149066134ba565b5b5f614914848285016148de565b91505092915050565b5f819050919050565b5f61494061493b6149368461491d565b6137b7565b613518565b9050919050565b61495081614926565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614988816134dd565b82525050565b5f614999838361497f565b60208301905092915050565b5f602082019050919050565b5f6149bb82614956565b6149c58185614960565b93506149d083614970565b805f5b83811015614a005781516149e7888261498e565b97506149f2836149a5565b9250506001810190506149d3565b5085935050505092915050565b5f60a082019050614a205f8301886135bc565b614a2d6020830187614947565b8181036040830152614a3f81866149b1565b9050614a4e60608301856136c7565b614a5b60808301846135bc565b969550505050505056fea2646970667358221220bfdef46a486a2947b4d3320ffa2910bc5b51ddf31980fdb367031a819004c56b64736f6c63430008180033

Deployed Bytecode Sourcemap

13991:9776:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9664:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10236:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14278:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9985:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14461:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20602:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10916:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14733:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14112:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20961:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21833:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9884:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11490:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14518:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14357:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14695:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22567:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14619:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21576:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14428:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14148:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21313:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10101:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;972:103;;;;;;;;;;;;;:::i;:::-;;20740:93;;;;;;;;;;;;;:::i;:::-;;14391:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;689:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20843:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9772:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14837:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11709:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14319:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14570:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11321:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14767:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21954:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22255:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14661:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14208:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14069:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20464:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22830:934;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14237:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10757:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14800:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;784:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14177:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9664:100;9718:13;9751:5;9744:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9664:100;:::o;10236:169::-;10319:4;10336:39;10345:12;:10;:12::i;:::-;10359:7;10368:6;10336:8;:39::i;:::-;10393:4;10386:11;;10236:169;;;;:::o;14278:32::-;;;;;;;;;;;;;:::o;9985:108::-;10046:7;10073:12;;10066:19;;9985:108;:::o;14461:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;20602:130::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20719:5:::1;20696:11;:20;20708:7;20696:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20602:130:::0;;:::o;10916:397::-;11013:4;11030:27;11040:4;11046:2;11050:6;11030:9;:27::i;:::-;11068:16;11087:11;:17;11099:4;11087:17;;;;;;;;;;;;;;;:31;11105:12;:10;:12::i;:::-;11087:31;;;;;;;;;;;;;;;;11068:50;;11149:6;11137:8;:18;;11129:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11225:47;11234:4;11240:12;:10;:12::i;:::-;11265:6;11254:8;:17;11225:8;:47::i;:::-;11301:4;11294:11;;;10916:397;;;;;:::o;14733:25::-;;;;:::o;14112:23::-;;;;;;;;;;;;;:::o;20961:344::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21094:6:::1;21089:1;21073:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21072:28;;;;:::i;:::-;21062:6;:38;;21054:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;21209:4;21204:1;21188:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21187:26;;;;:::i;:::-;21177:6;:36;;21169:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;21291:6;21281:7;:16;;;;20961:344:::0;:::o;21833:113::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21932:6:::1;21914:9;:15;21924:4;21914:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;21833:113:::0;;:::o;9884:93::-;9942:5;9967:2;9960:9;;9884:93;:::o;11490:211::-;11576:4;11593:78;11602:12;:10;:12::i;:::-;11616:7;11662:8;11625:11;:25;11637:12;:10;:12::i;:::-;11625:25;;;;;;;;;;;;;;;:34;11651:7;11625:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11593:8;:78::i;:::-;11689:4;11682:11;;11490:211;;;;:::o;14518:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;14357:25::-;;;;;;;;;;;;;:::o;14695:31::-;;;;:::o;22567:213::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22686:8:::1;;;;;;;;;;;22678:16;;:4;:16;;::::0;22670:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22767:5;22750:8;:14;22759:4;22750:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;22567:213:::0;;:::o;14619:33::-;;;;;;;;;;;;;:::o;21576:249::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21723:10:::1;:8;:10::i;:::-;21717:2;:16;;;;:::i;:::-;21708:4;21703:1;21687:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21686:26;;;;:::i;:::-;21685:49;;;;:::i;:::-;21675:6;:59;;21667:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;21806:10;:8;:10::i;:::-;21800:2;:16;;;;:::i;:::-;21790:6;:27;;;;:::i;:::-;21782:5;:35;;;;21576:249:::0;:::o;14428:24::-;;;;:::o;14148:22::-;;;;:::o;21313:255::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21458:10:::1;:8;:10::i;:::-;21452:2;:16;;;;:::i;:::-;21443:4;21438:1;21422:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21421:26;;;;:::i;:::-;21420:49;;;;:::i;:::-;21410:6;:59;;21402:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;21549:10;:8;:10::i;:::-;21543:2;:16;;;;:::i;:::-;21533:6;:27;;;;:::i;:::-;21521:9;:39;;;;21313:255:::0;:::o;10101:127::-;10175:7;10202:9;:18;10212:7;10202:18;;;;;;;;;;;;;;;;10195:25;;10101:127;;;:::o;972:103::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1037:30:::1;1064:1;1037:18;:30::i;:::-;972:103::o:0;20740:93::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20820:5:::1;20803:14;;:22;;;;;;;;;;;;;;;;;;20740:93::o:0;14391:30::-;;;;:::o;689:87::-;735:7;762:6;;;;;;;;;;;755:13;;689:87;:::o;20843:110::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20938:7:::1;20923:12;;:22;;;;;;;;;;;;;;;;;;20843:110:::0;:::o;9772:104::-;9828:13;9861:7;9854:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9772:104;:::o;14837:24::-;;;;:::o;11709:360::-;11795:4;11812:16;11831:11;:25;11843:12;:10;:12::i;:::-;11831:25;;;;;;;;;;;;;;;:34;11857:7;11831:34;;;;;;;;;;;;;;;;11812:53;;11896:8;11884;:20;;11876:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11976:52;11985:12;:10;:12::i;:::-;11999:7;12019:8;12008;:19;11976:8;:52::i;:::-;12057:4;12050:11;;;11709:360;;;;:::o;14319:31::-;;;;;;;;;;;;;:::o;14570:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11321:161::-;11400:4;11417:35;11427:12;:10;:12::i;:::-;11441:2;11445:6;11417:9;:35::i;:::-;11470:4;11463:11;;11321:161;;;;:::o;14767:26::-;;;;:::o;21954:293::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22074:12:::1;22056:15;:30;;;;22109:9;22097;:21;;;;22161:9;;22143:15;;:27;;;;:::i;:::-;22129:11;:41;;;;22204:2;22189:11;;:17;;22181:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21954:293:::0;;:::o;22255:300::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22377:12:::1;22358:16;:31;;;;22413:9;22400:10;:22;;;;22467:10;;22448:16;;:29;;;;:::i;:::-;22433:12;:44;;;;22512:2;22496:12;;:18;;22488:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;22255:300:::0;;:::o;14661:27::-;;;;:::o;14208:20::-;;;;:::o;14069:36::-;;;;;;;;;;;;;:::o;20464:130::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20581:5:::1;20556:16;:22;20573:4;20556:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;20464:130:::0;;:::o;22830:934::-;22916:18;22972:95;23092:22;;;;;;;;;;;;;;;;;23082:33;;;;;;23140:10;;;;;;;;;;;;;;;;;23130:21;;;;;;23166:13;23202:4;22947:271;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22937:282;;;;;;22916:303;;23230:18;23286:49;23360:23;;;;;;;;;;;;;;;;;23350:34;;;;;;23407:1;23261:159;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23251:170;;;;;;23230:191;;23432:14;23515:10;23540;23459:118;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23449:129;;;;;;23432:146;;23591:14;23608:26;23618:6;23626:1;23629;23632;23608:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23591:43;;23663:7;:5;:7::i;:::-;23653:17;;:6;:17;;;23645:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;23722:4;23705:14;;:21;;;;;;;;;;;;;;;;;;23752:4;23737:12;;:19;;;;;;;;;;;;;;;;;;22905:859;;;;22830:934;;;:::o;14237:34::-;;;;;;;;;;;;;:::o;10757:151::-;10846:7;10873:11;:18;10885:5;10873:18;;;;;;;;;;;;;;;:27;10892:7;10873:27;;;;;;;;;;;;;;;;10866:34;;10757:151;;;;:::o;14800:30::-;;;;:::o;784:180::-;631:12;:10;:12::i;:::-;620:23;;:7;:5;:7::i;:::-;:23;;;612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;893:1:::1;873:22;;:8;:22;;::::0;865:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;928:28;947:8;928:18;:28::i;:::-;784:180:::0;:::o;14177:24::-;;;;:::o;126:98::-;179:7;206:10;199:17;;126:98;:::o;10413:336::-;10532:1;10515:19;;:5;:19;;;10507:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10607:1;10588:21;;:7;:21;;;10580:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10687:6;10657:11;:18;10669:5;10657:18;;;;;;;;;;;;;;;:27;10676:7;10657:27;;;;;;;;;;;;;;;:36;;;;10725:7;10709:32;;10718:5;10709:32;;;10734:6;10709:32;;;;;;:::i;:::-;;;;;;;;10413:336;;;:::o;16302:2629::-;16450:1;16434:18;;:4;:18;;;16426:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16517:1;16503:16;;:2;:16;;;16495:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16569:9;:15;16579:4;16569:15;;;;;;;;;;;;;;;;;;;;;;;;;16568:16;16560:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16634:9;:13;16644:2;16634:13;;;;;;;;;;;;;;;;;;;;;;;;;16633:14;16625:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16702:1;16692:6;:11;16688:93;;16720:28;16736:4;16742:2;16746:1;16720:15;:28::i;:::-;16763:7;;16688:93;16797:14;;;;;;;;;;;16793:914;;;16840:7;:5;:7::i;:::-;16832:15;;:4;:15;;;;:32;;;;;16857:7;:5;:7::i;:::-;16851:13;;:2;:13;;;;16832:32;:52;;;;;16882:1;16868:16;;:2;:16;;;;16832:52;:77;;;;;16902:6;16888:21;;:2;:21;;;;16832:77;:91;;;;;16914:9;;;;;;;;;;;16913:10;16832:91;16828:868;;;16949:14;;;;;;;;;;;16944:135;;16996:11;:17;17008:4;16996:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;17017:11;:15;17029:2;17017:15;;;;;;;;;;;;;;;;;;;;;;;;;16996:36;16988:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16944:135;17103:8;:14;17112:4;17103:14;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;17122:16;:20;17139:2;17122:20;;;;;;;;;;;;;;;;;;;;;;;;;17121:21;17103:39;17099:582;;;17185:5;;17175:6;:15;;17167:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17290:9;;17273:13;17283:2;17273:9;:13::i;:::-;17264:6;:22;;;;:::i;:::-;:35;;17256:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17099:582;;;17370:8;:12;17379:2;17370:12;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;17387:16;:22;17404:4;17387:22;;;;;;;;;;;;;;;;;;;;;;;;;17386:23;17370:39;17366:315;;;17452:5;;17442:6;:15;;17434:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17366:315;;;17549:16;:20;17566:2;17549:20;;;;;;;;;;;;;;;;;;;;;;;;;17544:137;;17628:9;;17611:13;17621:2;17611:9;:13::i;:::-;17602:6;:22;;;;:::i;:::-;:35;;17594:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17544:137;17366:315;17099:582;16828:868;16793:914;17721:20;17744:24;17762:4;17744:9;:24::i;:::-;17721:47;;17779:12;17810:7;;17794:12;:23;;17779:38;;17832:12;;;;;;;;;;;:23;;;;;17848:7;17832:23;:37;;;;;17860:9;;;;;;;;;;;17859:10;17832:37;:69;;;;;17887:8;:14;17896:4;17887:14;;;;;;;;;;;;;;;;;;;;;;;;;17886:15;17832:69;:91;;;;;17906:11;:17;17918:4;17906:17;;;;;;;;;;;;;;;;;;;;;;;;;17905:18;17832:91;:111;;;;;17928:11;:15;17940:2;17928:15;;;;;;;;;;;;;;;;;;;;;;;;;17927:16;17832:111;17828:216;;;17972:4;17960:9;;:16;;;;;;;;;;;;;;;;;;17991:9;:7;:9::i;:::-;18027:5;18015:9;;:17;;;;;;;;;;;;;;;;;;17828:216;18056:9;18069;;;;;;;;;;;18068:10;18056:22;;18093:11;:17;18105:4;18093:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;18114:11;:15;18126:2;18114:15;;;;;;;;;;;;;;;;;;;;;;;;;18093:36;18089:67;;;18151:5;18144:12;;18089:67;18169:12;18200:4;18196:682;;;18225:8;:12;18234:2;18225:12;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;18256:1;18241:12;;:16;18225:32;18221:529;;;18285:33;18314:3;18285:24;18296:12;;18285:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;18278:40;;18372:12;;18358:10;;18351:4;:17;;;;:::i;:::-;18350:34;;;;:::i;:::-;18337:9;;:47;;;;;;;:::i;:::-;;;;;;;;18450:12;;18430:16;;18423:4;:23;;;;:::i;:::-;18422:40;;;;:::i;:::-;18403:15;;:59;;;;;;;:::i;:::-;;;;;;;;18221:529;;;18501:8;:14;18510:4;18501:14;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;18533:1;18519:11;;:15;18501:33;18497:253;;;18562:32;18590:3;18562:23;18573:11;;18562:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;18555:39;;18647:11;;18634:9;;18627:4;:16;;;;:::i;:::-;18626:32;;;;:::i;:::-;18613:9;;:45;;;;;;;:::i;:::-;;;;;;;;18723:11;;18704:15;;18697:4;:22;;;;:::i;:::-;18696:38;;;;:::i;:::-;18677:15;;:57;;;;;;;:::i;:::-;;;;;;;;18497:253;18221:529;18775:1;18768:4;:8;18764:73;;;18795:42;18811:4;18825;18832;18795:15;:42::i;:::-;18764:73;18862:4;18852:14;;;;;:::i;:::-;;;18196:682;18890:33;18906:4;18912:2;18916:6;18890:15;:33::i;:::-;16415:2516;;;;16302:2629;;;;:::o;1083:191::-;1157:16;1176:6;;;;;;;;;;;1157:25;;1202:8;1193:6;;:17;;;;;;;;;;;;;;;;;;1257:8;1226:40;;1247:8;1226:40;;;;;;;;;;;;1146:128;1083:191;:::o;13225:607::-;13338:1;13322:18;;:4;:18;;;13314:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13407:1;13393:16;;:2;:16;;;13385:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13452:38;13473:4;13479:2;13483:6;13452:20;:38::i;:::-;13501:19;13523:9;:15;13533:4;13523:15;;;;;;;;;;;;;;;;13501:37;;13572:6;13557:11;:21;;13549:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13683:6;13669:11;:20;13651:9;:15;13661:4;13651:15;;;;;;;;;;;;;;;:38;;;;13728:6;13711:9;:13;13721:2;13711:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13765:2;13750:26;;13759:4;13750:26;;;13769:6;13750:26;;;;;;:::i;:::-;;;;;;;;13787:37;13807:4;13813:2;13817:6;13787:19;:37::i;:::-;13303:529;13225:607;;;:::o;18941:816::-;18979:12;19002:25;19048:9;;19030:15;;:27;;;;:::i;:::-;19002:55;;19068:20;19091:24;19109:4;19091:9;:24::i;:::-;19068:47;;19153:1;19132:17;:22;:43;;;;19174:1;19158:12;:17;19132:43;19128:69;;;19190:7;;;;;19128:69;19238:2;19228:7;;:12;;;;:::i;:::-;19213;:27;19209:73;;;19280:2;19270:7;;:12;;;;:::i;:::-;19255:27;;19209:73;19295:22;19320:21;19295:46;;19352:23;19362:12;19352:9;:23::i;:::-;19388:18;19409:41;19435:14;19409:21;:25;;:41;;;;:::i;:::-;19388:62;;19461:17;19481:48;19511:17;19481:25;19496:9;;19481:10;:14;;:25;;;;:::i;:::-;:29;;:48;;;;:::i;:::-;19461:68;;19564:10;;;;;;;;;;;19556:24;;19588:9;19556:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19542:60;;;;;19635:16;;;;;;;;;;;19627:30;;19666:21;19627:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19613:80;;;;;19724:1;19706:15;:19;;;;19748:1;19736:9;:13;;;;18968:789;;;;;;18941:816;:::o;1305:98::-;1363:7;1394:1;1390;:5;;;;:::i;:::-;1383:12;;1305:98;;;;:::o;1689:::-;1747:7;1778:1;1774;:5;;;;:::i;:::-;1767:12;;1689:98;;;;:::o;13092:125::-;;;;:::o;13840:144::-;;;;:::o;19766:552::-;19880:21;19918:1;19904:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19880:40;;19949:4;19931;19936:1;19931:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19975:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19965:4;19970:1;19965:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;20005:52;20022:4;20037:10;;;;;;;;;;;20050:6;20005:8;:52::i;:::-;20096:10;;;;;;;;;;;:61;;;20172:6;20193:1;20237:4;20264;20284:15;20096:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19809:509;19766:552;:::o;2334:98::-;2392:7;2423:1;2419;:5;;;;:::i;:::-;2412:12;;2334:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:116::-;4203:21;4218:5;4203:21;:::i;:::-;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4183:60;4133:116;:::o;4255:133::-;4298:5;4336:6;4323:20;4314:29;;4352:30;4376:5;4352:30;:::i;:::-;4255:133;;;;:::o;4394:468::-;4459:6;4467;4516:2;4504:9;4495:7;4491:23;4487:32;4484:119;;;4522:79;;:::i;:::-;4484:119;4642:1;4667:53;4712:7;4703:6;4692:9;4688:22;4667:53;:::i;:::-;4657:63;;4613:117;4769:2;4795:50;4837:7;4828:6;4817:9;4813:22;4795:50;:::i;:::-;4785:60;;4740:115;4394:468;;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:118::-;5580:24;5598:5;5580:24;:::i;:::-;5575:3;5568:37;5493:118;;:::o;5617:222::-;5710:4;5748:2;5737:9;5733:18;5725:26;;5761:71;5829:1;5818:9;5814:17;5805:6;5761:71;:::i;:::-;5617:222;;;;:::o;5845:329::-;5904:6;5953:2;5941:9;5932:7;5928:23;5924:32;5921:119;;;5959:79;;:::i;:::-;5921:119;6079:1;6104:53;6149:7;6140:6;6129:9;6125:22;6104:53;:::i;:::-;6094:63;;6050:117;5845:329;;;;:::o;6180:86::-;6215:7;6255:4;6248:5;6244:16;6233:27;;6180:86;;;:::o;6272:112::-;6355:22;6371:5;6355:22;:::i;:::-;6350:3;6343:35;6272:112;;:::o;6390:214::-;6479:4;6517:2;6506:9;6502:18;6494:26;;6530:67;6594:1;6583:9;6579:17;6570:6;6530:67;:::i;:::-;6390:214;;;;:::o;6610:323::-;6666:6;6715:2;6703:9;6694:7;6690:23;6686:32;6683:119;;;6721:79;;:::i;:::-;6683:119;6841:1;6866:50;6908:7;6899:6;6888:9;6884:22;6866:50;:::i;:::-;6856:60;;6812:114;6610:323;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:152::-;7841:9;7874:37;7905:5;7874:37;:::i;:::-;7861:50;;7765:152;;;:::o;7923:183::-;8036:63;8093:5;8036:63;:::i;:::-;8031:3;8024:76;7923:183;;:::o;8112:274::-;8231:4;8269:2;8258:9;8254:18;8246:26;;8282:97;8376:1;8365:9;8361:17;8352:6;8282:97;:::i;:::-;8112:274;;;;:::o;8392:118::-;8463:22;8479:5;8463:22;:::i;:::-;8456:5;8453:33;8443:61;;8500:1;8497;8490:12;8443:61;8392:118;:::o;8516:135::-;8560:5;8598:6;8585:20;8576:29;;8614:31;8639:5;8614:31;:::i;:::-;8516:135;;;;:::o;8657:77::-;8694:7;8723:5;8712:16;;8657:77;;;:::o;8740:122::-;8813:24;8831:5;8813:24;:::i;:::-;8806:5;8803:35;8793:63;;8852:1;8849;8842:12;8793:63;8740:122;:::o;8868:139::-;8914:5;8952:6;8939:20;8930:29;;8968:33;8995:5;8968:33;:::i;:::-;8868:139;;;;:::o;9013:615::-;9088:6;9096;9104;9153:2;9141:9;9132:7;9128:23;9124:32;9121:119;;;9159:79;;:::i;:::-;9121:119;9279:1;9304:51;9347:7;9338:6;9327:9;9323:22;9304:51;:::i;:::-;9294:61;;9250:115;9404:2;9430:53;9475:7;9466:6;9455:9;9451:22;9430:53;:::i;:::-;9420:63;;9375:118;9532:2;9558:53;9603:7;9594:6;9583:9;9579:22;9558:53;:::i;:::-;9548:63;;9503:118;9013:615;;;;;:::o;9634:474::-;9702:6;9710;9759:2;9747:9;9738:7;9734:23;9730:32;9727:119;;;9765:79;;:::i;:::-;9727:119;9885:1;9910:53;9955:7;9946:6;9935:9;9931:22;9910:53;:::i;:::-;9900:63;;9856:117;10012:2;10038:53;10083:7;10074:6;10063:9;10059:22;10038:53;:::i;:::-;10028:63;;9983:118;9634:474;;;;;:::o;10114:180::-;10162:77;10159:1;10152:88;10259:4;10256:1;10249:15;10283:4;10280:1;10273:15;10300:320;10344:6;10381:1;10375:4;10371:12;10361:22;;10428:1;10422:4;10418:12;10449:18;10439:81;;10505:4;10497:6;10493:17;10483:27;;10439:81;10567:2;10559:6;10556:14;10536:18;10533:38;10530:84;;10586:18;;:::i;:::-;10530:84;10351:269;10300:320;;;:::o;10626:163::-;10766:15;10762:1;10754:6;10750:14;10743:39;10626:163;:::o;10795:366::-;10937:3;10958:67;11022:2;11017:3;10958:67;:::i;:::-;10951:74;;11034:93;11123:3;11034:93;:::i;:::-;11152:2;11147:3;11143:12;11136:19;;10795:366;;;:::o;11167:419::-;11333:4;11371:2;11360:9;11356:18;11348:26;;11420:9;11414:4;11410:20;11406:1;11395:9;11391:17;11384:47;11448:131;11574:4;11448:131;:::i;:::-;11440:139;;11167:419;;;:::o;11592:179::-;11732:31;11728:1;11720:6;11716:14;11709:55;11592:179;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:180::-;12622:77;12619:1;12612:88;12719:4;12716:1;12709:15;12743:4;12740:1;12733:15;12760:410;12800:7;12823:20;12841:1;12823:20;:::i;:::-;12818:25;;12857:20;12875:1;12857:20;:::i;:::-;12852:25;;12912:1;12909;12905:9;12934:30;12952:11;12934:30;:::i;:::-;12923:41;;13113:1;13104:7;13100:15;13097:1;13094:22;13074:1;13067:9;13047:83;13024:139;;13143:18;;:::i;:::-;13024:139;12808:362;12760:410;;;;:::o;13176:180::-;13224:77;13221:1;13214:88;13321:4;13318:1;13311:15;13345:4;13342:1;13335:15;13362:185;13402:1;13419:20;13437:1;13419:20;:::i;:::-;13414:25;;13453:20;13471:1;13453:20;:::i;:::-;13448:25;;13492:1;13482:35;;13497:18;;:::i;:::-;13482:35;13539:1;13536;13532:9;13527:14;;13362:185;;;;:::o;13553:240::-;13693:34;13689:1;13681:6;13677:14;13670:58;13762:23;13757:2;13749:6;13745:15;13738:48;13553:240;:::o;13799:366::-;13941:3;13962:67;14026:2;14021:3;13962:67;:::i;:::-;13955:74;;14038:93;14127:3;14038:93;:::i;:::-;14156:2;14151:3;14147:12;14140:19;;13799:366;;;:::o;14171:419::-;14337:4;14375:2;14364:9;14360:18;14352:26;;14424:9;14418:4;14414:20;14410:1;14399:9;14395:17;14388:47;14452:131;14578:4;14452:131;:::i;:::-;14444:139;;14171:419;;;:::o;14596:239::-;14736:34;14732:1;14724:6;14720:14;14713:58;14805:22;14800:2;14792:6;14788:15;14781:47;14596:239;:::o;14841:366::-;14983:3;15004:67;15068:2;15063:3;15004:67;:::i;:::-;14997:74;;15080:93;15169:3;15080:93;:::i;:::-;15198:2;15193:3;15189:12;15182:19;;14841:366;;;:::o;15213:419::-;15379:4;15417:2;15406:9;15402:18;15394:26;;15466:9;15460:4;15456:20;15452:1;15441:9;15437:17;15430:47;15494:131;15620:4;15494:131;:::i;:::-;15486:139;;15213:419;;;:::o;15638:191::-;15678:3;15697:20;15715:1;15697:20;:::i;:::-;15692:25;;15731:20;15749:1;15731:20;:::i;:::-;15726:25;;15774:1;15771;15767:9;15760:16;;15795:3;15792:1;15789:10;15786:36;;;15802:18;;:::i;:::-;15786:36;15638:191;;;;:::o;15835:227::-;15975:34;15971:1;15963:6;15959:14;15952:58;16044:10;16039:2;16031:6;16027:15;16020:35;15835:227;:::o;16068:366::-;16210:3;16231:67;16295:2;16290:3;16231:67;:::i;:::-;16224:74;;16307:93;16396:3;16307:93;:::i;:::-;16425:2;16420:3;16416:12;16409:19;;16068:366;;;:::o;16440:419::-;16606:4;16644:2;16633:9;16629:18;16621:26;;16693:9;16687:4;16683:20;16679:1;16668:9;16664:17;16657:47;16721:131;16847:4;16721:131;:::i;:::-;16713:139;;16440:419;;;:::o;16865:102::-;16907:8;16954:5;16951:1;16947:13;16926:34;;16865:102;;;:::o;16973:848::-;17034:5;17041:4;17065:6;17056:15;;17089:5;17080:14;;17103:712;17124:1;17114:8;17111:15;17103:712;;;17219:4;17214:3;17210:14;17204:4;17201:24;17198:50;;;17228:18;;:::i;:::-;17198:50;17278:1;17268:8;17264:16;17261:451;;;17693:4;17686:5;17682:16;17673:25;;17261:451;17743:4;17737;17733:15;17725:23;;17773:32;17796:8;17773:32;:::i;:::-;17761:44;;17103:712;;;16973:848;;;;;;;:::o;17827:1073::-;17881:5;18072:8;18062:40;;18093:1;18084:10;;18095:5;;18062:40;18121:4;18111:36;;18138:1;18129:10;;18140:5;;18111:36;18207:4;18255:1;18250:27;;;;18291:1;18286:191;;;;18200:277;;18250:27;18268:1;18259:10;;18270:5;;;18286:191;18331:3;18321:8;18318:17;18315:43;;;18338:18;;:::i;:::-;18315:43;18387:8;18384:1;18380:16;18371:25;;18422:3;18415:5;18412:14;18409:40;;;18429:18;;:::i;:::-;18409:40;18462:5;;;18200:277;;18586:2;18576:8;18573:16;18567:3;18561:4;18558:13;18554:36;18536:2;18526:8;18523:16;18518:2;18512:4;18509:12;18505:35;18489:111;18486:246;;;18642:8;18636:4;18632:19;18623:28;;18677:3;18670:5;18667:14;18664:40;;;18684:18;;:::i;:::-;18664:40;18717:5;;18486:246;18757:42;18795:3;18785:8;18779:4;18776:1;18757:42;:::i;:::-;18742:57;;;;18831:4;18826:3;18822:14;18815:5;18812:25;18809:51;;;18840:18;;:::i;:::-;18809:51;18889:4;18882:5;18878:16;18869:25;;17827:1073;;;;;;:::o;18906:281::-;18964:5;18988:23;19006:4;18988:23;:::i;:::-;18980:31;;19032:25;19048:8;19032:25;:::i;:::-;19020:37;;19076:104;19113:66;19103:8;19097:4;19076:104;:::i;:::-;19067:113;;18906:281;;;;:::o;19193:182::-;19333:34;19329:1;19321:6;19317:14;19310:58;19193:182;:::o;19381:366::-;19523:3;19544:67;19608:2;19603:3;19544:67;:::i;:::-;19537:74;;19620:93;19709:3;19620:93;:::i;:::-;19738:2;19733:3;19729:12;19722:19;;19381:366;;;:::o;19753:419::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:223::-;20318:34;20314:1;20306:6;20302:14;20295:58;20387:6;20382:2;20374:6;20370:15;20363:31;20178:223;:::o;20407:366::-;20549:3;20570:67;20634:2;20629:3;20570:67;:::i;:::-;20563:74;;20646:93;20735:3;20646:93;:::i;:::-;20764:2;20759:3;20755:12;20748:19;;20407:366;;;:::o;20779:419::-;20945:4;20983:2;20972:9;20968:18;20960:26;;21032:9;21026:4;21022:20;21018:1;21007:9;21003:17;20996:47;21060:131;21186:4;21060:131;:::i;:::-;21052:139;;20779:419;;;:::o;21204:181::-;21344:33;21340:1;21332:6;21328:14;21321:57;21204:181;:::o;21391:366::-;21533:3;21554:67;21618:2;21613:3;21554:67;:::i;:::-;21547:74;;21630:93;21719:3;21630:93;:::i;:::-;21748:2;21743:3;21739:12;21732:19;;21391:366;;;:::o;21763:419::-;21929:4;21967:2;21956:9;21952:18;21944:26;;22016:9;22010:4;22006:20;22002:1;21991:9;21987:17;21980:47;22044:131;22170:4;22044:131;:::i;:::-;22036:139;;21763:419;;;:::o;22188:178::-;22328:30;22324:1;22316:6;22312:14;22305:54;22188:178;:::o;22372:366::-;22514:3;22535:67;22599:2;22594:3;22535:67;:::i;:::-;22528:74;;22611:93;22700:3;22611:93;:::i;:::-;22729:2;22724:3;22720:12;22713:19;;22372:366;;;:::o;22744:419::-;22910:4;22948:2;22937:9;22933:18;22925:26;;22997:9;22991:4;22987:20;22983:1;22972:9;22968:17;22961:47;23025:131;23151:4;23025:131;:::i;:::-;23017:139;;22744:419;;;:::o;23169:118::-;23256:24;23274:5;23256:24;:::i;:::-;23251:3;23244:37;23169:118;;:::o;23293:664::-;23498:4;23536:3;23525:9;23521:19;23513:27;;23550:71;23618:1;23607:9;23603:17;23594:6;23550:71;:::i;:::-;23631:72;23699:2;23688:9;23684:18;23675:6;23631:72;:::i;:::-;23713;23781:2;23770:9;23766:18;23757:6;23713:72;:::i;:::-;23795;23863:2;23852:9;23848:18;23839:6;23795:72;:::i;:::-;23877:73;23945:3;23934:9;23930:19;23921:6;23877:73;:::i;:::-;23293:664;;;;;;;;:::o;23963:442::-;24112:4;24150:2;24139:9;24135:18;24127:26;;24163:71;24231:1;24220:9;24216:17;24207:6;24163:71;:::i;:::-;24244:72;24312:2;24301:9;24297:18;24288:6;24244:72;:::i;:::-;24326;24394:2;24383:9;24379:18;24370:6;24326:72;:::i;:::-;23963:442;;;;;;:::o;24411:148::-;24513:11;24550:3;24535:18;;24411:148;;;;:::o;24565:214::-;24705:66;24701:1;24693:6;24689:14;24682:90;24565:214;:::o;24785:400::-;24945:3;24966:84;25048:1;25043:3;24966:84;:::i;:::-;24959:91;;25059:93;25148:3;25059:93;:::i;:::-;25177:1;25172:3;25168:11;25161:18;;24785:400;;;:::o;25191:79::-;25230:7;25259:5;25248:16;;25191:79;;;:::o;25276:157::-;25381:45;25401:24;25419:5;25401:24;:::i;:::-;25381:45;:::i;:::-;25376:3;25369:58;25276:157;;:::o;25439:663::-;25680:3;25702:148;25846:3;25702:148;:::i;:::-;25695:155;;25860:75;25931:3;25922:6;25860:75;:::i;:::-;25960:2;25955:3;25951:12;25944:19;;25973:75;26044:3;26035:6;25973:75;:::i;:::-;26073:2;26068:3;26064:12;26057:19;;26093:3;26086:10;;25439:663;;;;;:::o;26108:545::-;26281:4;26319:3;26308:9;26304:19;26296:27;;26333:71;26401:1;26390:9;26386:17;26377:6;26333:71;:::i;:::-;26414:68;26478:2;26467:9;26463:18;26454:6;26414:68;:::i;:::-;26492:72;26560:2;26549:9;26545:18;26536:6;26492:72;:::i;:::-;26574;26642:2;26631:9;26627:18;26618:6;26574:72;:::i;:::-;26108:545;;;;;;;:::o;26659:167::-;26799:19;26795:1;26787:6;26783:14;26776:43;26659:167;:::o;26832:366::-;26974:3;26995:67;27059:2;27054:3;26995:67;:::i;:::-;26988:74;;27071:93;27160:3;27071:93;:::i;:::-;27189:2;27184:3;27180:12;27173:19;;26832:366;;;:::o;27204:419::-;27370:4;27408:2;27397:9;27393:18;27385:26;;27457:9;27451:4;27447:20;27443:1;27432:9;27428:17;27421:47;27485:131;27611:4;27485:131;:::i;:::-;27477:139;;27204:419;;;:::o;27629:167::-;27769:19;27765:1;27757:6;27753:14;27746:43;27629:167;:::o;27802:366::-;27944:3;27965:67;28029:2;28024:3;27965:67;:::i;:::-;27958:74;;28041:93;28130:3;28041:93;:::i;:::-;28159:2;28154:3;28150:12;28143:19;;27802:366;;;:::o;28174:419::-;28340:4;28378:2;28367:9;28363:18;28355:26;;28427:9;28421:4;28417:20;28413:1;28402:9;28398:17;28391:47;28455:131;28581:4;28455:131;:::i;:::-;28447:139;;28174:419;;;:::o;28599:180::-;28739:32;28735:1;28727:6;28723:14;28716:56;28599:180;:::o;28785:366::-;28927:3;28948:67;29012:2;29007:3;28948:67;:::i;:::-;28941:74;;29024:93;29113:3;29024:93;:::i;:::-;29142:2;29137:3;29133:12;29126:19;;28785:366;;;:::o;29157:419::-;29323:4;29361:2;29350:9;29346:18;29338:26;;29410:9;29404:4;29400:20;29396:1;29385:9;29381:17;29374:47;29438:131;29564:4;29438:131;:::i;:::-;29430:139;;29157:419;;;:::o;29582:182::-;29722:34;29718:1;29710:6;29706:14;29699:58;29582:182;:::o;29770:366::-;29912:3;29933:67;29997:2;29992:3;29933:67;:::i;:::-;29926:74;;30009:93;30098:3;30009:93;:::i;:::-;30127:2;30122:3;30118:12;30111:19;;29770:366;;;:::o;30142:419::-;30308:4;30346:2;30335:9;30331:18;30323:26;;30395:9;30389:4;30385:20;30381:1;30370:9;30366:17;30359:47;30423:131;30549:4;30423:131;:::i;:::-;30415:139;;30142:419;;;:::o;30567:177::-;30707:29;30703:1;30695:6;30691:14;30684:53;30567:177;:::o;30750:366::-;30892:3;30913:67;30977:2;30972:3;30913:67;:::i;:::-;30906:74;;30989:93;31078:3;30989:93;:::i;:::-;31107:2;31102:3;31098:12;31091:19;;30750:366;;;:::o;31122:419::-;31288:4;31326:2;31315:9;31311:18;31303:26;;31375:9;31369:4;31365:20;31361:1;31350:9;31346:17;31339:47;31403:131;31529:4;31403:131;:::i;:::-;31395:139;;31122:419;;;:::o;31547:175::-;31687:27;31683:1;31675:6;31671:14;31664:51;31547:175;:::o;31728:366::-;31870:3;31891:67;31955:2;31950:3;31891:67;:::i;:::-;31884:74;;31967:93;32056:3;31967:93;:::i;:::-;32085:2;32080:3;32076:12;32069:19;;31728:366;;;:::o;32100:419::-;32266:4;32304:2;32293:9;32289:18;32281:26;;32353:9;32347:4;32343:20;32339:1;32328:9;32324:17;32317:47;32381:131;32507:4;32381:131;:::i;:::-;32373:139;;32100:419;;;:::o;32525:175::-;32665:27;32661:1;32653:6;32649:14;32642:51;32525:175;:::o;32706:366::-;32848:3;32869:67;32933:2;32928:3;32869:67;:::i;:::-;32862:74;;32945:93;33034:3;32945:93;:::i;:::-;33063:2;33058:3;33054:12;33047:19;;32706:366;;;:::o;33078:419::-;33244:4;33282:2;33271:9;33267:18;33259:26;;33331:9;33325:4;33321:20;33317:1;33306:9;33302:17;33295:47;33359:131;33485:4;33359:131;:::i;:::-;33351:139;;33078:419;;;:::o;33503:173::-;33643:25;33639:1;33631:6;33627:14;33620:49;33503:173;:::o;33682:366::-;33824:3;33845:67;33909:2;33904:3;33845:67;:::i;:::-;33838:74;;33921:93;34010:3;33921:93;:::i;:::-;34039:2;34034:3;34030:12;34023:19;;33682:366;;;:::o;34054:419::-;34220:4;34258:2;34247:9;34243:18;34235:26;;34307:9;34301:4;34297:20;34293:1;34282:9;34278:17;34271:47;34335:131;34461:4;34335:131;:::i;:::-;34327:139;;34054:419;;;:::o;34479:172::-;34619:24;34615:1;34607:6;34603:14;34596:48;34479:172;:::o;34657:366::-;34799:3;34820:67;34884:2;34879:3;34820:67;:::i;:::-;34813:74;;34896:93;34985:3;34896:93;:::i;:::-;35014:2;35009:3;35005:12;34998:19;;34657:366;;;:::o;35029:419::-;35195:4;35233:2;35222:9;35218:18;35210:26;;35282:9;35276:4;35272:20;35268:1;35257:9;35253:17;35246:47;35310:131;35436:4;35310:131;:::i;:::-;35302:139;;35029:419;;;:::o;35454:225::-;35594:34;35590:1;35582:6;35578:14;35571:58;35663:8;35658:2;35650:6;35646:15;35639:33;35454:225;:::o;35685:366::-;35827:3;35848:67;35912:2;35907:3;35848:67;:::i;:::-;35841:74;;35924:93;36013:3;35924:93;:::i;:::-;36042:2;36037:3;36033:12;36026:19;;35685:366;;;:::o;36057:419::-;36223:4;36261:2;36250:9;36246:18;36238:26;;36310:9;36304:4;36300:20;36296:1;36285:9;36281:17;36274:47;36338:131;36464:4;36338:131;:::i;:::-;36330:139;;36057:419;;;:::o;36482:169::-;36622:21;36618:1;36610:6;36606:14;36599:45;36482:169;:::o;36657:366::-;36799:3;36820:67;36884:2;36879:3;36820:67;:::i;:::-;36813:74;;36896:93;36985:3;36896:93;:::i;:::-;37014:2;37009:3;37005:12;36998:19;;36657:366;;;:::o;37029:419::-;37195:4;37233:2;37222:9;37218:18;37210:26;;37282:9;37276:4;37272:20;37268:1;37257:9;37253:17;37246:47;37310:131;37436:4;37310:131;:::i;:::-;37302:139;;37029:419;;;:::o;37454:226::-;37594:34;37590:1;37582:6;37578:14;37571:58;37663:9;37658:2;37650:6;37646:15;37639:34;37454:226;:::o;37686:366::-;37828:3;37849:67;37913:2;37908:3;37849:67;:::i;:::-;37842:74;;37925:93;38014:3;37925:93;:::i;:::-;38043:2;38038:3;38034:12;38027:19;;37686:366;;;:::o;38058:419::-;38224:4;38262:2;38251:9;38247:18;38239:26;;38311:9;38305:4;38301:20;38297:1;38286:9;38282:17;38275:47;38339:131;38465:4;38339:131;:::i;:::-;38331:139;;38058:419;;;:::o;38483:194::-;38523:4;38543:20;38561:1;38543:20;:::i;:::-;38538:25;;38577:20;38595:1;38577:20;:::i;:::-;38572:25;;38621:1;38618;38614:9;38606:17;;38645:1;38639:4;38636:11;38633:37;;;38650:18;;:::i;:::-;38633:37;38483:194;;;;:::o;38683:179::-;38823:31;38819:1;38811:6;38807:14;38800:55;38683:179;:::o;38868:366::-;39010:3;39031:67;39095:2;39090:3;39031:67;:::i;:::-;39024:74;;39107:93;39196:3;39107:93;:::i;:::-;39225:2;39220:3;39216:12;39209:19;;38868:366;;;:::o;39240:419::-;39406:4;39444:2;39433:9;39429:18;39421:26;;39493:9;39487:4;39483:20;39479:1;39468:9;39464:17;39457:47;39521:131;39647:4;39521:131;:::i;:::-;39513:139;;39240:419;;;:::o;39665:177::-;39805:29;39801:1;39793:6;39789:14;39782:53;39665:177;:::o;39848:366::-;39990:3;40011:67;40075:2;40070:3;40011:67;:::i;:::-;40004:74;;40087:93;40176:3;40087:93;:::i;:::-;40205:2;40200:3;40196:12;40189:19;;39848:366;;;:::o;40220:419::-;40386:4;40424:2;40413:9;40409:18;40401:26;;40473:9;40467:4;40463:20;40459:1;40448:9;40444:17;40437:47;40501:131;40627:4;40501:131;:::i;:::-;40493:139;;40220:419;;;:::o;40645:182::-;40785:34;40781:1;40773:6;40769:14;40762:58;40645:182;:::o;40833:366::-;40975:3;40996:67;41060:2;41055:3;40996:67;:::i;:::-;40989:74;;41072:93;41161:3;41072:93;:::i;:::-;41190:2;41185:3;41181:12;41174:19;;40833:366;;;:::o;41205:419::-;41371:4;41409:2;41398:9;41394:18;41386:26;;41458:9;41452:4;41448:20;41444:1;41433:9;41429:17;41422:47;41486:131;41612:4;41486:131;:::i;:::-;41478:139;;41205:419;;;:::o;41630:147::-;41731:11;41768:3;41753:18;;41630:147;;;;:::o;41783:114::-;;:::o;41903:398::-;42062:3;42083:83;42164:1;42159:3;42083:83;:::i;:::-;42076:90;;42175:93;42264:3;42175:93;:::i;:::-;42293:1;42288:3;42284:11;42277:18;;41903:398;;;:::o;42307:379::-;42491:3;42513:147;42656:3;42513:147;:::i;:::-;42506:154;;42677:3;42670:10;;42307:379;;;:::o;42692:180::-;42740:77;42737:1;42730:88;42837:4;42834:1;42827:15;42861:4;42858:1;42851:15;42878:180;42926:77;42923:1;42916:88;43023:4;43020:1;43013:15;43047:4;43044:1;43037:15;43064:143;43121:5;43152:6;43146:13;43137:22;;43168:33;43195:5;43168:33;:::i;:::-;43064:143;;;;:::o;43213:351::-;43283:6;43332:2;43320:9;43311:7;43307:23;43303:32;43300:119;;;43338:79;;:::i;:::-;43300:119;43458:1;43483:64;43539:7;43530:6;43519:9;43515:22;43483:64;:::i;:::-;43473:74;;43429:128;43213:351;;;;:::o;43570:85::-;43615:7;43644:5;43633:16;;43570:85;;;:::o;43661:158::-;43719:9;43752:61;43770:42;43779:32;43805:5;43779:32;:::i;:::-;43770:42;:::i;:::-;43752:61;:::i;:::-;43739:74;;43661:158;;;:::o;43825:147::-;43920:45;43959:5;43920:45;:::i;:::-;43915:3;43908:58;43825:147;;:::o;43978:114::-;44045:6;44079:5;44073:12;44063:22;;43978:114;;;:::o;44098:184::-;44197:11;44231:6;44226:3;44219:19;44271:4;44266:3;44262:14;44247:29;;44098:184;;;;:::o;44288:132::-;44355:4;44378:3;44370:11;;44408:4;44403:3;44399:14;44391:22;;44288:132;;;:::o;44426:108::-;44503:24;44521:5;44503:24;:::i;:::-;44498:3;44491:37;44426:108;;:::o;44540:179::-;44609:10;44630:46;44672:3;44664:6;44630:46;:::i;:::-;44708:4;44703:3;44699:14;44685:28;;44540:179;;;;:::o;44725:113::-;44795:4;44827;44822:3;44818:14;44810:22;;44725:113;;;:::o;44874:732::-;44993:3;45022:54;45070:5;45022:54;:::i;:::-;45092:86;45171:6;45166:3;45092:86;:::i;:::-;45085:93;;45202:56;45252:5;45202:56;:::i;:::-;45281:7;45312:1;45297:284;45322:6;45319:1;45316:13;45297:284;;;45398:6;45392:13;45425:63;45484:3;45469:13;45425:63;:::i;:::-;45418:70;;45511:60;45564:6;45511:60;:::i;:::-;45501:70;;45357:224;45344:1;45341;45337:9;45332:14;;45297:284;;;45301:14;45597:3;45590:10;;44998:608;;;44874:732;;;;:::o;45612:831::-;45875:4;45913:3;45902:9;45898:19;45890:27;;45927:71;45995:1;45984:9;45980:17;45971:6;45927:71;:::i;:::-;46008:80;46084:2;46073:9;46069:18;46060:6;46008:80;:::i;:::-;46135:9;46129:4;46125:20;46120:2;46109:9;46105:18;46098:48;46163:108;46266:4;46257:6;46163:108;:::i;:::-;46155:116;;46281:72;46349:2;46338:9;46334:18;46325:6;46281:72;:::i;:::-;46363:73;46431:3;46420:9;46416:19;46407:6;46363:73;:::i;:::-;45612:831;;;;;;;;:::o

Swarm Source

ipfs://bfdef46a486a2947b4d3320ffa2910bc5b51ddf31980fdb367031a819004c56b

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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