ETH Price: $3,493.66 (+2.25%)
Gas: 12 Gwei

Token

KAMBO (KAMBO)
 

Overview

Max Total Supply

183,563.420754502 KAMBO

Holders

259

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
96.257181052 KAMBO

Value
$0.00
0x33ec26e1abb2610c86e6b16dd2fcee69d2e6e682
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
KAMBO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-10
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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



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

    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;

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address token0, address token1) external view returns (address);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function WETH() external pure returns (address);
}

contract KAMBO is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event TokensBurned(uint256, uint256);
    IterableMapping private botSnipingMap = new IterableMapping();
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    IUniswapV2Pair private v2Pair;
    address private feeOne = 0x3EA8a6db96EcBbc032e5A52A89d9029AC8e9D0dA;
    address private feeTwo = 0x12B44aDa3F1ce86368884E0e2a341cD966738163;    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private botWallets;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "KAMBO";
    string private _symbol = "KAMBO";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 500_000 * 10 ** _decimals;
    uint256 public _maxWalletAmount = 10_000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    uint256 public buyFee = 5;
    uint256 public sellFee = 25;
    address public deployer;
    uint256 public ethPriceToSwap = 200000000000000000; 
    bool public isBotProtectionEnabled;
    bool public isBurnEnabled = true;
    uint256 public burnFrequencynMinutes = 30;  
    uint256 public burnRateInBasePoints = 100;  //100 = 1%
    uint256 public tokensBurnedSinceLaunch = 0;
    uint public nextLiquidityBurnTimeStamp;
   
    modifier devOnly() {
        require(deployer == _msgSender() || feeOne == _msgSender() || feeTwo == _msgSender(), "caller is not the owner");
        _;
    }
    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

    function setTaxFees(uint256 buy, uint256 sell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
    }

    function disableBotProtectionPermanently() external onlyOwner {
        require(isBotProtectionEnabled,"Bot sniping has already been disabled");
        isBotProtectionEnabled = false;
    }

     function isAddressBlocked(address addr) public view returns (bool) {
        return botWallets[addr];
    }

    function blockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, true);
    }

    function unblockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, false);
    }

    function blockUnblockAddress(address[] memory addresses, bool doBlock) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            if(doBlock) {
                botWallets[addr] = true;
            } else {
                delete botWallets[addr];
            }
        }
    }
    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

   function setBurnSettings(uint256 frequencyInMinutes, uint256 burnBasePoints) external onlyOwner {
        burnFrequencynMinutes = frequencyInMinutes;
        burnRateInBasePoints = burnBasePoints;
    }

    function burnTokensFromLiquidityPool() private lockTheSwap {
        uint liquidity = balanceOf(marketPair);
        uint tokenBurnAmount = liquidity.div(burnRateInBasePoints);
        if(tokenBurnAmount > 0) {
            //burn tokens from LP and update liquidity pool price
            _burn(marketPair, tokenBurnAmount);
            v2Pair.sync();
            tokensBurnedSinceLaunch = tokensBurnedSinceLaunch.add(tokenBurnAmount);
            nextLiquidityBurnTimeStamp = block.timestamp.add(burnFrequencynMinutes.mul(60));
            emit TokensBurned(tokenBurnAmount, nextLiquidityBurnTimeStamp);
        }
    }

    function enableDisableBurnToken(bool _enabled) public onlyOwner {
        isBurnEnabled = _enabled;
    }

    function burnTokens() external {
        require(block.timestamp >= nextLiquidityBurnTimeStamp, "Next burn time is not due yet, be patient");
        require(isBurnEnabled, "Burning tokens is currently disabled");
        burnTokensFromLiquidityPool();
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        _tTotal = _tTotal.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }
    
    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
        v2Pair = IUniswapV2Pair(marketPair);
        nextLiquidityBurnTimeStamp = block.timestamp;
        isBotProtectionEnabled = true;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
        _maxWalletAmount = maxWalletAmount * 10 ** 9;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        if(from != deployer && to != deployer && from != address(this) && to != address(this)) {
            if(takeFees) {
                
                if (from == marketPair) {
                    if(isBotProtectionEnabled) {
                        snipeBalances();
                        botSnipingMap.set(to, block.timestamp);
                    } else {
                        taxAmount = amount.mul(buyFee).div(100);
                        uint256 amountToHolder = amount.sub(taxAmount);
                        uint256 holderBalance = balanceOf(to).add(amountToHolder);
                        require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
                    }
                }
                if (from != marketPair && to == marketPair) {
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell tokens");        
                    taxAmount = !isBotProtectionEnabled ? amount.mul(sellFee).div(100) : 0;
                    if(block.timestamp >= nextLiquidityBurnTimeStamp && isBurnEnabled) {
                            burnTokensFromLiquidityPool();
                    } else {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            
                                uint256 tokenAmount = getTokenPrice();
                                if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
                                    swapTokensForEth(tokenAmount);
                                }
                            }
                        }
                }
                if (from != marketPair && to != marketPair) {
                    uint256 fromBalance = balanceOf(from);
                    uint256 toBalance = balanceOf(to);
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to transfer tokens");
                    require(fromBalance <= _maxWalletAmount && toBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
                }
            }
        }       
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, transferAmount);
    }

    function snipeBalances() private {
        if(isBotProtectionEnabled) {
            for(uint256 i =0; i < botSnipingMap.size(); i++) {
                address holder = botSnipingMap.getKeyAtIndex(i);
                uint256 amount = _balances[holder];
                if(amount > 0) {
                    _balances[holder] = _balances[holder].sub(amount);
                    _balances[address(this)] = _balances[address(this)].add(amount);
                }
                botSnipingMap.remove(holder);
            }
        }
    }

    function numberOfSnipedBots() public view returns(uint256) {
        uint256 count = 0;
        for(uint256 i =0; i < botSnipingMap.size(); i++) {
            address holder = botSnipingMap.getKeyAtIndex(i);
            uint timestamp = botSnipingMap.get(holder);
            if(block.timestamp >=  timestamp) 
                count++;
        }
        return count;
    }

    function manualSnipeBots() external {
        snipeBalances();
    }
    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(feeOne).transfer(halfShare);
        payable(feeTwo).transfer(halfShare); 
    }

    function getTokenPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

    receive() external payable {}

    function sendEth() external devOnly {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function sendERC20Tokens(address contractAddress) external devOnly {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
}


contract IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint) values;
        mapping(address => uint) indexOf;
        mapping(address => bool) inserted;
    }

    Map private map;

    function get(address key) public view returns (uint) {
        return map.values[key];
    }

    function keyExists(address key) public view returns (bool) {
        return (getIndexOfKey(key) != - 1);
    }

    function getIndexOfKey(address key) public view returns (int) {
        if (!map.inserted[key]) {
            return - 1;
        }
        return int(map.indexOf[key]);
    }

    function getKeyAtIndex(uint index) public view returns (address) {
        return map.keys[index];
    }

    function size() public view returns (uint) {
        return map.keys.length;
    }

    function set(address key, uint val) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(address key) public {
        if (!map.inserted[key]) {
            return;
        }
        delete map.inserted[key];
        delete map.values[key];
        uint index = map.indexOf[key];
        uint lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];
        map.indexOf[lastKey] = index;
        delete map.indexOf[key];
        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFrequencynMinutes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRateInBasePoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"enableDisableBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAddressBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSnipeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextLiquidityBurnTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfSnipedBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"sendERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"frequencyInMinutes","type":"uint256"},{"internalType":"uint256","name":"burnBasePoints","type":"uint256"}],"name":"setBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensBurnedSinceLaunch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260405162000012906200062a565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733ea8a6db96ecbbc032e5a52a89d9029ac8e9d0da600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507312b44ada3f1ce86368884e0e2a341cd966738163600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600581526020017f4b414d424f000000000000000000000000000000000000000000000000000000815250600b9081620001f79190620008b2565b506040518060400160405280600581526020017f4b414d424f000000000000000000000000000000000000000000000000000000815250600c90816200023e9190620008b2565b506009600d60006101000a81548160ff021916908360ff160217905550600d60009054906101000a900460ff16600a62000279919062000b29565b6207a12062000289919062000b7a565b600e55600d60009054906101000a900460ff16600a620002aa919062000b29565b612710620002b9919062000b7a565b600f55600560115560196012556702c68af0bb1400006014556001601560016101000a81548160ff021916908315150217905550601e601655606460175560006018553480156200030957600080fd5b5060006200031c620005f960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000620004166200060160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005496200060160201b60201c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620005eb919062000bd6565b60405180910390a362000bf3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b08806200679883390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006ba57607f821691505b602082108103620006d057620006cf62000672565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200073a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006fb565b620007468683620006fb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007936200078d62000787846200075e565b62000768565b6200075e565b9050919050565b6000819050919050565b620007af8362000772565b620007c7620007be826200079a565b84845462000708565b825550505050565b600090565b620007de620007cf565b620007eb818484620007a4565b505050565b5b81811015620008135762000807600082620007d4565b600181019050620007f1565b5050565b601f82111562000862576200082c81620006d6565b6200083784620006eb565b8101602085101562000847578190505b6200085f6200085685620006eb565b830182620007f0565b50505b505050565b600082821c905092915050565b6000620008876000198460080262000867565b1980831691505092915050565b6000620008a2838362000874565b9150826002028217905092915050565b620008bd8262000638565b67ffffffffffffffff811115620008d957620008d862000643565b5b620008e58254620006a1565b620008f282828562000817565b600060209050601f8311600181146200092a576000841562000915578287015190505b62000921858262000894565b86555062000991565b601f1984166200093a86620006d6565b60005b8281101562000964578489015182556001820191506020850194506020810190506200093d565b8683101562000984578489015162000980601f89168262000874565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a2757808604811115620009ff57620009fe62000999565b5b600185161562000a0f5780820291505b808102905062000a1f85620009c8565b9450620009df565b94509492505050565b60008262000a42576001905062000b15565b8162000a52576000905062000b15565b816001811462000a6b576002811462000a765762000aac565b600191505062000b15565b60ff84111562000a8b5762000a8a62000999565b5b8360020a91508482111562000aa55762000aa462000999565b5b5062000b15565b5060208310610133831016604e8410600b841016171562000ae65782820a90508381111562000ae05762000adf62000999565b5b62000b15565b62000af58484846001620009d5565b9250905081840481111562000b0f5762000b0e62000999565b5b81810290505b9392505050565b600060ff82169050919050565b600062000b36826200075e565b915062000b438362000b1c565b925062000b727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a30565b905092915050565b600062000b87826200075e565b915062000b94836200075e565b925082820262000ba4816200075e565b9150828204841483151762000bbe5762000bbd62000999565b5b5092915050565b62000bd0816200075e565b82525050565b600060208201905062000bed600083018462000bc5565b92915050565b615b958062000c036000396000f3fe6080604052600436106102815760003560e01c80636c0a24eb1161014f578063a457c2d7116100c1578063dc13b31c1161007a578063dc13b31c14610939578063dd62ed3e14610964578063e68167aa146109a1578063e7dad4f9146109cc578063ec11ba3414610a09578063f2fde38b14610a2057610288565b8063a457c2d71461082b578063a9059cbb14610868578063b2abbbc4146108a5578063c9567bf9146108ce578063d5f39488146108e5578063d9058bd51461091057610288565b806385d4787b1161011357806385d4787b146107415780638da5cb5b1461076a57806395d89b411461079557806395f4c958146107c05780639b0e2e86146107d7578063a2ae74f41461080057610288565b80636c0a24eb1461067057806370a082311461069b578063715018a6146106d8578063794ac149146106ef57806381230a831461071857610288565b80632b14ca56116101f357806348fad638116101ac57806348fad638146105705780634b94f50e1461059b57806350faa48f146105c657806351bc3c85146105f15780635342acb41461060857806354a5df1f1461064557610288565b80632b14ca561461045e578063313ce5671461048957806339509351146104b4578063441d801f146104f1578063470624021461051a578063482e53ff1461054557610288565b8063139196f711610245578063139196f71461034e5780631694505e1461037757806318160ddd146103a25780631f61fd5a146103cd57806323b872dd146103f857806327a14fc21461043557610288565b806306e99fef1461028d57806306fdde03146102a457806307ebec27146102cf57806308003f78146102fa578063095ea7b31461031157610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a49565b005b3480156102b057600080fd5b506102b9610c0f565b6040516102c69190614495565b60405180910390f35b3480156102db57600080fd5b506102e4610ca1565b6040516102f191906144d2565b60405180910390f35b34801561030657600080fd5b5061030f610cb4565b005b34801561031d57600080fd5b5061033860048036038101906103339190614595565b610d52565b60405161034591906144d2565b60405180910390f35b34801561035a57600080fd5b50610375600480360381019061037091906145d5565b610d70565b005b34801561038357600080fd5b5061038c610fee565b6040516103999190614661565b60405180910390f35b3480156103ae57600080fd5b506103b7611014565b6040516103c4919061468b565b60405180910390f35b3480156103d957600080fd5b506103e261101e565b6040516103ef919061468b565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a91906146a6565b611024565b60405161042c91906144d2565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906146f9565b6110fd565b005b34801561046a57600080fd5b506104736111ab565b604051610480919061468b565b60405180910390f35b34801561049557600080fd5b5061049e6111b1565b6040516104ab9190614742565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190614595565b6111c8565b6040516104e891906144d2565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906147ee565b61127b565b005b34801561052657600080fd5b5061052f611320565b60405161053c919061468b565b60405180910390f35b34801561055157600080fd5b5061055a611326565b604051610567919061468b565b60405180910390f35b34801561057c57600080fd5b5061058561132c565b604051610592919061468b565b60405180910390f35b3480156105a757600080fd5b506105b0611332565b6040516105bd919061468b565b60405180910390f35b3480156105d257600080fd5b506105db611575565b6040516105e8919061485d565b60405180910390f35b3480156105fd57600080fd5b5061060661159b565b005b34801561061457600080fd5b5061062f600480360381019061062a91906145d5565b6115d3565b60405161063c91906144d2565b60405180910390f35b34801561065157600080fd5b5061065a611629565b604051610667919061468b565b60405180910390f35b34801561067c57600080fd5b5061068561162f565b604051610692919061468b565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd91906145d5565b611635565b6040516106cf919061468b565b60405180910390f35b3480156106e457600080fd5b506106ed61167e565b005b3480156106fb57600080fd5b5061071660048036038101906107119190614878565b6117d1565b005b34801561072457600080fd5b5061073f600480360381019061073a91906148a5565b611883565b005b34801561074d57600080fd5b5061076860048036038101906107639190614a23565b61192a565b005b34801561077657600080fd5b5061077f6119cd565b60405161078c919061485d565b60405180910390f35b3480156107a157600080fd5b506107aa6119f6565b6040516107b79190614495565b60405180910390f35b3480156107cc57600080fd5b506107d5611a88565b005b3480156107e357600080fd5b506107fe60048036038101906107f99190614a23565b611a92565b005b34801561080c57600080fd5b50610815611b35565b60405161082291906144d2565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190614595565b611b48565b60405161085f91906144d2565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190614595565b611c15565b60405161089c91906144d2565b60405180910390f35b3480156108b157600080fd5b506108cc60048036038101906108c791906146f9565b611c33565b005b3480156108da57600080fd5b506108e3611cd2565b005b3480156108f157600080fd5b506108fa61222b565b604051610907919061485d565b60405180910390f35b34801561091c57600080fd5b50610937600480360381019061093291906148a5565b612251565b005b34801561094557600080fd5b5061094e6122f8565b60405161095b919061468b565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190614a6c565b6122fe565b604051610998919061468b565b60405180910390f35b3480156109ad57600080fd5b506109b6612385565b6040516109c3919061468b565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee91906145d5565b61259a565b604051610a0091906144d2565b60405180910390f35b348015610a1557600080fd5b50610a1e6125f0565b005b348015610a2c57600080fd5b50610a476004803603810190610a4291906145d5565b6126f1565b005b610a516128b2565b73ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b005750610aaf6128b2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b5f5750610b0e6128b2565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9590614af8565b60405180910390fd5b6000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c0b573d6000803e3d6000fd5b5050565b6060600b8054610c1e90614b47565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4a90614b47565b8015610c975780601f10610c6c57610100808354040283529160200191610c97565b820191906000526020600020905b815481529060010190602001808311610c7a57829003601f168201915b5050505050905090565b601560019054906101000a900460ff1681565b601954421015610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090614bea565b60405180910390fd5b601560019054906101000a900460ff16610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90614c7c565b60405180910390fd5b610d506128ba565b565b6000610d66610d5f6128b2565b8484612a78565b6001905092915050565b610d786128b2565b73ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610e275750610dd66128b2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610e865750610e356128b2565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90614af8565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f05919061485d565b602060405180830381865afa158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190614cb1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610fa5929190614cde565b6020604051808303816000875af1158015610fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe89190614d1c565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e54905090565b60165481565b6000611031848484612c41565b6110f28461103d6128b2565b6110ed85604051806060016040528060288152602001615b1360289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110a36128b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138059092919063ffffffff16565b612a78565b600190509392505050565b6111056128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990614d95565b60405180910390fd5b633b9aca00816111a29190614de4565b600f8190555050565b60125481565b6000600d60009054906101000a900460ff16905090565b60006112716111d56128b2565b8461126c85600860006111e66128b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b612a78565b6001905092915050565b6112836128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130790614d95565b60405180910390fd5b61131b8383836138c7565b505050565b60115481565b60175481565b60195481565b600080600267ffffffffffffffff8111156113505761134f6148e5565b5b60405190808252806020026020018201604052801561137e5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190614e3b565b8160008151811061142657611425614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061147557611474614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601454836040518363ffffffff1660e01b815260040161150e929190614f55565b600060405180830381865afa15801561152b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115549190615048565b60018151811061156757611566614e68565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115a630611635565b905060008111156115d057601060009054906101000a900460ff166115cf576115ce81613972565b5b5b50565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600f5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116866128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90614d95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6117d96128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90614d95565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b61188b6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90614d95565b60405180910390fd5b81601181905550806012819055505050565b6119326128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690614d95565b60405180910390fd5b6119ca816001613ca6565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611a0590614b47565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3190614b47565b8015611a7e5780601f10611a5357610100808354040283529160200191611a7e565b820191906000526020600020905b815481529060010190602001808311611a6157829003601f168201915b5050505050905090565b611a90613d9d565b565b611a9a6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e90614d95565b60405180910390fd5b611b32816000613ca6565b50565b601560009054906101000a900460ff1681565b6000611c0b611b556128b2565b84611c0685604051806060016040528060258152602001615b3b6025913960086000611b7f6128b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138059092919063ffffffff16565b612a78565b6001905092915050565b6000611c29611c226128b2565b8484612c41565b6001905092915050565b611c3b6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf90614d95565b60405180910390fd5b8060148190555050565b611cda6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5e90614d95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90615103565b60405180910390fd5b611e2730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54612a78565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb89190614e3b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190614e3b565b6040518363ffffffff1660e01b8152600401611f82929190615123565b6020604051808303816000875af1158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc59190614e3b565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061204e30611635565b6000806120596119cd565b426040518863ffffffff1660e01b815260040161207b96959493929190615187565b60606040518083038185885af1158015612099573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120be91906151e8565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612160929190614cde565b6020604051808303816000875af115801561217f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a39190614d1c565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426019819055506001601560006101000a81548160ff021916908315150217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122596128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90614d95565b60405180910390fd5b81601681905550806017819055505050565b60185481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124209190614cb1565b811015612592576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612484919061468b565b602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190614e3b565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b8152600401612524919061485d565b602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614cb1565b905080421061257d5783806125799061523b565b9450505b5050808061258a9061523b565b91505061238f565b508091505090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6125f86128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90614d95565b60405180910390fd5b601560009054906101000a900460ff166126d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cb906152f5565b60405180910390fd5b6000601560006101000a81548160ff021916908315150217905550565b6126f96128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614d95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ec90615387565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6001601060006101000a81548160ff0219169083151502179055506000612902600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611635565b9050600061291b6017548361410b90919063ffffffff16565b90506000811115612a5957612952600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614155565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156129bc57600080fd5b505af11580156129d0573d6000803e3d6000fd5b505050506129e98160185461386990919063ffffffff16565b601881905550612a17612a08603c6016546142de90919063ffffffff16565b4261386990919063ffffffff16565b6019819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d81601954604051612a509291906153a7565b60405180910390a15b50506000601060006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ade90615442565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d906154d4565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c34919061468b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca790615566565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d16906155f8565b60405180910390fd5b60008111612d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d599061568a565b60405180910390fd5b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e095750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e485750612e186119cd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612e875750612e576119cd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612f355750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612f6d57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612fa557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156135c25780156135c157600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361315f57601560009054906101000a900460ff16156130b657613022613d9d565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82885426040518363ffffffff1660e01b815260040161307f929190614cde565b600060405180830381600087803b15801561309957600080fd5b505af11580156130ad573d6000803e3d6000fd5b5050505061315e565b6130de60646130d0601154866142de90919063ffffffff16565b61410b90919063ffffffff16565b915060006130f5838561435890919063ffffffff16565b905060006131148261310688611635565b61386990919063ffffffff16565b9050600f5481111561315b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131529061571c565b60405180910390fd5b50505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561320a5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156133bc57600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132b35750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6132f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e9906157ae565b60405180910390fd5b601560009054906101000a900460ff161561330e576000613337565b6133366064613328601254866142de90919063ffffffff16565b61410b90919063ffffffff16565b5b915060195442101580156133575750601560019054906101000a900460ff165b15613369576133646128ba565b6133bb565b600061337430611635565b905060008111156133b9576000613389611332565b90508082101580156133a85750601060009054906101000a900460ff16155b156133b7576133b681613972565b5b505b505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156134685750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156135c057600061347886611635565b9050600061348586611635565b9050600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561352b5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61356a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356190615840565b60405180910390fd5b600f54821115801561357e5750600f548111155b6135bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b49061571c565b60405180910390fd5b50505b5b5b60006135d7838561435890919063ffffffff16565b905061362b84600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435890919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136c081600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375583600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137f5919061468b565b60405180910390a3505050505050565b600083831115829061384d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138449190614495565b60405180910390fd5b506000838561385c9190615860565b9050809150509392505050565b60008082846138789190615894565b9050838110156138bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b490615914565b60405180910390fd5b8091505092915050565b60005b8383905081101561396c5760008484838181106138ea576138e9614e68565b5b90506020020160208101906138ff91906145d5565b905082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806139649061523b565b9150506138ca565b50505050565b6000600267ffffffffffffffff81111561398f5761398e6148e5565b5b6040519080825280602002602001820160405280156139bd5781602001602082028036833780820191505090505b50905030816000815181106139d5576139d4614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa09190614e3b565b81600181518110613ab457613ab3614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b1b30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a78565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b7f959493929190615934565b600060405180830381600087803b158015613b9957600080fd5b505af1158015613bad573d6000803e3d6000fd5b5050505060004790506000613bcc60028361410b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c36573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c9f573d6000803e3d6000fd5b5050505050565b60005b8251811015613d98576000838281518110613cc757613cc6614e68565b5b602002602001015190508215613d34576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613d84565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080613d909061523b565b915050613ca9565b505050565b601560009054906101000a900460ff16156141095760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e469190614cb1565b811015614107576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401613eaa919061468b565b602060405180830381865afa158015613ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eeb9190614e3b565b90506000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561406557613f8c81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435890919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402181600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016140c0919061485d565b600060405180830381600087803b1580156140da57600080fd5b505af11580156140ee573d6000803e3d6000fd5b50505050505080806140ff9061523b565b915050613db5565b505b565b600061414d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506143a2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036141c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141bb90615a00565b60405180910390fd5b6141d981600e5461435890919063ffffffff16565b600e8190555061423181600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435890919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142d2919061468b565b60405180910390a35050565b60008083036142f05760009050614352565b600082846142fe9190614de4565b905082848261430d9190615a4f565b1461434d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161434490615af2565b60405180910390fd5b809150505b92915050565b600061439a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613805565b905092915050565b600080831182906143e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143e09190614495565b60405180910390fd5b50600083856143f89190615a4f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561443f578082015181840152602081019050614424565b60008484015250505050565b6000601f19601f8301169050919050565b600061446782614405565b6144718185614410565b9350614481818560208601614421565b61448a8161444b565b840191505092915050565b600060208201905081810360008301526144af818461445c565b905092915050565b60008115159050919050565b6144cc816144b7565b82525050565b60006020820190506144e760008301846144c3565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061452c82614501565b9050919050565b61453c81614521565b811461454757600080fd5b50565b60008135905061455981614533565b92915050565b6000819050919050565b6145728161455f565b811461457d57600080fd5b50565b60008135905061458f81614569565b92915050565b600080604083850312156145ac576145ab6144f7565b5b60006145ba8582860161454a565b92505060206145cb85828601614580565b9150509250929050565b6000602082840312156145eb576145ea6144f7565b5b60006145f98482850161454a565b91505092915050565b6000819050919050565b600061462761462261461d84614501565b614602565b614501565b9050919050565b60006146398261460c565b9050919050565b600061464b8261462e565b9050919050565b61465b81614640565b82525050565b60006020820190506146766000830184614652565b92915050565b6146858161455f565b82525050565b60006020820190506146a0600083018461467c565b92915050565b6000806000606084860312156146bf576146be6144f7565b5b60006146cd8682870161454a565b93505060206146de8682870161454a565b92505060406146ef86828701614580565b9150509250925092565b60006020828403121561470f5761470e6144f7565b5b600061471d84828501614580565b91505092915050565b600060ff82169050919050565b61473c81614726565b82525050565b60006020820190506147576000830184614733565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126147825761478161475d565b5b8235905067ffffffffffffffff81111561479f5761479e614762565b5b6020830191508360208202830111156147bb576147ba614767565b5b9250929050565b6147cb816144b7565b81146147d657600080fd5b50565b6000813590506147e8816147c2565b92915050565b600080600060408486031215614807576148066144f7565b5b600084013567ffffffffffffffff811115614825576148246144fc565b5b6148318682870161476c565b93509350506020614844868287016147d9565b9150509250925092565b61485781614521565b82525050565b6000602082019050614872600083018461484e565b92915050565b60006020828403121561488e5761488d6144f7565b5b600061489c848285016147d9565b91505092915050565b600080604083850312156148bc576148bb6144f7565b5b60006148ca85828601614580565b92505060206148db85828601614580565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61491d8261444b565b810181811067ffffffffffffffff8211171561493c5761493b6148e5565b5b80604052505050565b600061494f6144ed565b905061495b8282614914565b919050565b600067ffffffffffffffff82111561497b5761497a6148e5565b5b602082029050602081019050919050565b600061499f61499a84614960565b614945565b905080838252602082019050602084028301858111156149c2576149c1614767565b5b835b818110156149eb57806149d7888261454a565b8452602084019350506020810190506149c4565b5050509392505050565b600082601f830112614a0a57614a0961475d565b5b8135614a1a84826020860161498c565b91505092915050565b600060208284031215614a3957614a386144f7565b5b600082013567ffffffffffffffff811115614a5757614a566144fc565b5b614a63848285016149f5565b91505092915050565b60008060408385031215614a8357614a826144f7565b5b6000614a918582860161454a565b9250506020614aa28582860161454a565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000614ae2601783614410565b9150614aed82614aac565b602082019050919050565b60006020820190508181036000830152614b1181614ad5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614b5f57607f821691505b602082108103614b7257614b71614b18565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b6000614bd4602983614410565b9150614bdf82614b78565b604082019050919050565b60006020820190508181036000830152614c0381614bc7565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c79206469736160008201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b6000614c66602483614410565b9150614c7182614c0a565b604082019050919050565b60006020820190508181036000830152614c9581614c59565b9050919050565b600081519050614cab81614569565b92915050565b600060208284031215614cc757614cc66144f7565b5b6000614cd584828501614c9c565b91505092915050565b6000604082019050614cf3600083018561484e565b614d00602083018461467c565b9392505050565b600081519050614d16816147c2565b92915050565b600060208284031215614d3257614d316144f7565b5b6000614d4084828501614d07565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614d7f602083614410565b9150614d8a82614d49565b602082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614def8261455f565b9150614dfa8361455f565b9250828202614e088161455f565b91508282048414831517614e1f57614e1e614db5565b5b5092915050565b600081519050614e3581614533565b92915050565b600060208284031215614e5157614e506144f7565b5b6000614e5f84828501614e26565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ecc81614521565b82525050565b6000614ede8383614ec3565b60208301905092915050565b6000602082019050919050565b6000614f0282614e97565b614f0c8185614ea2565b9350614f1783614eb3565b8060005b83811015614f48578151614f2f8882614ed2565b9750614f3a83614eea565b925050600181019050614f1b565b5085935050505092915050565b6000604082019050614f6a600083018561467c565b8181036020830152614f7c8184614ef7565b90509392505050565b600067ffffffffffffffff821115614fa057614f9f6148e5565b5b602082029050602081019050919050565b6000614fc4614fbf84614f85565b614945565b90508083825260208201905060208402830185811115614fe757614fe6614767565b5b835b818110156150105780614ffc8882614c9c565b845260208401935050602081019050614fe9565b5050509392505050565b600082601f83011261502f5761502e61475d565b5b815161503f848260208601614fb1565b91505092915050565b60006020828403121561505e5761505d6144f7565b5b600082015167ffffffffffffffff81111561507c5761507b6144fc565b5b6150888482850161501a565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b60006150ed602283614410565b91506150f882615091565b604082019050919050565b6000602082019050818103600083015261511c816150e0565b9050919050565b6000604082019050615138600083018561484e565b615145602083018461484e565b9392505050565b6000819050919050565b600061517161516c6151678461514c565b614602565b61455f565b9050919050565b61518181615156565b82525050565b600060c08201905061519c600083018961484e565b6151a9602083018861467c565b6151b66040830187615178565b6151c36060830186615178565b6151d0608083018561484e565b6151dd60a083018461467c565b979650505050505050565b600080600060608486031215615201576152006144f7565b5b600061520f86828701614c9c565b935050602061522086828701614c9c565b925050604061523186828701614c9c565b9150509250925092565b60006152468261455f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361527857615277614db5565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b60006152df602583614410565b91506152ea82615283565b604082019050919050565b6000602082019050818103600083015261530e816152d2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615371602683614410565b915061537c82615315565b604082019050919050565b600060208201905081810360008301526153a081615364565b9050919050565b60006040820190506153bc600083018561467c565b6153c9602083018461467c565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061542c602483614410565b9150615437826153d0565b604082019050919050565b6000602082019050818103600083015261545b8161541f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154be602283614410565b91506154c982615462565b604082019050919050565b600060208201905081810360008301526154ed816154b1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615550602583614410565b915061555b826154f4565b604082019050919050565b6000602082019050818103600083015261557f81615543565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155e2602383614410565b91506155ed82615586565b604082019050919050565b60006020820190508181036000830152615611816155d5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000615674602983614410565b915061567f82615618565b604082019050919050565b600060208201905081810360008301526156a381615667565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000615706602583614410565b9150615711826156aa565b604082019050919050565b60006020820190508181036000830152615735816156f9565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b6000615798602383614410565b91506157a38261573c565b604082019050919050565b600060208201905081810360008301526157c78161578b565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b600061582a602783614410565b9150615835826157ce565b604082019050919050565b600060208201905081810360008301526158598161581d565b9050919050565b600061586b8261455f565b91506158768361455f565b925082820390508181111561588e5761588d614db5565b5b92915050565b600061589f8261455f565b91506158aa8361455f565b92508282019050808211156158c2576158c1614db5565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006158fe601b83614410565b9150615909826158c8565b602082019050919050565b6000602082019050818103600083015261592d816158f1565b9050919050565b600060a082019050615949600083018861467c565b6159566020830187615178565b81810360408301526159688186614ef7565b9050615977606083018561484e565b615984608083018461467c565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006159ea602183614410565b91506159f58261598e565b604082019050919050565b60006020820190508181036000830152615a19816159dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615a5a8261455f565b9150615a658361455f565b925082615a7557615a74615a20565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615adc602183614410565b9150615ae782615a80565b604082019050919050565b60006020820190508181036000830152615b0b81615acf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fced92cef1ec5677023b44b98cdf4c45ac0dbe3a66c71c6a63a5eb8f652125d664736f6c63430008110033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122097ec48e7b5aa38fc0588dbefcbb2c294a8aacebcb49b2ea9a79d02743aa4308864736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80636c0a24eb1161014f578063a457c2d7116100c1578063dc13b31c1161007a578063dc13b31c14610939578063dd62ed3e14610964578063e68167aa146109a1578063e7dad4f9146109cc578063ec11ba3414610a09578063f2fde38b14610a2057610288565b8063a457c2d71461082b578063a9059cbb14610868578063b2abbbc4146108a5578063c9567bf9146108ce578063d5f39488146108e5578063d9058bd51461091057610288565b806385d4787b1161011357806385d4787b146107415780638da5cb5b1461076a57806395d89b411461079557806395f4c958146107c05780639b0e2e86146107d7578063a2ae74f41461080057610288565b80636c0a24eb1461067057806370a082311461069b578063715018a6146106d8578063794ac149146106ef57806381230a831461071857610288565b80632b14ca56116101f357806348fad638116101ac57806348fad638146105705780634b94f50e1461059b57806350faa48f146105c657806351bc3c85146105f15780635342acb41461060857806354a5df1f1461064557610288565b80632b14ca561461045e578063313ce5671461048957806339509351146104b4578063441d801f146104f1578063470624021461051a578063482e53ff1461054557610288565b8063139196f711610245578063139196f71461034e5780631694505e1461037757806318160ddd146103a25780631f61fd5a146103cd57806323b872dd146103f857806327a14fc21461043557610288565b806306e99fef1461028d57806306fdde03146102a457806307ebec27146102cf57806308003f78146102fa578063095ea7b31461031157610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a49565b005b3480156102b057600080fd5b506102b9610c0f565b6040516102c69190614495565b60405180910390f35b3480156102db57600080fd5b506102e4610ca1565b6040516102f191906144d2565b60405180910390f35b34801561030657600080fd5b5061030f610cb4565b005b34801561031d57600080fd5b5061033860048036038101906103339190614595565b610d52565b60405161034591906144d2565b60405180910390f35b34801561035a57600080fd5b50610375600480360381019061037091906145d5565b610d70565b005b34801561038357600080fd5b5061038c610fee565b6040516103999190614661565b60405180910390f35b3480156103ae57600080fd5b506103b7611014565b6040516103c4919061468b565b60405180910390f35b3480156103d957600080fd5b506103e261101e565b6040516103ef919061468b565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a91906146a6565b611024565b60405161042c91906144d2565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906146f9565b6110fd565b005b34801561046a57600080fd5b506104736111ab565b604051610480919061468b565b60405180910390f35b34801561049557600080fd5b5061049e6111b1565b6040516104ab9190614742565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190614595565b6111c8565b6040516104e891906144d2565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906147ee565b61127b565b005b34801561052657600080fd5b5061052f611320565b60405161053c919061468b565b60405180910390f35b34801561055157600080fd5b5061055a611326565b604051610567919061468b565b60405180910390f35b34801561057c57600080fd5b5061058561132c565b604051610592919061468b565b60405180910390f35b3480156105a757600080fd5b506105b0611332565b6040516105bd919061468b565b60405180910390f35b3480156105d257600080fd5b506105db611575565b6040516105e8919061485d565b60405180910390f35b3480156105fd57600080fd5b5061060661159b565b005b34801561061457600080fd5b5061062f600480360381019061062a91906145d5565b6115d3565b60405161063c91906144d2565b60405180910390f35b34801561065157600080fd5b5061065a611629565b604051610667919061468b565b60405180910390f35b34801561067c57600080fd5b5061068561162f565b604051610692919061468b565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd91906145d5565b611635565b6040516106cf919061468b565b60405180910390f35b3480156106e457600080fd5b506106ed61167e565b005b3480156106fb57600080fd5b5061071660048036038101906107119190614878565b6117d1565b005b34801561072457600080fd5b5061073f600480360381019061073a91906148a5565b611883565b005b34801561074d57600080fd5b5061076860048036038101906107639190614a23565b61192a565b005b34801561077657600080fd5b5061077f6119cd565b60405161078c919061485d565b60405180910390f35b3480156107a157600080fd5b506107aa6119f6565b6040516107b79190614495565b60405180910390f35b3480156107cc57600080fd5b506107d5611a88565b005b3480156107e357600080fd5b506107fe60048036038101906107f99190614a23565b611a92565b005b34801561080c57600080fd5b50610815611b35565b60405161082291906144d2565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190614595565b611b48565b60405161085f91906144d2565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190614595565b611c15565b60405161089c91906144d2565b60405180910390f35b3480156108b157600080fd5b506108cc60048036038101906108c791906146f9565b611c33565b005b3480156108da57600080fd5b506108e3611cd2565b005b3480156108f157600080fd5b506108fa61222b565b604051610907919061485d565b60405180910390f35b34801561091c57600080fd5b50610937600480360381019061093291906148a5565b612251565b005b34801561094557600080fd5b5061094e6122f8565b60405161095b919061468b565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190614a6c565b6122fe565b604051610998919061468b565b60405180910390f35b3480156109ad57600080fd5b506109b6612385565b6040516109c3919061468b565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee91906145d5565b61259a565b604051610a0091906144d2565b60405180910390f35b348015610a1557600080fd5b50610a1e6125f0565b005b348015610a2c57600080fd5b50610a476004803603810190610a4291906145d5565b6126f1565b005b610a516128b2565b73ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b005750610aaf6128b2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b5f5750610b0e6128b2565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9590614af8565b60405180910390fd5b6000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c0b573d6000803e3d6000fd5b5050565b6060600b8054610c1e90614b47565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4a90614b47565b8015610c975780601f10610c6c57610100808354040283529160200191610c97565b820191906000526020600020905b815481529060010190602001808311610c7a57829003601f168201915b5050505050905090565b601560019054906101000a900460ff1681565b601954421015610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090614bea565b60405180910390fd5b601560019054906101000a900460ff16610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90614c7c565b60405180910390fd5b610d506128ba565b565b6000610d66610d5f6128b2565b8484612a78565b6001905092915050565b610d786128b2565b73ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610e275750610dd66128b2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610e865750610e356128b2565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90614af8565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f05919061485d565b602060405180830381865afa158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190614cb1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610fa5929190614cde565b6020604051808303816000875af1158015610fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe89190614d1c565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e54905090565b60165481565b6000611031848484612c41565b6110f28461103d6128b2565b6110ed85604051806060016040528060288152602001615b1360289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110a36128b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138059092919063ffffffff16565b612a78565b600190509392505050565b6111056128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990614d95565b60405180910390fd5b633b9aca00816111a29190614de4565b600f8190555050565b60125481565b6000600d60009054906101000a900460ff16905090565b60006112716111d56128b2565b8461126c85600860006111e66128b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b612a78565b6001905092915050565b6112836128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130790614d95565b60405180910390fd5b61131b8383836138c7565b505050565b60115481565b60175481565b60195481565b600080600267ffffffffffffffff8111156113505761134f6148e5565b5b60405190808252806020026020018201604052801561137e5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190614e3b565b8160008151811061142657611425614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061147557611474614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601454836040518363ffffffff1660e01b815260040161150e929190614f55565b600060405180830381865afa15801561152b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115549190615048565b60018151811061156757611566614e68565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115a630611635565b905060008111156115d057601060009054906101000a900460ff166115cf576115ce81613972565b5b5b50565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600f5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116866128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90614d95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6117d96128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90614d95565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b61188b6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90614d95565b60405180910390fd5b81601181905550806012819055505050565b6119326128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690614d95565b60405180910390fd5b6119ca816001613ca6565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611a0590614b47565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3190614b47565b8015611a7e5780601f10611a5357610100808354040283529160200191611a7e565b820191906000526020600020905b815481529060010190602001808311611a6157829003601f168201915b5050505050905090565b611a90613d9d565b565b611a9a6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e90614d95565b60405180910390fd5b611b32816000613ca6565b50565b601560009054906101000a900460ff1681565b6000611c0b611b556128b2565b84611c0685604051806060016040528060258152602001615b3b6025913960086000611b7f6128b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138059092919063ffffffff16565b612a78565b6001905092915050565b6000611c29611c226128b2565b8484612c41565b6001905092915050565b611c3b6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf90614d95565b60405180910390fd5b8060148190555050565b611cda6128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5e90614d95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90615103565b60405180910390fd5b611e2730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54612a78565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb89190614e3b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190614e3b565b6040518363ffffffff1660e01b8152600401611f82929190615123565b6020604051808303816000875af1158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc59190614e3b565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061204e30611635565b6000806120596119cd565b426040518863ffffffff1660e01b815260040161207b96959493929190615187565b60606040518083038185885af1158015612099573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120be91906151e8565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612160929190614cde565b6020604051808303816000875af115801561217f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a39190614d1c565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426019819055506001601560006101000a81548160ff021916908315150217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122596128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90614d95565b60405180910390fd5b81601681905550806017819055505050565b60185481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124209190614cb1565b811015612592576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612484919061468b565b602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190614e3b565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b8152600401612524919061485d565b602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614cb1565b905080421061257d5783806125799061523b565b9450505b5050808061258a9061523b565b91505061238f565b508091505090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6125f86128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90614d95565b60405180910390fd5b601560009054906101000a900460ff166126d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cb906152f5565b60405180910390fd5b6000601560006101000a81548160ff021916908315150217905550565b6126f96128b2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90614d95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ec90615387565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6001601060006101000a81548160ff0219169083151502179055506000612902600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611635565b9050600061291b6017548361410b90919063ffffffff16565b90506000811115612a5957612952600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614155565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156129bc57600080fd5b505af11580156129d0573d6000803e3d6000fd5b505050506129e98160185461386990919063ffffffff16565b601881905550612a17612a08603c6016546142de90919063ffffffff16565b4261386990919063ffffffff16565b6019819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d81601954604051612a509291906153a7565b60405180910390a15b50506000601060006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ade90615442565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d906154d4565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c34919061468b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca790615566565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d16906155f8565b60405180910390fd5b60008111612d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d599061568a565b60405180910390fd5b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e095750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e485750612e186119cd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612e875750612e576119cd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612f355750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612f6d57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612fa557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156135c25780156135c157600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361315f57601560009054906101000a900460ff16156130b657613022613d9d565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82885426040518363ffffffff1660e01b815260040161307f929190614cde565b600060405180830381600087803b15801561309957600080fd5b505af11580156130ad573d6000803e3d6000fd5b5050505061315e565b6130de60646130d0601154866142de90919063ffffffff16565b61410b90919063ffffffff16565b915060006130f5838561435890919063ffffffff16565b905060006131148261310688611635565b61386990919063ffffffff16565b9050600f5481111561315b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131529061571c565b60405180910390fd5b50505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561320a5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156133bc57600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132b35750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6132f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e9906157ae565b60405180910390fd5b601560009054906101000a900460ff161561330e576000613337565b6133366064613328601254866142de90919063ffffffff16565b61410b90919063ffffffff16565b5b915060195442101580156133575750601560019054906101000a900460ff165b15613369576133646128ba565b6133bb565b600061337430611635565b905060008111156133b9576000613389611332565b90508082101580156133a85750601060009054906101000a900460ff16155b156133b7576133b681613972565b5b505b505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156134685750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156135c057600061347886611635565b9050600061348586611635565b9050600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561352b5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61356a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356190615840565b60405180910390fd5b600f54821115801561357e5750600f548111155b6135bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b49061571c565b60405180910390fd5b50505b5b5b60006135d7838561435890919063ffffffff16565b905061362b84600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435890919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136c081600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375583600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137f5919061468b565b60405180910390a3505050505050565b600083831115829061384d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138449190614495565b60405180910390fd5b506000838561385c9190615860565b9050809150509392505050565b60008082846138789190615894565b9050838110156138bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b490615914565b60405180910390fd5b8091505092915050565b60005b8383905081101561396c5760008484838181106138ea576138e9614e68565b5b90506020020160208101906138ff91906145d5565b905082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806139649061523b565b9150506138ca565b50505050565b6000600267ffffffffffffffff81111561398f5761398e6148e5565b5b6040519080825280602002602001820160405280156139bd5781602001602082028036833780820191505090505b50905030816000815181106139d5576139d4614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa09190614e3b565b81600181518110613ab457613ab3614e68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b1b30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a78565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b7f959493929190615934565b600060405180830381600087803b158015613b9957600080fd5b505af1158015613bad573d6000803e3d6000fd5b5050505060004790506000613bcc60028361410b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c36573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c9f573d6000803e3d6000fd5b5050505050565b60005b8251811015613d98576000838281518110613cc757613cc6614e68565b5b602002602001015190508215613d34576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613d84565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080613d909061523b565b915050613ca9565b505050565b601560009054906101000a900460ff16156141095760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e469190614cb1565b811015614107576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401613eaa919061468b565b602060405180830381865afa158015613ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eeb9190614e3b565b90506000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561406557613f8c81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435890919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402181600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386990919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016140c0919061485d565b600060405180830381600087803b1580156140da57600080fd5b505af11580156140ee573d6000803e3d6000fd5b50505050505080806140ff9061523b565b915050613db5565b505b565b600061414d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506143a2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036141c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141bb90615a00565b60405180910390fd5b6141d981600e5461435890919063ffffffff16565b600e8190555061423181600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435890919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142d2919061468b565b60405180910390a35050565b60008083036142f05760009050614352565b600082846142fe9190614de4565b905082848261430d9190615a4f565b1461434d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161434490615af2565b60405180910390fd5b809150505b92915050565b600061439a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613805565b905092915050565b600080831182906143e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143e09190614495565b60405180910390fd5b50600083856143f89190615a4f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561443f578082015181840152602081019050614424565b60008484015250505050565b6000601f19601f8301169050919050565b600061446782614405565b6144718185614410565b9350614481818560208601614421565b61448a8161444b565b840191505092915050565b600060208201905081810360008301526144af818461445c565b905092915050565b60008115159050919050565b6144cc816144b7565b82525050565b60006020820190506144e760008301846144c3565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061452c82614501565b9050919050565b61453c81614521565b811461454757600080fd5b50565b60008135905061455981614533565b92915050565b6000819050919050565b6145728161455f565b811461457d57600080fd5b50565b60008135905061458f81614569565b92915050565b600080604083850312156145ac576145ab6144f7565b5b60006145ba8582860161454a565b92505060206145cb85828601614580565b9150509250929050565b6000602082840312156145eb576145ea6144f7565b5b60006145f98482850161454a565b91505092915050565b6000819050919050565b600061462761462261461d84614501565b614602565b614501565b9050919050565b60006146398261460c565b9050919050565b600061464b8261462e565b9050919050565b61465b81614640565b82525050565b60006020820190506146766000830184614652565b92915050565b6146858161455f565b82525050565b60006020820190506146a0600083018461467c565b92915050565b6000806000606084860312156146bf576146be6144f7565b5b60006146cd8682870161454a565b93505060206146de8682870161454a565b92505060406146ef86828701614580565b9150509250925092565b60006020828403121561470f5761470e6144f7565b5b600061471d84828501614580565b91505092915050565b600060ff82169050919050565b61473c81614726565b82525050565b60006020820190506147576000830184614733565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126147825761478161475d565b5b8235905067ffffffffffffffff81111561479f5761479e614762565b5b6020830191508360208202830111156147bb576147ba614767565b5b9250929050565b6147cb816144b7565b81146147d657600080fd5b50565b6000813590506147e8816147c2565b92915050565b600080600060408486031215614807576148066144f7565b5b600084013567ffffffffffffffff811115614825576148246144fc565b5b6148318682870161476c565b93509350506020614844868287016147d9565b9150509250925092565b61485781614521565b82525050565b6000602082019050614872600083018461484e565b92915050565b60006020828403121561488e5761488d6144f7565b5b600061489c848285016147d9565b91505092915050565b600080604083850312156148bc576148bb6144f7565b5b60006148ca85828601614580565b92505060206148db85828601614580565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61491d8261444b565b810181811067ffffffffffffffff8211171561493c5761493b6148e5565b5b80604052505050565b600061494f6144ed565b905061495b8282614914565b919050565b600067ffffffffffffffff82111561497b5761497a6148e5565b5b602082029050602081019050919050565b600061499f61499a84614960565b614945565b905080838252602082019050602084028301858111156149c2576149c1614767565b5b835b818110156149eb57806149d7888261454a565b8452602084019350506020810190506149c4565b5050509392505050565b600082601f830112614a0a57614a0961475d565b5b8135614a1a84826020860161498c565b91505092915050565b600060208284031215614a3957614a386144f7565b5b600082013567ffffffffffffffff811115614a5757614a566144fc565b5b614a63848285016149f5565b91505092915050565b60008060408385031215614a8357614a826144f7565b5b6000614a918582860161454a565b9250506020614aa28582860161454a565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000614ae2601783614410565b9150614aed82614aac565b602082019050919050565b60006020820190508181036000830152614b1181614ad5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614b5f57607f821691505b602082108103614b7257614b71614b18565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b6000614bd4602983614410565b9150614bdf82614b78565b604082019050919050565b60006020820190508181036000830152614c0381614bc7565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c79206469736160008201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b6000614c66602483614410565b9150614c7182614c0a565b604082019050919050565b60006020820190508181036000830152614c9581614c59565b9050919050565b600081519050614cab81614569565b92915050565b600060208284031215614cc757614cc66144f7565b5b6000614cd584828501614c9c565b91505092915050565b6000604082019050614cf3600083018561484e565b614d00602083018461467c565b9392505050565b600081519050614d16816147c2565b92915050565b600060208284031215614d3257614d316144f7565b5b6000614d4084828501614d07565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614d7f602083614410565b9150614d8a82614d49565b602082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614def8261455f565b9150614dfa8361455f565b9250828202614e088161455f565b91508282048414831517614e1f57614e1e614db5565b5b5092915050565b600081519050614e3581614533565b92915050565b600060208284031215614e5157614e506144f7565b5b6000614e5f84828501614e26565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ecc81614521565b82525050565b6000614ede8383614ec3565b60208301905092915050565b6000602082019050919050565b6000614f0282614e97565b614f0c8185614ea2565b9350614f1783614eb3565b8060005b83811015614f48578151614f2f8882614ed2565b9750614f3a83614eea565b925050600181019050614f1b565b5085935050505092915050565b6000604082019050614f6a600083018561467c565b8181036020830152614f7c8184614ef7565b90509392505050565b600067ffffffffffffffff821115614fa057614f9f6148e5565b5b602082029050602081019050919050565b6000614fc4614fbf84614f85565b614945565b90508083825260208201905060208402830185811115614fe757614fe6614767565b5b835b818110156150105780614ffc8882614c9c565b845260208401935050602081019050614fe9565b5050509392505050565b600082601f83011261502f5761502e61475d565b5b815161503f848260208601614fb1565b91505092915050565b60006020828403121561505e5761505d6144f7565b5b600082015167ffffffffffffffff81111561507c5761507b6144fc565b5b6150888482850161501a565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b60006150ed602283614410565b91506150f882615091565b604082019050919050565b6000602082019050818103600083015261511c816150e0565b9050919050565b6000604082019050615138600083018561484e565b615145602083018461484e565b9392505050565b6000819050919050565b600061517161516c6151678461514c565b614602565b61455f565b9050919050565b61518181615156565b82525050565b600060c08201905061519c600083018961484e565b6151a9602083018861467c565b6151b66040830187615178565b6151c36060830186615178565b6151d0608083018561484e565b6151dd60a083018461467c565b979650505050505050565b600080600060608486031215615201576152006144f7565b5b600061520f86828701614c9c565b935050602061522086828701614c9c565b925050604061523186828701614c9c565b9150509250925092565b60006152468261455f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361527857615277614db5565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b60006152df602583614410565b91506152ea82615283565b604082019050919050565b6000602082019050818103600083015261530e816152d2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615371602683614410565b915061537c82615315565b604082019050919050565b600060208201905081810360008301526153a081615364565b9050919050565b60006040820190506153bc600083018561467c565b6153c9602083018461467c565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061542c602483614410565b9150615437826153d0565b604082019050919050565b6000602082019050818103600083015261545b8161541f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006154be602283614410565b91506154c982615462565b604082019050919050565b600060208201905081810360008301526154ed816154b1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615550602583614410565b915061555b826154f4565b604082019050919050565b6000602082019050818103600083015261557f81615543565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006155e2602383614410565b91506155ed82615586565b604082019050919050565b60006020820190508181036000830152615611816155d5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000615674602983614410565b915061567f82615618565b604082019050919050565b600060208201905081810360008301526156a381615667565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000615706602583614410565b9150615711826156aa565b604082019050919050565b60006020820190508181036000830152615735816156f9565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b6000615798602383614410565b91506157a38261573c565b604082019050919050565b600060208201905081810360008301526157c78161578b565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b600061582a602783614410565b9150615835826157ce565b604082019050919050565b600060208201905081810360008301526158598161581d565b9050919050565b600061586b8261455f565b91506158768361455f565b925082820390508181111561588e5761588d614db5565b5b92915050565b600061589f8261455f565b91506158aa8361455f565b92508282019050808211156158c2576158c1614db5565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006158fe601b83614410565b9150615909826158c8565b602082019050919050565b6000602082019050818103600083015261592d816158f1565b9050919050565b600060a082019050615949600083018861467c565b6159566020830187615178565b81810360408301526159688186614ef7565b9050615977606083018561484e565b615984608083018461467c565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006159ea602183614410565b91506159f58261598e565b604082019050919050565b60006020820190508181036000830152615a19816159dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615a5a8261455f565b9150615a658361455f565b925082615a7557615a74615a20565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615adc602183614410565b9150615ae782615a80565b604082019050919050565b60006020820190508181036000830152615b0b81615acf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fced92cef1ec5677023b44b98cdf4c45ac0dbe3a66c71c6a63a5eb8f652125d664736f6c63430008110033

Deployed Bytecode Sourcemap

11432:14198:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25231:146;;;;;;;;;;;;;:::i;:::-;;13551:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12811:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17588:262;;;;;;;;;;;;;:::i;:::-;;14384:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25385:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11774:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13828:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12850:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14553:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19312:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12648:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13737:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14874:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16453:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12616:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12900:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13009:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24792:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11887:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23780:267;;;;;;;;;;;;;:::i;:::-;;19180:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12712:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12523:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13931:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6506:148;;;;;;;;;;;;;:::i;:::-;;17473:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15377:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15826:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6292:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13642:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23704:70;;;;;;;;;;;;;:::i;:::-;;15962:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12770:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15100:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14058:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25064:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18408:764;;;;;;;;;;;;;:::i;:::-;;12682:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16621:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12960:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14233:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23314:382;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15709:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15507:193;;;;;;;;;;;;;:::i;:::-;;6662:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25231:146;13109:12;:10;:12::i;:::-;13097:24;;:8;;;;;;;;;;;:24;;;:50;;;;13135:12;:10;:12::i;:::-;13125:22;;:6;;;;;;;;;;;:22;;;13097:50;:76;;;;13161:12;:10;:12::i;:::-;13151:22;;:6;;;;;;;;;;;:22;;;13097:76;13089:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;25278:18:::1;25299:21;25278:42;;25339:8;;;;;;;;;;;25331:26;;:38;25358:10;25331:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25267:110;25231:146::o:0;13551:83::-;13588:13;13621:5;13614:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13551:83;:::o;12811:32::-;;;;;;;;;;;;;:::o;17588:262::-;17657:26;;17638:15;:45;;17630:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;17748:13;;;;;;;;;;;17740:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17813:29;:27;:29::i;:::-;17588:262::o;14384:161::-;14459:4;14476:39;14485:12;:10;:12::i;:::-;14499:7;14508:6;14476:8;:39::i;:::-;14533:4;14526:11;;14384:161;;;;:::o;25385:242::-;13109:12;:10;:12::i;:::-;13097:24;;:8;;;;;;;;;;;:24;;;:50;;;;13135:12;:10;:12::i;:::-;13125:22;;:6;;;;;;;;;;;:22;;;13097:50;:76;;;;13161:12;:10;:12::i;:::-;13151:22;;:6;;;;;;;;;;;:22;;;13097:76;13089:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;25463:17:::1;25490:15;25463:43;;25517:15;25535:10;:20;;;25564:4;25535:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25517:53;;25581:10;:19;;;25601:8;;;;;;;;;;;25611:7;25581:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25452:175;;25385:242:::0;:::o;11774:106::-;;;;;;;;;;;;;:::o;13828:95::-;13881:7;13908;;13901:14;;13828:95;:::o;12850:41::-;;;;:::o;14553:313::-;14651:4;14668:36;14678:6;14686:9;14697:6;14668:9;:36::i;:::-;14715:121;14724:6;14732:12;:10;:12::i;:::-;14746:89;14784:6;14746:89;;;;;;;;;;;;;;;;;:11;:19;14758:6;14746:19;;;;;;;;;;;;;;;:33;14766:12;:10;:12::i;:::-;14746:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14715:8;:121::i;:::-;14854:4;14847:11;;14553:313;;;;;:::o;19312:137::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19434:7:::1;19416:15;:25;;;;:::i;:::-;19397:16;:44;;;;19312:137:::0;:::o;12648:27::-;;;;:::o;13737:83::-;13778:5;13803:9;;;;;;;;;;;13796:16;;13737:83;:::o;14874:218::-;14962:4;14979:83;14988:12;:10;:12::i;:::-;15002:7;15011:50;15050:10;15011:11;:25;15023:12;:10;:12::i;:::-;15011:25;;;;;;;;;;;;;;;:34;15037:7;15011:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14979:8;:83::i;:::-;15080:4;15073:11;;14874:218;;;;:::o;16453:161::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16565:41:::1;16578:9;;16589:16;16565:12;:41::i;:::-;16453:161:::0;;;:::o;12616:25::-;;;;:::o;12900:41::-;;;;:::o;13009:38::-;;;;:::o;24792:264::-;24838:7;24859:21;24897:1;24883:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24859:40;;24920:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24910:4;24915:1;24910:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24971:4;24953;24958:1;24953:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24994:15;;;;;;;;;;;:29;;;25024:14;;25040:4;24994:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25046:1;24994:54;;;;;;;;:::i;:::-;;;;;;;;24987:61;;;24792:264;:::o;11887:38::-;;;;;;;;;;;;;:::o;23780:267::-;23822:28;23853:24;23871:4;23853:9;:24::i;:::-;23822:55;;23915:1;23892:20;:24;23888:152;;;23938:16;;;;;;;;;;;23933:96;;23975:38;23992:20;23975:16;:38::i;:::-;23933:96;23888:152;23811:236;23780:267::o;19180:124::-;19245:4;19269:18;:27;19288:7;19269:27;;;;;;;;;;;;;;;;;;;;;;;;;19262:34;;19180:124;;;:::o;12712:50::-;;;;:::o;12523:58::-;;;;:::o;13931:119::-;13997:7;14024:9;:18;14034:7;14024:18;;;;;;;;;;;;;;;;14017:25;;13931:119;;;:::o;6506:148::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6613:1:::1;6576:40;;6597:6;::::0;::::1;;;;;;;;6576:40;;;;;;;;;;;;6644:1;6627:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6506:148::o:0;17473:107::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17564:8:::1;17548:13;;:24;;;;;;;;;;;;;;;;;;17473:107:::0;:::o;15377:122::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15463:3:::1;15454:6;:12;;;;15487:4;15477:7;:14;;;;15377:122:::0;;:::o;15826:128::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15910:36:::1;15930:9;15941:4;15910:19;:36::i;:::-;15826:128:::0;:::o;6292:79::-;6330:7;6357:6;;;;;;;;;;;6350:13;;6292:79;:::o;13642:87::-;13681:13;13714:7;13707:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13642:87;:::o;23704:70::-;23751:15;:13;:15::i;:::-;23704:70::o;15962:131::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16048:37:::1;16068:9;16079:5;16048:19;:37::i;:::-;15962:131:::0;:::o;12770:34::-;;;;;;;;;;;;;:::o;15100:269::-;15193:4;15210:129;15219:12;:10;:12::i;:::-;15233:7;15242:96;15281:15;15242:96;;;;;;;;;;;;;;;;;:11;:25;15254:12;:10;:12::i;:::-;15242:25;;;;;;;;;;;;;;;:34;15268:7;15242:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15210:8;:129::i;:::-;15357:4;15350:11;;15100:269;;;;:::o;14058:167::-;14136:4;14153:42;14163:12;:10;:12::i;:::-;14177:9;14188:6;14153:9;:42::i;:::-;14213:4;14206:11;;14058:167;;;;:::o;25064:122::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25163:15:::1;25146:14;:32;;;;25064:122:::0;:::o;18408:764::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18493:1:::1;18471:24;;:10;;;;;;;;;;;:24;;;18463:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18544:58;18561:4;18576:15;;;;;;;;;;;18594:7;;18544:8;:58::i;:::-;18644:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18626:55;;;18690:4;18697:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18626:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18613:10;;:107;;;;;;;;;;;;;;;;;;18731:15;;;;;;;;;;;:31;;;18770:21;18815:4;18835:24;18853:4;18835:9;:24::i;:::-;18874:1;18890::::0;18906:7:::1;:5;:7::i;:::-;18928:15;18731:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18962:10;;;;;;;;;;;18955:26;;;18990:15;;;;;;;;;;;19008:14;18955:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19058:10;;;;;;;;;;;19034:6;;:35;;;;;;;;;;;;;;;;;;19109:15;19080:26;:44;;;;19160:4;19135:22;;:29;;;;;;;;;;;;;;;;;;18408:764::o:0;12682:23::-;;;;;;;;;;;;;:::o;16621:205::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16752:18:::1;16728:21;:42;;;;16804:14;16781:20;:37;;;;16621:205:::0;;:::o;12960:42::-;;;;:::o;14233:143::-;14314:7;14341:11;:18;14353:5;14341:18;;;;;;;;;;;;;;;:27;14360:7;14341:27;;;;;;;;;;;;;;;;14334:34;;14233:143;;;;:::o;23314:382::-;23364:7;23384:13;23400:1;23384:17;;23416:9;23412:254;23434:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23430:1;:24;23412:254;;;23476:14;23493:13;;;;;;;;;;;:27;;;23521:1;23493:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23476:47;;23538:14;23555:13;;;;;;;;;;;:17;;;23573:6;23555:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23538:42;;23618:9;23598:15;:29;23595:59;;23647:7;;;;;:::i;:::-;;;;23595:59;23461:205;;23456:3;;;;;:::i;:::-;;;;23412:254;;;;23683:5;23676:12;;;23314:382;:::o;15709:109::-;15770:4;15794:10;:16;15805:4;15794:16;;;;;;;;;;;;;;;;;;;;;;;;;15787:23;;15709:109;;;:::o;15507:193::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15588:22:::1;;;;;;;;;;;15580:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15687:5;15662:22;;:30;;;;;;;;;;;;;;;;;;15507:193::o:0;6662:244::-;6429:12;:10;:12::i;:::-;6419:22;;:6;;;;;;;;;;:22;;;6411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6771:1:::1;6751:22;;:8;:22;;::::0;6743:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6861:8;6832:38;;6853:6;::::0;::::1;;;;;;;;6832:38;;;;;;;;;;;;6890:8;6881:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6662:244:::0;:::o;2634:98::-;2687:7;2714:10;2707:17;;2634:98;:::o;16834:631::-;11598:4;11579:16;;:23;;;;;;;;;;;;;;;;;;16904:14:::1;16921:21;16931:10;;;;;;;;;;;16921:9;:21::i;:::-;16904:38;;16953:20;16976:35;16990:20;;16976:9;:13;;:35;;;;:::i;:::-;16953:58;;17043:1;17025:15;:19;17022:436;;;17128:34;17134:10;;;;;;;;;;;17146:15;17128:5;:34::i;:::-;17177:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17231:44;17259:15;17231:23;;:27;;:44;;;;:::i;:::-;17205:23;:70;;;;17319:50;17339:29;17365:2;17339:21;;:25;;:29;;;;:::i;:::-;17319:15;:19;;:50;;;;:::i;:::-;17290:26;:79;;;;17389:57;17402:15;17419:26;;17389:57;;;;;;;:::i;:::-;;;;;;;;17022:436;16893:572;;11644:5:::0;11625:16;;:24;;;;;;;;;;;;;;;;;;16834:631::o;19457:337::-;19567:1;19550:19;;:5;:19;;;19542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19648:1;19629:21;;:7;:21;;;19621:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19732:6;19702:11;:18;19714:5;19702:18;;;;;;;;;;;;;;;:27;19721:7;19702:27;;;;;;;;;;;;;;;:36;;;;19770:7;19754:32;;19763:5;19754:32;;;19779:6;19754:32;;;;;;:::i;:::-;;;;;;;;19457:337;;;:::o;19802:2950::-;19906:1;19890:18;;:4;:18;;;19882:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19983:1;19969:16;;:2;:16;;;19961:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20053:1;20044:6;:10;20036:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20111:17;20143:13;20160:18;:24;20179:4;20160:24;;;;;;;;;;;;;;;;;;;;;;;;;20159:25;:52;;;;;20189:18;:22;20208:2;20189:22;;;;;;;;;;;;;;;;;;;;;;;;;20188:23;20159:52;:71;;;;;20223:7;:5;:7::i;:::-;20215:15;;:4;:15;;;;20159:71;:88;;;;;20240:7;:5;:7::i;:::-;20234:13;;:2;:13;;;;20159:88;20143:104;;20269:8;;;;;;;;;;;20261:16;;:4;:16;;;;:34;;;;;20287:8;;;;;;;;;;;20281:14;;:2;:14;;;;20261:34;:59;;;;;20315:4;20299:21;;:4;:21;;;;20261:59;:82;;;;;20338:4;20324:19;;:2;:19;;;;20261:82;20258:2180;;;20363:8;20360:2067;;;20422:10;;;;;;;;;;;20414:18;;:4;:18;;;20410:587;;20460:22;;;;;;;;;;;20457:521;;;20511:15;:13;:15::i;:::-;20553:13;;;;;;;;;;;:17;;;20571:2;20575:15;20553:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20457:521;;;20660:27;20683:3;20660:18;20671:6;;20660;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;20648:39;;20714:22;20739:21;20750:9;20739:6;:10;;:21;;;;:::i;:::-;20714:46;;20787:21;20811:33;20829:14;20811:13;20821:2;20811:9;:13::i;:::-;:17;;:33;;;;:::i;:::-;20787:57;;20896:16;;20879:13;:33;;20871:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;20621:357;;20457:521;20410:587;21027:10;;;;;;;;;;;21019:18;;:4;:18;;;;:38;;;;;21047:10;;;;;;;;;;;21041:16;;:2;:16;;;21019:38;21015:951;;;21091:10;:16;21102:4;21091:16;;;;;;;;;;;;;;;;;;;;;;;;;21090:17;:36;;;;;21112:10;:14;21123:2;21112:14;;;;;;;;;;;;;;;;;;;;;;;;;21111:15;21090:36;21082:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;21210:22;;;;;;;;;;;21209:23;:58;;21266:1;21209:58;;;21235:28;21259:3;21235:19;21246:7;;21235:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21209:58;21197:70;;21312:26;;21293:15;:45;;:62;;;;;21342:13;;;;;;;;;;;21293:62;21290:657;;;21388:29;:27;:29::i;:::-;21290:657;;;21474:28;21505:24;21523:4;21505:9;:24::i;:::-;21474:55;;21583:1;21560:20;:24;21556:364;;;21651:19;21673:15;:13;:15::i;:::-;21651:37;;21751:11;21727:20;:35;;:56;;;;;21767:16;;;;;;;;;;;21766:17;21727:56;21723:166;;;21824:29;21841:11;21824:16;:29::i;:::-;21723:166;21586:334;21556:364;21447:500;21290:657;21015:951;21996:10;;;;;;;;;;;21988:18;;:4;:18;;;;:38;;;;;22016:10;;;;;;;;;;;22010:16;;:2;:16;;;;21988:38;21984:428;;;22051:19;22073:15;22083:4;22073:9;:15::i;:::-;22051:37;;22111:17;22131:13;22141:2;22131:9;:13::i;:::-;22111:33;;22176:10;:16;22187:4;22176:16;;;;;;;;;;;;;;;;;;;;;;;;;22175:17;:36;;;;;22197:10;:14;22208:2;22197:14;;;;;;;;;;;;;;;;;;;;;;;;;22196:15;22175:36;22167:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;22301:16;;22286:11;:31;;:64;;;;;22334:16;;22321:9;:29;;22286:64;22278:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;22028:384;;21984:428;20360:2067;20258:2180;22455:22;22480:21;22491:9;22480:6;:10;;:21;;;;:::i;:::-;22455:46;;22530:27;22550:6;22530:9;:15;22540:4;22530:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;22512:9;:15;22522:4;22512:15;;;;;;;;;;;;;;;:45;;;;22584:33;22602:14;22584:9;:13;22594:2;22584:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;22568:9;:13;22578:2;22568:13;;;;;;;;;;;;;;;:49;;;;22655:39;22684:9;22655;:24;22673:4;22655:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22628:9;:24;22646:4;22628:24;;;;;;;;;;;;;;;:66;;;;22725:2;22710:34;;22719:4;22710:34;;;22729:14;22710:34;;;;;;:::i;:::-;;;;;;;;19871:2881;;;19802:2950;;;:::o;1106:192::-;1192:7;1225:1;1220;:6;;1228:12;1212:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1252:9;1268:1;1264;:5;;;;:::i;:::-;1252:17;;1289:1;1282:8;;;1106:192;;;;;:::o;773:181::-;831:7;851:9;867:1;863;:5;;;;:::i;:::-;851:17;;892:1;887;:6;;879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;945:1;938:8;;;773:181;;;;:::o;17858:236::-;17945:9;17940:147;17964:9;;:16;;17960:1;:20;17940:147;;;18002:12;18017:9;;18027:1;18017:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18002:27;;18071:4;18044:18;:24;18063:4;18044:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;17987:100;17982:3;;;;;:::i;:::-;;;;17940:147;;;;17858:236;;;:::o;24055:729::-;24181:21;24219:1;24205:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24181:40;;24250:4;24232;24237:1;24232:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24276:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24266:4;24271:1;24266:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24309:62;24326:4;24341:15;;;;;;;;;;;24359:11;24309:8;:62::i;:::-;24382:15;;;;;;;;;;;:66;;;24463:11;24489:1;24505:4;24532;24552:15;24382:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24591:18;24612:21;24591:42;;24644:17;24664;24679:1;24664:10;:14;;:17;;;;:::i;:::-;24644:37;;24702:6;;;;;;;;;;;24694:24;;:35;24719:9;24694:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24748:6;;;;;;;;;;;24740:24;;:35;24765:9;24740:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24110:674;;;24055:729;:::o;16101:346::-;16196:9;16191:249;16215:9;:16;16211:1;:20;16191:249;;;16253:12;16268:9;16278:1;16268:12;;;;;;;;:::i;:::-;;;;;;;;16253:27;;16298:7;16295:134;;;16345:4;16326:10;:16;16337:4;16326:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;16295:134;;;16397:10;:16;16408:4;16397:16;;;;;;;;;;;;;;;;16390:23;;;;;;;;;;;16295:134;16238:202;16233:3;;;;;:::i;:::-;;;;16191:249;;;;16101:346;;:::o;22760:546::-;22807:22;;;;;;;;;;;22804:495;;;22850:9;22846:442;22868:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22864:1;:24;22846:442;;;22914:14;22931:13;;;;;;;;;;;:27;;;22959:1;22931:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22914:47;;22980:14;22997:9;:17;23007:6;22997:17;;;;;;;;;;;;;;;;22980:34;;23045:1;23036:6;:10;23033:193;;;23091:29;23113:6;23091:9;:17;23101:6;23091:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;23071:9;:17;23081:6;23071:17;;;;;;;;;;;;;;;:49;;;;23170:36;23199:6;23170:9;:24;23188:4;23170:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;23143:9;:24;23161:4;23143:24;;;;;;;;;;;;;;;:63;;;;23033:193;23244:13;;;;;;;;;;;:20;;;23265:6;23244:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22895:393;;22890:3;;;;;:::i;:::-;;;;22846:442;;;;22804:495;22760:546::o;1785:132::-;1843:7;1870:39;1874:1;1877;1870:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1863:46;;1785:132;;;;:::o;18102:294::-;18196:1;18177:21;;:7;:21;;;18169:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18257:18;18269:5;18257:7;;:11;;:18;;;;:::i;:::-;18247:7;:28;;;;18307:29;18330:5;18307:9;:18;18317:7;18307:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;18286:9;:18;18296:7;18286:18;;;;;;;;;;;;;;;:50;;;;18378:1;18352:36;;18361:7;18352:36;;;18382:5;18352:36;;;;;;:::i;:::-;;;;;;;;18102:294;;:::o;1306:471::-;1364:7;1614:1;1609;:6;1605:47;;1639:1;1632:8;;;;1605:47;1664:9;1680:1;1676;:5;;;;:::i;:::-;1664:17;;1709:1;1704;1700;:5;;;;:::i;:::-;:10;1692:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1768:1;1761:8;;;1306:471;;;;;:::o;962:136::-;1020:7;1047:43;1051:1;1054;1047:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1040:50;;962:136;;;;:::o;1925:278::-;2011:7;2043:1;2039;:5;2046:12;2031:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2070:9;2086:1;2082;:5;;;;:::i;:::-;2070:17;;2194:1;2187:8;;;1925:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:90::-;1383:7;1426:5;1419:13;1412:21;1401:32;;1349:90;;;:::o;1445:109::-;1526:21;1541:5;1526:21;:::i;:::-;1521:3;1514:34;1445:109;;:::o;1560:210::-;1647:4;1685:2;1674:9;1670:18;1662:26;;1698:65;1760:1;1749:9;1745:17;1736:6;1698:65;:::i;:::-;1560:210;;;;:::o;1776:75::-;1809:6;1842:2;1836:9;1826:19;;1776:75;:::o;1857:117::-;1966:1;1963;1956:12;1980:117;2089:1;2086;2079:12;2103:126;2140:7;2180:42;2173:5;2169:54;2158:65;;2103:126;;;:::o;2235:96::-;2272:7;2301:24;2319:5;2301:24;:::i;:::-;2290:35;;2235:96;;;:::o;2337:122::-;2410:24;2428:5;2410:24;:::i;:::-;2403:5;2400:35;2390:63;;2449:1;2446;2439:12;2390:63;2337:122;:::o;2465:139::-;2511:5;2549:6;2536:20;2527:29;;2565:33;2592:5;2565:33;:::i;:::-;2465:139;;;;:::o;2610:77::-;2647:7;2676:5;2665:16;;2610:77;;;:::o;2693:122::-;2766:24;2784:5;2766:24;:::i;:::-;2759:5;2756:35;2746:63;;2805:1;2802;2795:12;2746:63;2693:122;:::o;2821:139::-;2867:5;2905:6;2892:20;2883:29;;2921:33;2948:5;2921:33;:::i;:::-;2821:139;;;;:::o;2966:474::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3188:117;3344:2;3370:53;3415:7;3406:6;3395:9;3391:22;3370:53;:::i;:::-;3360:63;;3315:118;2966:474;;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:86::-;6101:7;6141:4;6134:5;6130:16;6119:27;;6066:86;;;:::o;6158:112::-;6241:22;6257:5;6241:22;:::i;:::-;6236:3;6229:35;6158:112;;:::o;6276:214::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:67;6480:1;6469:9;6465:17;6456:6;6416:67;:::i;:::-;6276:214;;;;:::o;6496:117::-;6605:1;6602;6595:12;6619:117;6728:1;6725;6718:12;6742:117;6851:1;6848;6841:12;6882:568;6955:8;6965:6;7015:3;7008:4;7000:6;6996:17;6992:27;6982:122;;7023:79;;:::i;:::-;6982:122;7136:6;7123:20;7113:30;;7166:18;7158:6;7155:30;7152:117;;;7188:79;;:::i;:::-;7152:117;7302:4;7294:6;7290:17;7278:29;;7356:3;7348:4;7340:6;7336:17;7326:8;7322:32;7319:41;7316:128;;;7363:79;;:::i;:::-;7316:128;6882:568;;;;;:::o;7456:116::-;7526:21;7541:5;7526:21;:::i;:::-;7519:5;7516:32;7506:60;;7562:1;7559;7552:12;7506:60;7456:116;:::o;7578:133::-;7621:5;7659:6;7646:20;7637:29;;7675:30;7699:5;7675:30;:::i;:::-;7578:133;;;;:::o;7717:698::-;7809:6;7817;7825;7874:2;7862:9;7853:7;7849:23;7845:32;7842:119;;;7880:79;;:::i;:::-;7842:119;8028:1;8017:9;8013:17;8000:31;8058:18;8050:6;8047:30;8044:117;;;8080:79;;:::i;:::-;8044:117;8193:80;8265:7;8256:6;8245:9;8241:22;8193:80;:::i;:::-;8175:98;;;;7971:312;8322:2;8348:50;8390:7;8381:6;8370:9;8366:22;8348:50;:::i;:::-;8338:60;;8293:115;7717:698;;;;;:::o;8421:118::-;8508:24;8526:5;8508:24;:::i;:::-;8503:3;8496:37;8421:118;;:::o;8545:222::-;8638:4;8676:2;8665:9;8661:18;8653:26;;8689:71;8757:1;8746:9;8742:17;8733:6;8689:71;:::i;:::-;8545:222;;;;:::o;8773:323::-;8829:6;8878:2;8866:9;8857:7;8853:23;8849:32;8846:119;;;8884:79;;:::i;:::-;8846:119;9004:1;9029:50;9071:7;9062:6;9051:9;9047:22;9029:50;:::i;:::-;9019:60;;8975:114;8773:323;;;;:::o;9102:474::-;9170:6;9178;9227:2;9215:9;9206:7;9202:23;9198:32;9195:119;;;9233:79;;:::i;:::-;9195:119;9353:1;9378:53;9423:7;9414:6;9403:9;9399:22;9378:53;:::i;:::-;9368:63;;9324:117;9480:2;9506:53;9551:7;9542:6;9531:9;9527:22;9506:53;:::i;:::-;9496:63;;9451:118;9102:474;;;;;:::o;9582:180::-;9630:77;9627:1;9620:88;9727:4;9724:1;9717:15;9751:4;9748:1;9741:15;9768:281;9851:27;9873:4;9851:27;:::i;:::-;9843:6;9839:40;9981:6;9969:10;9966:22;9945:18;9933:10;9930:34;9927:62;9924:88;;;9992:18;;:::i;:::-;9924:88;10032:10;10028:2;10021:22;9811:238;9768:281;;:::o;10055:129::-;10089:6;10116:20;;:::i;:::-;10106:30;;10145:33;10173:4;10165:6;10145:33;:::i;:::-;10055:129;;;:::o;10190:311::-;10267:4;10357:18;10349:6;10346:30;10343:56;;;10379:18;;:::i;:::-;10343:56;10429:4;10421:6;10417:17;10409:25;;10489:4;10483;10479:15;10471:23;;10190:311;;;:::o;10524:710::-;10620:5;10645:81;10661:64;10718:6;10661:64;:::i;:::-;10645:81;:::i;:::-;10636:90;;10746:5;10775:6;10768:5;10761:21;10809:4;10802:5;10798:16;10791:23;;10862:4;10854:6;10850:17;10842:6;10838:30;10891:3;10883:6;10880:15;10877:122;;;10910:79;;:::i;:::-;10877:122;11025:6;11008:220;11042:6;11037:3;11034:15;11008:220;;;11117:3;11146:37;11179:3;11167:10;11146:37;:::i;:::-;11141:3;11134:50;11213:4;11208:3;11204:14;11197:21;;11084:144;11068:4;11063:3;11059:14;11052:21;;11008:220;;;11012:21;10626:608;;10524:710;;;;;:::o;11257:370::-;11328:5;11377:3;11370:4;11362:6;11358:17;11354:27;11344:122;;11385:79;;:::i;:::-;11344:122;11502:6;11489:20;11527:94;11617:3;11609:6;11602:4;11594:6;11590:17;11527:94;:::i;:::-;11518:103;;11334:293;11257:370;;;;:::o;11633:539::-;11717:6;11766:2;11754:9;11745:7;11741:23;11737:32;11734:119;;;11772:79;;:::i;:::-;11734:119;11920:1;11909:9;11905:17;11892:31;11950:18;11942:6;11939:30;11936:117;;;11972:79;;:::i;:::-;11936:117;12077:78;12147:7;12138:6;12127:9;12123:22;12077:78;:::i;:::-;12067:88;;11863:302;11633:539;;;;:::o;12178:474::-;12246:6;12254;12303:2;12291:9;12282:7;12278:23;12274:32;12271:119;;;12309:79;;:::i;:::-;12271:119;12429:1;12454:53;12499:7;12490:6;12479:9;12475:22;12454:53;:::i;:::-;12444:63;;12400:117;12556:2;12582:53;12627:7;12618:6;12607:9;12603:22;12582:53;:::i;:::-;12572:63;;12527:118;12178:474;;;;;:::o;12658:173::-;12798:25;12794:1;12786:6;12782:14;12775:49;12658:173;:::o;12837:366::-;12979:3;13000:67;13064:2;13059:3;13000:67;:::i;:::-;12993:74;;13076:93;13165:3;13076:93;:::i;:::-;13194:2;13189:3;13185:12;13178:19;;12837:366;;;:::o;13209:419::-;13375:4;13413:2;13402:9;13398:18;13390:26;;13462:9;13456:4;13452:20;13448:1;13437:9;13433:17;13426:47;13490:131;13616:4;13490:131;:::i;:::-;13482:139;;13209:419;;;:::o;13634:180::-;13682:77;13679:1;13672:88;13779:4;13776:1;13769:15;13803:4;13800:1;13793:15;13820:320;13864:6;13901:1;13895:4;13891:12;13881:22;;13948:1;13942:4;13938:12;13969:18;13959:81;;14025:4;14017:6;14013:17;14003:27;;13959:81;14087:2;14079:6;14076:14;14056:18;14053:38;14050:84;;14106:18;;:::i;:::-;14050:84;13871:269;13820:320;;;:::o;14146:228::-;14286:34;14282:1;14274:6;14270:14;14263:58;14355:11;14350:2;14342:6;14338:15;14331:36;14146:228;:::o;14380:366::-;14522:3;14543:67;14607:2;14602:3;14543:67;:::i;:::-;14536:74;;14619:93;14708:3;14619:93;:::i;:::-;14737:2;14732:3;14728:12;14721:19;;14380:366;;;:::o;14752:419::-;14918:4;14956:2;14945:9;14941:18;14933:26;;15005:9;14999:4;14995:20;14991:1;14980:9;14976:17;14969:47;15033:131;15159:4;15033:131;:::i;:::-;15025:139;;14752:419;;;:::o;15177:223::-;15317:34;15313:1;15305:6;15301:14;15294:58;15386:6;15381:2;15373:6;15369:15;15362:31;15177:223;:::o;15406:366::-;15548:3;15569:67;15633:2;15628:3;15569:67;:::i;:::-;15562:74;;15645:93;15734:3;15645:93;:::i;:::-;15763:2;15758:3;15754:12;15747:19;;15406:366;;;:::o;15778:419::-;15944:4;15982:2;15971:9;15967:18;15959:26;;16031:9;16025:4;16021:20;16017:1;16006:9;16002:17;15995:47;16059:131;16185:4;16059:131;:::i;:::-;16051:139;;15778:419;;;:::o;16203:143::-;16260:5;16291:6;16285:13;16276:22;;16307:33;16334:5;16307:33;:::i;:::-;16203:143;;;;:::o;16352:351::-;16422:6;16471:2;16459:9;16450:7;16446:23;16442:32;16439:119;;;16477:79;;:::i;:::-;16439:119;16597:1;16622:64;16678:7;16669:6;16658:9;16654:22;16622:64;:::i;:::-;16612:74;;16568:128;16352:351;;;;:::o;16709:332::-;16830:4;16868:2;16857:9;16853:18;16845:26;;16881:71;16949:1;16938:9;16934:17;16925:6;16881:71;:::i;:::-;16962:72;17030:2;17019:9;17015:18;17006:6;16962:72;:::i;:::-;16709:332;;;;;:::o;17047:137::-;17101:5;17132:6;17126:13;17117:22;;17148:30;17172:5;17148:30;:::i;:::-;17047:137;;;;:::o;17190:345::-;17257:6;17306:2;17294:9;17285:7;17281:23;17277:32;17274:119;;;17312:79;;:::i;:::-;17274:119;17432:1;17457:61;17510:7;17501:6;17490:9;17486:22;17457:61;:::i;:::-;17447:71;;17403:125;17190:345;;;;:::o;17541:182::-;17681:34;17677:1;17669:6;17665:14;17658:58;17541:182;:::o;17729:366::-;17871:3;17892:67;17956:2;17951:3;17892:67;:::i;:::-;17885:74;;17968:93;18057:3;17968:93;:::i;:::-;18086:2;18081:3;18077:12;18070:19;;17729:366;;;:::o;18101:419::-;18267:4;18305:2;18294:9;18290:18;18282:26;;18354:9;18348:4;18344:20;18340:1;18329:9;18325:17;18318:47;18382:131;18508:4;18382:131;:::i;:::-;18374:139;;18101:419;;;:::o;18526:180::-;18574:77;18571:1;18564:88;18671:4;18668:1;18661:15;18695:4;18692:1;18685:15;18712:410;18752:7;18775:20;18793:1;18775:20;:::i;:::-;18770:25;;18809:20;18827:1;18809:20;:::i;:::-;18804:25;;18864:1;18861;18857:9;18886:30;18904:11;18886:30;:::i;:::-;18875:41;;19065:1;19056:7;19052:15;19049:1;19046:22;19026:1;19019:9;18999:83;18976:139;;19095:18;;:::i;:::-;18976:139;18760:362;18712:410;;;;:::o;19128:143::-;19185:5;19216:6;19210:13;19201:22;;19232:33;19259:5;19232:33;:::i;:::-;19128:143;;;;:::o;19277:351::-;19347:6;19396:2;19384:9;19375:7;19371:23;19367:32;19364:119;;;19402:79;;:::i;:::-;19364:119;19522:1;19547:64;19603:7;19594:6;19583:9;19579:22;19547:64;:::i;:::-;19537:74;;19493:128;19277:351;;;;:::o;19634:180::-;19682:77;19679:1;19672:88;19779:4;19776:1;19769:15;19803:4;19800:1;19793:15;19820:114;19887:6;19921:5;19915:12;19905:22;;19820:114;;;:::o;19940:184::-;20039:11;20073:6;20068:3;20061:19;20113:4;20108:3;20104:14;20089:29;;19940:184;;;;:::o;20130:132::-;20197:4;20220:3;20212:11;;20250:4;20245:3;20241:14;20233:22;;20130:132;;;:::o;20268:108::-;20345:24;20363:5;20345:24;:::i;:::-;20340:3;20333:37;20268:108;;:::o;20382:179::-;20451:10;20472:46;20514:3;20506:6;20472:46;:::i;:::-;20550:4;20545:3;20541:14;20527:28;;20382:179;;;;:::o;20567:113::-;20637:4;20669;20664:3;20660:14;20652:22;;20567:113;;;:::o;20716:732::-;20835:3;20864:54;20912:5;20864:54;:::i;:::-;20934:86;21013:6;21008:3;20934:86;:::i;:::-;20927:93;;21044:56;21094:5;21044:56;:::i;:::-;21123:7;21154:1;21139:284;21164:6;21161:1;21158:13;21139:284;;;21240:6;21234:13;21267:63;21326:3;21311:13;21267:63;:::i;:::-;21260:70;;21353:60;21406:6;21353:60;:::i;:::-;21343:70;;21199:224;21186:1;21183;21179:9;21174:14;;21139:284;;;21143:14;21439:3;21432:10;;20840:608;;;20716:732;;;;:::o;21454:483::-;21625:4;21663:2;21652:9;21648:18;21640:26;;21676:71;21744:1;21733:9;21729:17;21720:6;21676:71;:::i;:::-;21794:9;21788:4;21784:20;21779:2;21768:9;21764:18;21757:48;21822:108;21925:4;21916:6;21822:108;:::i;:::-;21814:116;;21454:483;;;;;:::o;21943:311::-;22020:4;22110:18;22102:6;22099:30;22096:56;;;22132:18;;:::i;:::-;22096:56;22182:4;22174:6;22170:17;22162:25;;22242:4;22236;22232:15;22224:23;;21943:311;;;:::o;22277:732::-;22384:5;22409:81;22425:64;22482:6;22425:64;:::i;:::-;22409:81;:::i;:::-;22400:90;;22510:5;22539:6;22532:5;22525:21;22573:4;22566:5;22562:16;22555:23;;22626:4;22618:6;22614:17;22606:6;22602:30;22655:3;22647:6;22644:15;22641:122;;;22674:79;;:::i;:::-;22641:122;22789:6;22772:231;22806:6;22801:3;22798:15;22772:231;;;22881:3;22910:48;22954:3;22942:10;22910:48;:::i;:::-;22905:3;22898:61;22988:4;22983:3;22979:14;22972:21;;22848:155;22832:4;22827:3;22823:14;22816:21;;22772:231;;;22776:21;22390:619;;22277:732;;;;;:::o;23032:385::-;23114:5;23163:3;23156:4;23148:6;23144:17;23140:27;23130:122;;23171:79;;:::i;:::-;23130:122;23281:6;23275:13;23306:105;23407:3;23399:6;23392:4;23384:6;23380:17;23306:105;:::i;:::-;23297:114;;23120:297;23032:385;;;;:::o;23423:554::-;23518:6;23567:2;23555:9;23546:7;23542:23;23538:32;23535:119;;;23573:79;;:::i;:::-;23535:119;23714:1;23703:9;23699:17;23693:24;23744:18;23736:6;23733:30;23730:117;;;23766:79;;:::i;:::-;23730:117;23871:89;23952:7;23943:6;23932:9;23928:22;23871:89;:::i;:::-;23861:99;;23664:306;23423:554;;;;:::o;23983:221::-;24123:34;24119:1;24111:6;24107:14;24100:58;24192:4;24187:2;24179:6;24175:15;24168:29;23983:221;:::o;24210:366::-;24352:3;24373:67;24437:2;24432:3;24373:67;:::i;:::-;24366:74;;24449:93;24538:3;24449:93;:::i;:::-;24567:2;24562:3;24558:12;24551:19;;24210:366;;;:::o;24582:419::-;24748:4;24786:2;24775:9;24771:18;24763:26;;24835:9;24829:4;24825:20;24821:1;24810:9;24806:17;24799:47;24863:131;24989:4;24863:131;:::i;:::-;24855:139;;24582:419;;;:::o;25007:332::-;25128:4;25166:2;25155:9;25151:18;25143:26;;25179:71;25247:1;25236:9;25232:17;25223:6;25179:71;:::i;:::-;25260:72;25328:2;25317:9;25313:18;25304:6;25260:72;:::i;:::-;25007:332;;;;;:::o;25345:85::-;25390:7;25419:5;25408:16;;25345:85;;;:::o;25436:158::-;25494:9;25527:61;25545:42;25554:32;25580:5;25554:32;:::i;:::-;25545:42;:::i;:::-;25527:61;:::i;:::-;25514:74;;25436:158;;;:::o;25600:147::-;25695:45;25734:5;25695:45;:::i;:::-;25690:3;25683:58;25600:147;;:::o;25753:807::-;26002:4;26040:3;26029:9;26025:19;26017:27;;26054:71;26122:1;26111:9;26107:17;26098:6;26054:71;:::i;:::-;26135:72;26203:2;26192:9;26188:18;26179:6;26135:72;:::i;:::-;26217:80;26293:2;26282:9;26278:18;26269:6;26217:80;:::i;:::-;26307;26383:2;26372:9;26368:18;26359:6;26307:80;:::i;:::-;26397:73;26465:3;26454:9;26450:19;26441:6;26397:73;:::i;:::-;26480;26548:3;26537:9;26533:19;26524:6;26480:73;:::i;:::-;25753:807;;;;;;;;;:::o;26566:663::-;26654:6;26662;26670;26719:2;26707:9;26698:7;26694:23;26690:32;26687:119;;;26725:79;;:::i;:::-;26687:119;26845:1;26870:64;26926:7;26917:6;26906:9;26902:22;26870:64;:::i;:::-;26860:74;;26816:128;26983:2;27009:64;27065:7;27056:6;27045:9;27041:22;27009:64;:::i;:::-;26999:74;;26954:129;27122:2;27148:64;27204:7;27195:6;27184:9;27180:22;27148:64;:::i;:::-;27138:74;;27093:129;26566:663;;;;;:::o;27235:233::-;27274:3;27297:24;27315:5;27297:24;:::i;:::-;27288:33;;27343:66;27336:5;27333:77;27330:103;;27413:18;;:::i;:::-;27330:103;27460:1;27453:5;27449:13;27442:20;;27235:233;;;:::o;27474:224::-;27614:34;27610:1;27602:6;27598:14;27591:58;27683:7;27678:2;27670:6;27666:15;27659:32;27474:224;:::o;27704:366::-;27846:3;27867:67;27931:2;27926:3;27867:67;:::i;:::-;27860:74;;27943:93;28032:3;27943:93;:::i;:::-;28061:2;28056:3;28052:12;28045:19;;27704:366;;;:::o;28076:419::-;28242:4;28280:2;28269:9;28265:18;28257:26;;28329:9;28323:4;28319:20;28315:1;28304:9;28300:17;28293:47;28357:131;28483:4;28357:131;:::i;:::-;28349:139;;28076:419;;;:::o;28501:225::-;28641:34;28637:1;28629:6;28625:14;28618:58;28710:8;28705:2;28697:6;28693:15;28686:33;28501:225;:::o;28732:366::-;28874:3;28895:67;28959:2;28954:3;28895:67;:::i;:::-;28888:74;;28971:93;29060:3;28971:93;:::i;:::-;29089:2;29084:3;29080:12;29073:19;;28732:366;;;:::o;29104:419::-;29270:4;29308:2;29297:9;29293:18;29285:26;;29357:9;29351:4;29347:20;29343:1;29332:9;29328:17;29321:47;29385:131;29511:4;29385:131;:::i;:::-;29377:139;;29104:419;;;:::o;29529:332::-;29650:4;29688:2;29677:9;29673:18;29665:26;;29701:71;29769:1;29758:9;29754:17;29745:6;29701:71;:::i;:::-;29782:72;29850:2;29839:9;29835:18;29826:6;29782:72;:::i;:::-;29529:332;;;;;:::o;29867:223::-;30007:34;30003:1;29995:6;29991:14;29984:58;30076:6;30071:2;30063:6;30059:15;30052:31;29867:223;:::o;30096:366::-;30238:3;30259:67;30323:2;30318:3;30259:67;:::i;:::-;30252:74;;30335:93;30424:3;30335:93;:::i;:::-;30453:2;30448:3;30444:12;30437:19;;30096:366;;;:::o;30468:419::-;30634:4;30672:2;30661:9;30657:18;30649:26;;30721:9;30715:4;30711:20;30707:1;30696:9;30692:17;30685:47;30749:131;30875:4;30749:131;:::i;:::-;30741:139;;30468:419;;;:::o;30893:221::-;31033:34;31029:1;31021:6;31017:14;31010:58;31102:4;31097:2;31089:6;31085:15;31078:29;30893:221;:::o;31120:366::-;31262:3;31283:67;31347:2;31342:3;31283:67;:::i;:::-;31276:74;;31359:93;31448:3;31359:93;:::i;:::-;31477:2;31472:3;31468:12;31461:19;;31120:366;;;:::o;31492:419::-;31658:4;31696:2;31685:9;31681:18;31673:26;;31745:9;31739:4;31735:20;31731:1;31720:9;31716:17;31709:47;31773:131;31899:4;31773:131;:::i;:::-;31765:139;;31492:419;;;:::o;31917:224::-;32057:34;32053:1;32045:6;32041:14;32034:58;32126:7;32121:2;32113:6;32109:15;32102:32;31917:224;:::o;32147:366::-;32289:3;32310:67;32374:2;32369:3;32310:67;:::i;:::-;32303:74;;32386:93;32475:3;32386:93;:::i;:::-;32504:2;32499:3;32495:12;32488:19;;32147:366;;;:::o;32519:419::-;32685:4;32723:2;32712:9;32708:18;32700:26;;32772:9;32766:4;32762:20;32758:1;32747:9;32743:17;32736:47;32800:131;32926:4;32800:131;:::i;:::-;32792:139;;32519:419;;;:::o;32944:222::-;33084:34;33080:1;33072:6;33068:14;33061:58;33153:5;33148:2;33140:6;33136:15;33129:30;32944:222;:::o;33172:366::-;33314:3;33335:67;33399:2;33394:3;33335:67;:::i;:::-;33328:74;;33411:93;33500:3;33411:93;:::i;:::-;33529:2;33524:3;33520:12;33513:19;;33172:366;;;:::o;33544:419::-;33710:4;33748:2;33737:9;33733:18;33725:26;;33797:9;33791:4;33787:20;33783:1;33772:9;33768:17;33761:47;33825:131;33951:4;33825:131;:::i;:::-;33817:139;;33544:419;;;:::o;33969:228::-;34109:34;34105:1;34097:6;34093:14;34086:58;34178:11;34173:2;34165:6;34161:15;34154:36;33969:228;:::o;34203:366::-;34345:3;34366:67;34430:2;34425:3;34366:67;:::i;:::-;34359:74;;34442:93;34531:3;34442:93;:::i;:::-;34560:2;34555:3;34551:12;34544:19;;34203:366;;;:::o;34575:419::-;34741:4;34779:2;34768:9;34764:18;34756:26;;34828:9;34822:4;34818:20;34814:1;34803:9;34799:17;34792:47;34856:131;34982:4;34856:131;:::i;:::-;34848:139;;34575:419;;;:::o;35000:224::-;35140:34;35136:1;35128:6;35124:14;35117:58;35209:7;35204:2;35196:6;35192:15;35185:32;35000:224;:::o;35230:366::-;35372:3;35393:67;35457:2;35452:3;35393:67;:::i;:::-;35386:74;;35469:93;35558:3;35469:93;:::i;:::-;35587:2;35582:3;35578:12;35571:19;;35230:366;;;:::o;35602:419::-;35768:4;35806:2;35795:9;35791:18;35783:26;;35855:9;35849:4;35845:20;35841:1;35830:9;35826:17;35819:47;35883:131;36009:4;35883:131;:::i;:::-;35875:139;;35602:419;;;:::o;36027:222::-;36167:34;36163:1;36155:6;36151:14;36144:58;36236:5;36231:2;36223:6;36219:15;36212:30;36027:222;:::o;36255:366::-;36397:3;36418:67;36482:2;36477:3;36418:67;:::i;:::-;36411:74;;36494:93;36583:3;36494:93;:::i;:::-;36612:2;36607:3;36603:12;36596:19;;36255:366;;;:::o;36627:419::-;36793:4;36831:2;36820:9;36816:18;36808:26;;36880:9;36874:4;36870:20;36866:1;36855:9;36851:17;36844:47;36908:131;37034:4;36908:131;:::i;:::-;36900:139;;36627:419;;;:::o;37052:226::-;37192:34;37188:1;37180:6;37176:14;37169:58;37261:9;37256:2;37248:6;37244:15;37237:34;37052:226;:::o;37284:366::-;37426:3;37447:67;37511:2;37506:3;37447:67;:::i;:::-;37440:74;;37523:93;37612:3;37523:93;:::i;:::-;37641:2;37636:3;37632:12;37625:19;;37284:366;;;:::o;37656:419::-;37822:4;37860:2;37849:9;37845:18;37837:26;;37909:9;37903:4;37899:20;37895:1;37884:9;37880:17;37873:47;37937:131;38063:4;37937:131;:::i;:::-;37929:139;;37656:419;;;:::o;38081:194::-;38121:4;38141:20;38159:1;38141:20;:::i;:::-;38136:25;;38175:20;38193:1;38175:20;:::i;:::-;38170:25;;38219:1;38216;38212:9;38204:17;;38243:1;38237:4;38234:11;38231:37;;;38248:18;;:::i;:::-;38231:37;38081:194;;;;:::o;38281:191::-;38321:3;38340:20;38358:1;38340:20;:::i;:::-;38335:25;;38374:20;38392:1;38374:20;:::i;:::-;38369:25;;38417:1;38414;38410:9;38403:16;;38438:3;38435:1;38432:10;38429:36;;;38445:18;;:::i;:::-;38429:36;38281:191;;;;:::o;38478:177::-;38618:29;38614:1;38606:6;38602:14;38595:53;38478:177;:::o;38661:366::-;38803:3;38824:67;38888:2;38883:3;38824:67;:::i;:::-;38817:74;;38900:93;38989:3;38900:93;:::i;:::-;39018:2;39013:3;39009:12;39002:19;;38661:366;;;:::o;39033:419::-;39199:4;39237:2;39226:9;39222:18;39214:26;;39286:9;39280:4;39276:20;39272:1;39261:9;39257:17;39250:47;39314:131;39440:4;39314:131;:::i;:::-;39306:139;;39033:419;;;:::o;39458:831::-;39721:4;39759:3;39748:9;39744:19;39736:27;;39773:71;39841:1;39830:9;39826:17;39817:6;39773:71;:::i;:::-;39854:80;39930:2;39919:9;39915:18;39906:6;39854:80;:::i;:::-;39981:9;39975:4;39971:20;39966:2;39955:9;39951:18;39944:48;40009:108;40112:4;40103:6;40009:108;:::i;:::-;40001:116;;40127:72;40195:2;40184:9;40180:18;40171:6;40127:72;:::i;:::-;40209:73;40277:3;40266:9;40262:19;40253:6;40209:73;:::i;:::-;39458:831;;;;;;;;:::o;40295:220::-;40435:34;40431:1;40423:6;40419:14;40412:58;40504:3;40499:2;40491:6;40487:15;40480:28;40295:220;:::o;40521:366::-;40663:3;40684:67;40748:2;40743:3;40684:67;:::i;:::-;40677:74;;40760:93;40849:3;40760:93;:::i;:::-;40878:2;40873:3;40869:12;40862:19;;40521:366;;;:::o;40893:419::-;41059:4;41097:2;41086:9;41082:18;41074:26;;41146:9;41140:4;41136:20;41132:1;41121:9;41117:17;41110:47;41174:131;41300:4;41174:131;:::i;:::-;41166:139;;40893:419;;;:::o;41318:180::-;41366:77;41363:1;41356:88;41463:4;41460:1;41453:15;41487:4;41484:1;41477:15;41504:185;41544:1;41561:20;41579:1;41561:20;:::i;:::-;41556:25;;41595:20;41613:1;41595:20;:::i;:::-;41590:25;;41634:1;41624:35;;41639:18;;:::i;:::-;41624:35;41681:1;41678;41674:9;41669:14;;41504:185;;;;:::o;41695:220::-;41835:34;41831:1;41823:6;41819:14;41812:58;41904:3;41899:2;41891:6;41887:15;41880:28;41695:220;:::o;41921:366::-;42063:3;42084:67;42148:2;42143:3;42084:67;:::i;:::-;42077:74;;42160:93;42249:3;42160:93;:::i;:::-;42278:2;42273:3;42269:12;42262:19;;41921:366;;;:::o;42293:419::-;42459:4;42497:2;42486:9;42482:18;42474:26;;42546:9;42540:4;42536:20;42532:1;42521:9;42517:17;42510:47;42574:131;42700:4;42574:131;:::i;:::-;42566:139;;42293:419;;;:::o

Swarm Source

ipfs://97ec48e7b5aa38fc0588dbefcbb2c294a8aacebcb49b2ea9a79d02743aa43088
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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