BNB Price: $614.89 (+2.97%)
 

Overview

Max Total Supply

100,000,000NIFI

Holders

1,149 (0.00%)

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
11,121 NIFI

Value
$0.00
0x063789e9daceae44996d1326a581611e19c20a77
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Ninja Fusion is a thoughtfully planned community-made BEP20 Token, made to prevent the aforementioned factors from becoming the usual trace of circumstances that leads to price declines. NIFI is backed by its own real-time automatic prevention algorithm.


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
NinjaFusionCore

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2025-06-24
*/

/**
  Token Name : Ninja Fusion
  Website : https://nifi.ninjaswap.fi/
  Telegram : https://t.me/ninjaswap_fi
  Twitter : https://x.com/ninjaswap_fi
 * 
 
 */


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

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

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

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

abstract contract Ownable is Context {
    address private _owner;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
    }
    
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    
    function owner() public view virtual returns (address) {
        return _owner;
    }
    
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
    
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    
    constructor() {
        _status = _NOT_ENTERED;
    }
    
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

abstract contract Pausable is Context {
    event Paused(address account);
    event Unpaused(address account);
    
    bool private _paused;
    
    constructor() {
        _paused = false;
    }
    
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }
    
    modifier whenPaused() {
        _requirePaused();
        _;
    }
    
    function paused() public view virtual returns (bool) {
        return _paused;
    }
    
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }
    
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }
    
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }
    
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

contract NinjaFusionCore is IERC20, IERC20Metadata, Ownable, ReentrancyGuard, Pausable {
    // Token details
    string private constant _name = "Ninja Fusion";
    string private constant _symbol = "NIFI";
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 100_000_000 * 10**_decimals;
    
    // ============================================================================= 
    // ADMIN SYSTEM - Critical for post-ownership management
    // =============================================================================
    address private _admin;
    bool private _adminEnabled = true;
    
    // Mappings
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isBlacklisted;
    mapping(address => bool) private _authorizedModules;
    
    // Fee system (max 10% hard limit)
    uint256 public constant MAX_FEE = 1000; // 10% in basis points
    uint256 public taxFeePercent = 0;     // 0% tax fee
    uint256 public liquidityFeePercent = 0; // 0% liquidity fee
    
    // Limits
    uint256 public maxTxAmount = 1_000_000 * 10**_decimals;    // 1M tokens
    uint256 public maxWalletAmount = 2_000_000 * 10**_decimals; // 2M tokens
    
    // Anti-bot protection
    bool private _antiBotActive = true;
    uint256 private _launchTime;
    uint256 private constant ANTI_BOT_DURATION = 300; // 5 minutes
    mapping(address => uint256) private _lastTransactionTime;
    uint256 private constant TRANSACTION_COOLDOWN = 30; // 30 seconds
    
    // Swap and liquify
    bool public swapAndLiquifyEnabled = false;
    bool private _inSwapAndLiquify;
    uint256 public swapTokensAtAmount = 500_000 * 10**_decimals; // 0.5M tokens
    
    // Events
    event AdminChanged(address indexed previousAdmin, address indexed newAdmin);
    event AdminStatusChanged(bool enabled);
    event ModuleAuthorized(address indexed module, bool authorized);
    event FeesUpdated(uint256 taxFee, uint256 liquidityFee);
    event LimitsUpdated(uint256 maxTx, uint256 maxWallet);
    event BlacklistUpdated(address indexed account, bool isBlacklisted);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event AntiBotStatusChanged(bool active);
    event EmergencyWithdraw(address indexed token, uint256 amount);
    
    // Modifiers
    modifier onlyOwnerOrAdmin() {
        require(
            _msgSender() == owner() || 
            (_adminEnabled && _msgSender() == _admin), 
            "Caller is not owner or admin"
        );
        _;
    }
    
    modifier onlyAuthorizedModule() {
        require(_authorizedModules[_msgSender()], "Not authorized module");
        _;
    }
    
    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }
    
    constructor() Ownable(_msgSender()) {
        _launchTime = block.timestamp;
        _admin = _msgSender(); // Set deployer as initial admin
        
        _balances[_msgSender()] = _totalSupply;
        
        // Exclude owner and contract from fees
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_admin] = true;
        
        emit Transfer(address(0), _msgSender(), _totalSupply);
        emit AdminChanged(address(0), _admin);
    }

    // =============================================================================
    // ADMIN FUNCTIONS (Available even after ownership renouncement)
    // =============================================================================
    
    /**
     * @dev Set new admin address - Critical function
     * @param newAdmin Address of the new admin
     */
    function setAdmin(address newAdmin) external onlyOwnerOrAdmin {
        require(newAdmin != address(0), "Admin cannot be zero address");
        address previousAdmin = _admin;
        _admin = newAdmin;
        
        // Update fee exclusions
        _isExcludedFromFees[previousAdmin] = false;
        _isExcludedFromFees[newAdmin] = true;
        
        emit AdminChanged(previousAdmin, newAdmin);
    }
    
    /**
     * @dev Enable/disable admin system
     * @param enabled Whether admin system should be active
     */
    function setAdminEnabled(bool enabled) external onlyOwnerOrAdmin {
        _adminEnabled = enabled;
        emit AdminStatusChanged(enabled);
    }
    
    /**
     * @dev Authorize/deauthorize modules - ADMIN ONLY
     * @param module Address of the module
     * @param authorized Whether module is authorized
     */
    function authorizeModule(address module, bool authorized) external onlyOwnerOrAdmin {
        require(module != address(0), "Module cannot be zero address");
        _authorizedModules[module] = authorized;
        emit ModuleAuthorized(module, authorized);
    }
    
    /**
     * @dev Bulk authorize modules - ADMIN ONLY
     * @param modules Array of module addresses
     * @param authorized Whether modules are authorized
     */
    function bulkAuthorizeModules(address[] calldata modules, bool authorized) external onlyOwnerOrAdmin {
        for (uint256 i = 0; i < modules.length; i++) {
            require(modules[i] != address(0), "Module cannot be zero address");
            _authorizedModules[modules[i]] = authorized;
            emit ModuleAuthorized(modules[i], authorized);
        }
    }
    
    /**
     * @dev Set fees with 10% hard limit - ADMIN ONLY
     * @param _taxFee Tax fee in basis points (max 1000 = 10%)
     * @param _liquidityFee Liquidity fee in basis points (max 1000 = 10%)
     */
    function setFees(uint256 _taxFee, uint256 _liquidityFee) external onlyOwnerOrAdmin {
        require(_taxFee <= MAX_FEE, "Tax fee exceeds maximum");
        require(_liquidityFee <= MAX_FEE, "Liquidity fee exceeds maximum");
        require(_taxFee + _liquidityFee <= MAX_FEE, "Total fees exceed maximum");
        
        taxFeePercent = _taxFee;
        liquidityFeePercent = _liquidityFee;
        emit FeesUpdated(_taxFee, _liquidityFee);
    }
    
    /**
     * @dev Set all fees to 0% - ADMIN ONLY
     */
    function disableAllFees() external onlyOwnerOrAdmin {
        taxFeePercent = 0;
        liquidityFeePercent = 0;
        emit FeesUpdated(0, 0);
    }
    
    /**
     * @dev Update transaction and wallet limits - ADMIN ONLY
     * @param _maxTxAmount Maximum transaction amount
     * @param _maxWalletAmount Maximum wallet amount
     */
    function setLimits(uint256 _maxTxAmount, uint256 _maxWalletAmount) external onlyOwnerOrAdmin {
        require(_maxTxAmount >= _totalSupply / 1000, "Max tx too low"); // Minimum 0.1%
        require(_maxWalletAmount >= _totalSupply / 100, "Max wallet too low"); // Minimum 1%
        
        maxTxAmount = _maxTxAmount;
        maxWalletAmount = _maxWalletAmount;
        emit LimitsUpdated(_maxTxAmount, _maxWalletAmount);
    }
    
    /**
     * @dev Remove all limits - ADMIN ONLY
     */
    function removeLimits() external onlyOwnerOrAdmin {
        maxTxAmount = _totalSupply;
        maxWalletAmount = _totalSupply;
        emit LimitsUpdated(_totalSupply, _totalSupply);
    }
    
    /**
     * @dev Blacklist/unblacklist addresses - ADMIN ONLY
     * @param account Address to blacklist/unblacklist
     * @param blacklisted Whether address should be blacklisted
     */
    function setBlacklist(address account, bool blacklisted) external onlyOwnerOrAdmin {
        require(account != owner() && account != _admin, "Cannot blacklist owner or admin");
        _isBlacklisted[account] = blacklisted;
        emit BlacklistUpdated(account, blacklisted);
    }
    
    /**
     * @dev Bulk blacklist - ADMIN ONLY
     * @param accounts Array of addresses to blacklist/unblacklist
     * @param blacklisted Whether addresses should be blacklisted
     */
    function bulkBlacklist(address[] calldata accounts, bool blacklisted) external onlyOwnerOrAdmin {
        for (uint256 i = 0; i < accounts.length; i++) {
            require(accounts[i] != owner() && accounts[i] != _admin, "Cannot blacklist owner or admin");
            _isBlacklisted[accounts[i]] = blacklisted;
            emit BlacklistUpdated(accounts[i], blacklisted);
        }
    }
    
    /**
     * @dev Set fee exclusions - ADMIN ONLY
     * @param account Address to exclude/include
     * @param excluded Whether address should be excluded from fees
     */
    function setFeeExclusion(address account, bool excluded) external onlyOwnerOrAdmin {
        _isExcludedFromFees[account] = excluded;
    }
    
    /**
     * @dev Pause contract - ADMIN ONLY
     */
    function pause() external onlyOwnerOrAdmin {
        _pause();
    }
    
    /**
     * @dev Unpause contract - ADMIN ONLY
     */
    function unpause() external onlyOwnerOrAdmin {
        _unpause();
    }
    
    /**
     * @dev Toggle anti-bot protection - ADMIN ONLY
     * @param active Whether anti-bot should be active
     */
    function setAntiBotActive(bool active) external onlyOwnerOrAdmin {
        _antiBotActive = active;
        emit AntiBotStatusChanged(active);
    }
    
    /**
     * @dev Enable/disable swap and liquify - ADMIN ONLY
     * @param enabled Whether swap and liquify should be enabled
     */
    function setSwapAndLiquifyEnabled(bool enabled) external onlyOwnerOrAdmin {
        swapAndLiquifyEnabled = enabled;
        emit SwapAndLiquifyEnabledUpdated(enabled);
    }
    
    /**
     * @dev Set swap threshold - ADMIN ONLY
     * @param amount Threshold amount for swapping
     */
    function setSwapTokensAtAmount(uint256 amount) external onlyOwnerOrAdmin {
        require(amount >= _totalSupply / 100000, "Amount too small"); // Minimum 0.001%
        require(amount <= _totalSupply / 100, "Amount too large"); // Maximum 1%
        swapTokensAtAmount = amount;
    }
    
    /**
     * @dev Emergency withdraw any ERC20 tokens - ADMIN ONLY
     * @param token Token address to withdraw
     * @param amount Amount to withdraw
     */
    function emergencyWithdrawToken(address token, uint256 amount) external onlyOwnerOrAdmin {
        require(token != address(this), "Cannot withdraw own tokens");
        IERC20(token).transfer(_admin, amount);
        emit EmergencyWithdraw(token, amount);
    }
    
    /**
     * @dev Emergency withdraw BNB - ADMIN ONLY
     */
    function emergencyWithdrawBNB() external onlyOwnerOrAdmin {
        uint256 balance = address(this).balance;
        require(balance > 0, "No BNB to withdraw");
        payable(_admin).transfer(balance);
        emit EmergencyWithdraw(address(0), balance);
    }

    // =============================================================================
    // MODULE FUNCTIONS (Only authorized modules can call)
    // =============================================================================
    
    /**
     * @dev Transfer tokens from one address to another (module only)
     * @param from Address to transfer from
     * @param to Address to transfer to
     * @param amount Amount to transfer
     */
    function moduleTransfer(address from, address to, uint256 amount) external onlyAuthorizedModule returns (bool) {
        _transfer(from, to, amount);
        return true;
    }
    
    /**
     * @dev Mint tokens to address (module only)
     * @param to Address to mint to
     * @param amount Amount to mint
     */
    function moduleMint(address to, uint256 amount) external onlyAuthorizedModule {
        _mint(to, amount);
    }
    
    /**
     * @dev Burn tokens from address (module only)
     * @param from Address to burn from
     * @param amount Amount to burn
     */
    function moduleBurn(address from, uint256 amount) external onlyAuthorizedModule {
        _burn(from, amount);
    }

    // =============================================================================
    // VIEW FUNCTIONS
    // =============================================================================
    
    function name() public pure override returns (string memory) {
        return _name;
    }
    
    function symbol() public pure override returns (string memory) {
        return _symbol;
    }
    
    function decimals() public pure override returns (uint8) {
        return _decimals;
    }
    
    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    // Admin system view functions
    function admin() external view returns (address) {
        return _admin;
    }
    
    function isAdminEnabled() external view returns (bool) {
        return _adminEnabled;
    }
    
    function isAuthorizedModule(address module) external view returns (bool) {
        return _authorizedModules[module];
    }
    
    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }
    
    function isBlacklisted(address account) external view returns (bool) {
        return _isBlacklisted[account];
    }
    
    function getCurrentTotalFees() external view returns (uint256) {
        return taxFeePercent + liquidityFeePercent;
    }
    
    function getMaxFeeLimit() external pure returns (uint256) {
        return MAX_FEE;
    }
    
    function isAntiBotActive() external view returns (bool) {
        return _antiBotActive && (block.timestamp < _launchTime + ANTI_BOT_DURATION);
    }
    
    function getRemainingCooldown(address account) external view returns (uint256) {
        if (!_antiBotActive) return 0;
        uint256 lastTx = _lastTransactionTime[account];
        if (block.timestamp >= lastTx + TRANSACTION_COOLDOWN) return 0;
        return (lastTx + TRANSACTION_COOLDOWN) - block.timestamp;
    }

    // =============================================================================
    // ERC20 FUNCTIONS
    // =============================================================================
    
    function transfer(address recipient, uint256 amount) public override whenNotPaused returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    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 whenNotPaused returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        
        return true;
    }
    
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        return true;
    }

    // =============================================================================
    // INTERNAL FUNCTIONS
    // =============================================================================
    
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from zero address");
        require(recipient != address(0), "ERC20: transfer to zero address");
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "Blacklisted address");
        require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");
        
        // Check limits
        if (sender != owner() && sender != _admin && recipient != owner() && recipient != _admin) {
            require(amount <= maxTxAmount, "Transfer amount exceeds max tx amount");
            
            if (recipient != address(this)) {
                require(_balances[recipient] + amount <= maxWalletAmount, "Recipient exceeds max wallet amount");
            }
        }
        
        // Anti-bot protection
        if (_antiBotActive && block.timestamp < _launchTime + ANTI_BOT_DURATION) {
            if (sender != owner() && sender != _admin && recipient != owner() && recipient != _admin) {
                require(
                    block.timestamp >= _lastTransactionTime[sender] + TRANSACTION_COOLDOWN,
                    "Anti-bot: cooldown period active"
                );
                _lastTransactionTime[sender] = block.timestamp;
            }
        }
        
        // Check if fees should be applied
        bool takeFee = !_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient];
        
        if (takeFee && (taxFeePercent > 0 || liquidityFeePercent > 0)) {
            uint256 totalFeePercent = taxFeePercent + liquidityFeePercent;
            uint256 feeAmount = (amount * totalFeePercent) / 10000;
            
            _balances[sender] -= amount;
            _balances[recipient] += (amount - feeAmount);
            _balances[address(this)] += feeAmount;
            
            emit Transfer(sender, recipient, amount - feeAmount);
            if (feeAmount > 0) {
                emit Transfer(sender, address(this), feeAmount);
            }
        } else {
            _balances[sender] -= amount;
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
        }
    }
    
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to zero address");
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }
    
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from zero address");
        require(_balances[account] >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] -= amount;
        emit Transfer(account, address(0), amount);
    }
    
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    // Allow contract to receive BNB
    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AdminStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"AntiBotStatusChanged","type":"event"},{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"LimitsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"module","type":"address"},{"indexed":false,"internalType":"bool","name":"authorized","type":"bool"}],"name":"ModuleAuthorized","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"module","type":"address"},{"internalType":"bool","name":"authorized","type":"bool"}],"name":"authorizeModule","outputs":[],"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":"modules","type":"address[]"},{"internalType":"bool","name":"authorized","type":"bool"}],"name":"bulkAuthorizeModules","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"bulkBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"disableAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdrawBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxFeeLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getRemainingCooldown","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":[],"name":"isAdminEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAntiBotActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"isAuthorizedModule","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"moduleBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"moduleMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"moduleTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAdminEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setAntiBotActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setFeeExclusion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600260156101000a81548160ff0219169083151502179055505f6008555f6009556012600a620000379190620006a3565b620f4240620000479190620006f3565b600a556012600a6200005a9190620006a3565b621e84806200006a9190620006f3565b600b556001600c5f6101000a81548160ff0219169083151502179055505f600f5f6101000a81548160ff0219169083151502179055506012600a620000b09190620006a3565b6207a120620000c09190620006f3565b601055348015620000cf575f80fd5b50620000e06200042260201b60201c565b620000f1816200042960201b60201c565b50600180819055505f60025f6101000a81548160ff02191690831515021790555042600d81905550620001296200042260201b60201c565b600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620001799190620006a3565b6305f5e1006200018a9190620006f3565b60035f6200019d6200042260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f620001ef620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200031a6200042260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620003789190620006a3565b6305f5e100620003899190620006f3565b6040516200039891906200074e565b60405180910390a3600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a362000769565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200059b5780860481111562000573576200057262000511565b5b6001851615620005835780820291505b808102905062000593856200053e565b945062000553565b94509492505050565b5f82620005b5576001905062000687565b81620005c4575f905062000687565b8160018114620005dd5760028114620005e8576200061e565b600191505062000687565b60ff841115620005fd57620005fc62000511565b5b8360020a91508482111562000617576200061662000511565b5b5062000687565b5060208310610133831016604e8410600b8410161715620006585782820a90508381111562000652576200065162000511565b5b62000687565b6200066784848460016200054a565b9250905081840481111562000681576200068062000511565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006af826200068e565b9150620006bc8362000697565b9250620006eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005a4565b905092915050565b5f620006ff826200068e565b91506200070c836200068e565b92508282026200071c816200068e565b9150828204841483151762000736576200073562000511565b5b5092915050565b62000748816200068e565b82525050565b5f602082019050620007635f8301846200073d565b92915050565b615ef180620007775f395ff3fe608060405260043610610301575f3560e01c80637be796be1161018f578063bc063e1a116100db578063e6f3e00411610094578063f26b854f1161006e578063f26b854f14610b30578063f2fde38b14610b46578063f851a44014610b6e578063fe575a8714610b9857610308565b8063e6f3e00414610aa0578063e735877814610adc578063ebacd6d414610b0657610308565b8063bc063e1a14610998578063c4590d3f146109c2578063c49b9a80146109ea578063c82a108914610a12578063dd62ed3e14610a3a578063e2f4560514610a7657610308565b806395d89b4111610148578063a4c3b09111610122578063a4c3b091146108e2578063a9059cbb1461090a578063aa4bde2814610946578063afa4f3b21461097057610308565b806395d89b41146108405780639eb996d41461086a578063a457c2d7146108a657610308565b80637be796be1461075e5780637dfd50a2146107865780638456cb59146107ae5780638c0b5e22146107c45780638da5cb5b146107ee57806391b98e0e1461081857610308565b80633f4ba83a1161024e5780636677e6ba1161020757806370a08231116101e157806370a08231146106e0578063715018a61461071c578063741af87f14610732578063751039fc1461074857610308565b80636677e6ba146106665780636e2310b21461068e578063704b6c02146106b857610308565b80633f4ba83a1461056e5780634a74bb02146105845780634e26463f146105ae5780634fbee193146105d657806355272372146106125780635c975abb1461063c57610308565b8063160dd93c116102bb57806330b94cd51161029557806330b94cd5146104a4578063313ce567146104cc57806339509351146104f6578063399dd4631461053257610308565b8063160dd93c1461041457806318160ddd1461043e57806323b872dd1461046857610308565b80625dd8ed1461030c57806306fdde0314610334578063095ea7b31461035e5780630b78f9c01461039a57806311ffd5b7146103c2578063153b0d1e146103ec57610308565b3661030857005b5f80fd5b348015610317575f80fd5b50610332600480360381019061032d91906148b5565b610bd4565b005b34801561033f575f80fd5b50610348610ef5565b604051610355919061499c565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190614a49565b610f32565b6040516103919190614a96565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb9190614aaf565b610f4f565b005b3480156103cd575f80fd5b506103d6611167565b6040516103e39190614afc565b60405180910390f35b3480156103f7575f80fd5b50610412600480360381019061040d9190614b15565b61116d565b005b34801561041f575f80fd5b506104286113d6565b6040516104359190614a96565b60405180910390f35b348015610449575f80fd5b506104526113ec565b60405161045f9190614afc565b60405180910390f35b348015610473575f80fd5b5061048e60048036038101906104899190614b53565b61140f565b60405161049b9190614a96565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190614b15565b611512565b005b3480156104d7575f80fd5b506104e061165d565b6040516104ed9190614bbe565b60405180910390f35b348015610501575f80fd5b5061051c60048036038101906105179190614a49565b611665565b6040516105299190614a96565b60405180910390f35b34801561053d575f80fd5b5061055860048036038101906105539190614bd7565b61170c565b6040516105659190614a96565b60405180910390f35b348015610579575f80fd5b5061058261175e565b005b34801561058f575f80fd5b5061059861185b565b6040516105a59190614a96565b60405180910390f35b3480156105b9575f80fd5b506105d460048036038101906105cf9190614a49565b61186d565b005b3480156105e1575f80fd5b506105fc60048036038101906105f79190614bd7565b61190b565b6040516106099190614a96565b60405180910390f35b34801561061d575f80fd5b5061062661195d565b6040516106339190614a96565b60405180910390f35b348015610647575f80fd5b5061065061198c565b60405161065d9190614a96565b60405180910390f35b348015610671575f80fd5b5061068c600480360381019061068791906148b5565b6119a1565b005b348015610699575f80fd5b506106a2611c39565b6040516106af9190614afc565b60405180910390f35b3480156106c3575f80fd5b506106de60048036038101906106d99190614bd7565b611c3f565b005b3480156106eb575f80fd5b5061070660048036038101906107019190614bd7565b611f0e565b6040516107139190614afc565b60405180910390f35b348015610727575f80fd5b50610730611f54565b005b34801561073d575f80fd5b50610746611f67565b005b348015610753575f80fd5b5061075c6120a3565b005b348015610769575f80fd5b50610784600480360381019061077f9190614c02565b61224f565b005b348015610791575f80fd5b506107ac60048036038101906107a79190614c02565b612396565b005b3480156107b9575f80fd5b506107c26124dc565b005b3480156107cf575f80fd5b506107d86125d9565b6040516107e59190614afc565b60405180910390f35b3480156107f9575f80fd5b506108026125df565b60405161080f9190614c3c565b60405180910390f35b348015610823575f80fd5b5061083e60048036038101906108399190614a49565b612606565b005b34801561084b575f80fd5b506108546126a4565b604051610861919061499c565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b9190614b53565b6126e1565b60405161089d9190614a96565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c79190614a49565b612788565b6040516108d99190614a96565b60405180910390f35b3480156108ed575f80fd5b5061090860048036038101906109039190614a49565b612877565b005b348015610915575f80fd5b50610930600480360381019061092b9190614a49565b612ac8565b60405161093d9190614a96565b60405180910390f35b348015610951575f80fd5b5061095a612aed565b6040516109679190614afc565b60405180910390f35b34801561097b575f80fd5b5061099660048036038101906109919190614c55565b612af3565b005b3480156109a3575f80fd5b506109ac612cc8565b6040516109b99190614afc565b60405180910390f35b3480156109cd575f80fd5b506109e860048036038101906109e39190614aaf565b612cce565b005b3480156109f5575f80fd5b50610a106004803603810190610a0b9190614c02565b612ee3565b005b348015610a1d575f80fd5b50610a386004803603810190610a339190614b15565b613029565b005b348015610a45575f80fd5b50610a606004803603810190610a5b9190614c80565b613230565b604051610a6d9190614afc565b60405180910390f35b348015610a81575f80fd5b50610a8a6132b2565b604051610a979190614afc565b60405180910390f35b348015610aab575f80fd5b50610ac66004803603810190610ac19190614bd7565b6132b8565b604051610ad39190614afc565b60405180910390f35b348015610ae7575f80fd5b50610af0613352565b604051610afd9190614afc565b60405180910390f35b348015610b11575f80fd5b50610b1a613368565b604051610b279190614afc565b60405180910390f35b348015610b3b575f80fd5b50610b44613371565b005b348015610b51575f80fd5b50610b6c6004803603810190610b679190614bd7565b613561565b005b348015610b79575f80fd5b50610b826135e3565b604051610b8f9190614c3c565b60405180910390f35b348015610ba3575f80fd5b50610bbe6004803603810190610bb99190614bd7565b61360c565b604051610bcb9190614a96565b60405180910390f35b610bdc6125df565b73ffffffffffffffffffffffffffffffffffffffff16610bfa61365e565b73ffffffffffffffffffffffffffffffffffffffff161480610c885750600260159054906101000a900460ff168015610c875750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c6f61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90614d08565b60405180910390fd5b5f5b83839050811015610eef57610cdc6125df565b73ffffffffffffffffffffffffffffffffffffffff16848483818110610d0557610d04614d26565b5b9050602002016020810190610d1a9190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1614158015610db35750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16848483818110610d8557610d84614d26565b5b9050602002016020810190610d9a9190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1614155b610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de990614d9d565b60405180910390fd5b8160065f868685818110610e0957610e08614d26565b5b9050602002016020810190610e1e9190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610e8057610e7f614d26565b5b9050602002016020810190610e959190614bd7565b73ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac83604051610eda9190614a96565b60405180910390a28080600101915050610cc9565b50505050565b60606040518060400160405280600c81526020017f4e696e6a6120467573696f6e0000000000000000000000000000000000000000815250905090565b5f610f45610f3e61365e565b8484613665565b6001905092915050565b610f576125df565b73ffffffffffffffffffffffffffffffffffffffff16610f7561365e565b73ffffffffffffffffffffffffffffffffffffffff1614806110035750600260159054906101000a900460ff1680156110025750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fea61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614d08565b60405180910390fd5b6103e8821115611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90614e05565b60405180910390fd5b6103e88111156110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390614e6d565b60405180910390fd5b6103e881836110db9190614eb8565b111561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390614f35565b60405180910390fd5b81600881905550806009819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1828260405161115b929190614f53565b60405180910390a15050565b60085481565b6111756125df565b73ffffffffffffffffffffffffffffffffffffffff1661119361365e565b73ffffffffffffffffffffffffffffffffffffffff1614806112215750600260159054906101000a900460ff1680156112205750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661120861365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790614d08565b60405180910390fd5b6112686125df565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156112f15750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790614d9d565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac826040516113ca9190614a96565b60405180910390a25050565b5f600260159054906101000a900460ff16905090565b5f6012600a6113fb91906150a9565b6305f5e10061140a91906150f3565b905090565b5f611418613828565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61145f61365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d5906151a4565b60405180910390fd5b6114e9858585613872565b611506856114f561365e565b858461150191906151c2565b613665565b60019150509392505050565b61151a6125df565b73ffffffffffffffffffffffffffffffffffffffff1661153861365e565b73ffffffffffffffffffffffffffffffffffffffff1614806115c65750600260159054906101000a900460ff1680156115c55750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115ad61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90614d08565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f61170261167161365e565b848460045f61167e61365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546116fd9190614eb8565b613665565b6001905092915050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6117666125df565b73ffffffffffffffffffffffffffffffffffffffff1661178461365e565b73ffffffffffffffffffffffffffffffffffffffff1614806118125750600260159054906101000a900460ff1680156118115750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f961365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184890614d08565b60405180910390fd5b6118596142f8565b565b600f5f9054906101000a900460ff1681565b60075f61187861365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f49061523f565b60405180910390fd5b6119078282614359565b5050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600c5f9054906101000a900460ff168015611987575061012c600d546119849190614eb8565b42105b905090565b5f60025f9054906101000a900460ff16905090565b6119a96125df565b73ffffffffffffffffffffffffffffffffffffffff166119c761365e565b73ffffffffffffffffffffffffffffffffffffffff161480611a555750600260159054906101000a900460ff168015611a545750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a3c61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8b90614d08565b60405180910390fd5b5f5b83839050811015611c33575f73ffffffffffffffffffffffffffffffffffffffff16848483818110611acb57611aca614d26565b5b9050602002016020810190611ae09190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1603611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d906152a7565b60405180910390fd5b8160075f868685818110611b4d57611b4c614d26565b5b9050602002016020810190611b629190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110611bc457611bc3614d26565b5b9050602002016020810190611bd99190614bd7565b73ffffffffffffffffffffffffffffffffffffffff167f7bfed9e73cc01c459d482800942a9eef9046d01f68c4881d389495df294d10ca83604051611c1e9190614a96565b60405180910390a28080600101915050611a96565b50505050565b60095481565b611c476125df565b73ffffffffffffffffffffffffffffffffffffffff16611c6561365e565b73ffffffffffffffffffffffffffffffffffffffff161480611cf35750600260159054906101000a900460ff168015611cf25750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cda61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990614d08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d979061530f565b60405180910390fd5b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611f5c614483565b611f655f614501565b565b611f6f6125df565b73ffffffffffffffffffffffffffffffffffffffff16611f8d61365e565b73ffffffffffffffffffffffffffffffffffffffff16148061201b5750600260159054906101000a900460ff16801561201a5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661200261365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b61205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190614d08565b60405180910390fd5b5f6008819055505f6009819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a15f8060405161209992919061536f565b60405180910390a1565b6120ab6125df565b73ffffffffffffffffffffffffffffffffffffffff166120c961365e565b73ffffffffffffffffffffffffffffffffffffffff1614806121575750600260159054906101000a900460ff1680156121565750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661213e61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218d90614d08565b60405180910390fd5b6012600a6121a491906150a9565b6305f5e1006121b391906150f3565b600a819055506012600a6121c791906150a9565b6305f5e1006121d691906150f3565b600b819055507f4d4981437d0211f9e6843eb024d9ada1fa3a99514d4343d4aece106dd11524bb6012600a61220b91906150a9565b6305f5e10061221a91906150f3565b6012600a61222891906150a9565b6305f5e10061223791906150f3565b604051612245929190614f53565b60405180910390a1565b6122576125df565b73ffffffffffffffffffffffffffffffffffffffff1661227561365e565b73ffffffffffffffffffffffffffffffffffffffff1614806123035750600260159054906101000a900460ff1680156123025750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122ea61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233990614d08565b60405180910390fd5b80600260156101000a81548160ff0219169083151502179055507fa0e11b44261a4f21ec6042da14d400f3e041356e7e2d08d68c5cb447bda465a58160405161238b9190614a96565b60405180910390a150565b61239e6125df565b73ffffffffffffffffffffffffffffffffffffffff166123bc61365e565b73ffffffffffffffffffffffffffffffffffffffff16148061244a5750600260159054906101000a900460ff1680156124495750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661243161365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248090614d08565b60405180910390fd5b80600c5f6101000a81548160ff0219169083151502179055507f08cef7527343893f39f57ac897f7c0cc69a0aaff38f01ea8630cc523ad2dd737816040516124d19190614a96565b60405180910390a150565b6124e46125df565b73ffffffffffffffffffffffffffffffffffffffff1661250261365e565b73ffffffffffffffffffffffffffffffffffffffff1614806125905750600260159054906101000a900460ff16801561258f5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661257761365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b6125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c690614d08565b60405180910390fd5b6125d76145c2565b565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f61261161365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d9061523f565b60405180910390fd5b6126a08282614624565b5050565b60606040518060400160405280600481526020017f4e49464900000000000000000000000000000000000000000000000000000000815250905090565b5f60075f6126ed61365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127699061523f565b60405180910390fd5b61277d848484613872565b600190509392505050565b5f8060045f61279561365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690615406565b60405180910390fd5b61286c61285a61365e565b85858461286791906151c2565b613665565b600191505092915050565b61287f6125df565b73ffffffffffffffffffffffffffffffffffffffff1661289d61365e565b73ffffffffffffffffffffffffffffffffffffffff16148061292b5750600260159054906101000a900460ff16801561292a5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661291261365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b61296a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296190614d08565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf9061546e565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612a3592919061548c565b6020604051808303815f875af1158015612a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7591906154c7565b508173ffffffffffffffffffffffffffffffffffffffff167f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969582604051612abc9190614afc565b60405180910390a25050565b5f612ad1613828565b612ae3612adc61365e565b8484613872565b6001905092915050565b600b5481565b612afb6125df565b73ffffffffffffffffffffffffffffffffffffffff16612b1961365e565b73ffffffffffffffffffffffffffffffffffffffff161480612ba75750600260159054906101000a900460ff168015612ba65750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b8e61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdd90614d08565b60405180910390fd5b620186a06012600a612bf891906150a9565b6305f5e100612c0791906150f3565b612c11919061551f565b811015612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90615599565b60405180910390fd5b60646012600a612c6391906150a9565b6305f5e100612c7291906150f3565b612c7c919061551f565b811115612cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb590615601565b60405180910390fd5b8060108190555050565b6103e881565b612cd66125df565b73ffffffffffffffffffffffffffffffffffffffff16612cf461365e565b73ffffffffffffffffffffffffffffffffffffffff161480612d825750600260159054906101000a900460ff168015612d815750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612d6961365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db890614d08565b60405180910390fd5b6103e86012600a612dd291906150a9565b6305f5e100612de191906150f3565b612deb919061551f565b821015612e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2490615669565b60405180910390fd5b60646012600a612e3d91906150a9565b6305f5e100612e4c91906150f3565b612e56919061551f565b811015612e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8f906156d1565b60405180910390fd5b81600a8190555080600b819055507f4d4981437d0211f9e6843eb024d9ada1fa3a99514d4343d4aece106dd11524bb8282604051612ed7929190614f53565b60405180910390a15050565b612eeb6125df565b73ffffffffffffffffffffffffffffffffffffffff16612f0961365e565b73ffffffffffffffffffffffffffffffffffffffff161480612f975750600260159054906101000a900460ff168015612f965750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f7e61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcd90614d08565b60405180910390fd5b80600f5f6101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161301e9190614a96565b60405180910390a150565b6130316125df565b73ffffffffffffffffffffffffffffffffffffffff1661304f61365e565b73ffffffffffffffffffffffffffffffffffffffff1614806130dd5750600260159054906101000a900460ff1680156130dc5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130c461365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b61311c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311390614d08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361318a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613181906152a7565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f7bfed9e73cc01c459d482800942a9eef9046d01f68c4881d389495df294d10ca826040516132249190614a96565b60405180910390a25050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b5f600c5f9054906101000a900460ff166132d4575f905061334d565b5f600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050601e816133229190614eb8565b4210613331575f91505061334d565b42601e8261333f9190614eb8565b61334991906151c2565b9150505b919050565b5f6009546008546133639190614eb8565b905090565b5f6103e8905090565b6133796125df565b73ffffffffffffffffffffffffffffffffffffffff1661339761365e565b73ffffffffffffffffffffffffffffffffffffffff1614806134255750600260159054906101000a900460ff1680156134245750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661340c61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b613464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345b90614d08565b60405180910390fd5b5f4790505f81116134aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a190615739565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561350f573d5f803e3d5ffd5b505f73ffffffffffffffffffffffffffffffffffffffff167f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695826040516135569190614afc565b60405180910390a250565b613569614483565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ce906157c7565b60405180910390fd5b6135e081614501565b50565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ca9061582f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373890615897565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161381b9190614afc565b60405180910390a3505050565b61383061198c565b15613870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613867906158ff565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138d79061598d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361394e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613945906159f5565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156139ec575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2290615a5d565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015613aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa290615aeb565b60405180910390fd5b613ab36125df565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613b3c5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613b7b5750613b4b6125df565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613bd55750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613ce157600a54811115613c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c1690615b79565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613ce057600b548160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c9e9190614eb8565b1115613cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd690615c07565b60405180910390fd5b5b5b600c5f9054906101000a900460ff168015613d0a575061012c600d54613d079190614eb8565b42105b15613f0e57613d176125df565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613da05750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613ddf5750613daf6125df565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613e395750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613f0d57601e600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613e889190614eb8565b421015613eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec190615c6f565b60405180910390fd5b42600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613fad575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b9050808015613fc957505f6008541180613fc857505f600954115b5b156141e6575f600954600854613fdf9190614eb8565b90505f6127108285613ff191906150f3565b613ffb919061551f565b90508360035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461404991906151c2565b92505081905550808461405c91906151c2565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546140a79190614eb8565b925050819055508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546140fa9190614eb8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838761415c91906151c2565b6040516141699190614afc565b60405180910390a35f8111156141df573073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141d69190614afc565b60405180910390a35b50506142f2565b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461423291906151c2565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546142859190614eb8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142e99190614afc565b60405180910390a35b50505050565b6143006147ce565b5f60025f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61434261365e565b60405161434f9190614c3c565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036143c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143be90615cd7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546144139190614eb8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144779190614afc565b60405180910390a35050565b61448b61365e565b73ffffffffffffffffffffffffffffffffffffffff166144a96125df565b73ffffffffffffffffffffffffffffffffffffffff16146144ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144f690615d3f565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6145ca613828565b600160025f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861460d61365e565b60405161461a9190614c3c565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161468990615da7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015614712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161470990615e35565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461475e91906151c2565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147c29190614afc565b60405180910390a35050565b6147d661198c565b614815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161480c90615e9d565b60405180910390fd5b565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126148405761483f61481f565b5b8235905067ffffffffffffffff81111561485d5761485c614823565b5b60208301915083602082028301111561487957614878614827565b5b9250929050565b5f8115159050919050565b61489481614880565b811461489e575f80fd5b50565b5f813590506148af8161488b565b92915050565b5f805f604084860312156148cc576148cb614817565b5b5f84013567ffffffffffffffff8111156148e9576148e861481b565b5b6148f58682870161482b565b93509350506020614908868287016148a1565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561494957808201518184015260208101905061492e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61496e82614912565b614978818561491c565b935061498881856020860161492c565b61499181614954565b840191505092915050565b5f6020820190508181035f8301526149b48184614964565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6149e5826149bc565b9050919050565b6149f5816149db565b81146149ff575f80fd5b50565b5f81359050614a10816149ec565b92915050565b5f819050919050565b614a2881614a16565b8114614a32575f80fd5b50565b5f81359050614a4381614a1f565b92915050565b5f8060408385031215614a5f57614a5e614817565b5b5f614a6c85828601614a02565b9250506020614a7d85828601614a35565b9150509250929050565b614a9081614880565b82525050565b5f602082019050614aa95f830184614a87565b92915050565b5f8060408385031215614ac557614ac4614817565b5b5f614ad285828601614a35565b9250506020614ae385828601614a35565b9150509250929050565b614af681614a16565b82525050565b5f602082019050614b0f5f830184614aed565b92915050565b5f8060408385031215614b2b57614b2a614817565b5b5f614b3885828601614a02565b9250506020614b49858286016148a1565b9150509250929050565b5f805f60608486031215614b6a57614b69614817565b5b5f614b7786828701614a02565b9350506020614b8886828701614a02565b9250506040614b9986828701614a35565b9150509250925092565b5f60ff82169050919050565b614bb881614ba3565b82525050565b5f602082019050614bd15f830184614baf565b92915050565b5f60208284031215614bec57614beb614817565b5b5f614bf984828501614a02565b91505092915050565b5f60208284031215614c1757614c16614817565b5b5f614c24848285016148a1565b91505092915050565b614c36816149db565b82525050565b5f602082019050614c4f5f830184614c2d565b92915050565b5f60208284031215614c6a57614c69614817565b5b5f614c7784828501614a35565b91505092915050565b5f8060408385031215614c9657614c95614817565b5b5f614ca385828601614a02565b9250506020614cb485828601614a02565b9150509250929050565b7f43616c6c6572206973206e6f74206f776e6572206f722061646d696e000000005f82015250565b5f614cf2601c8361491c565b9150614cfd82614cbe565b602082019050919050565b5f6020820190508181035f830152614d1f81614ce6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f43616e6e6f7420626c61636b6c697374206f776e6572206f722061646d696e005f82015250565b5f614d87601f8361491c565b9150614d9282614d53565b602082019050919050565b5f6020820190508181035f830152614db481614d7b565b9050919050565b7f546178206665652065786365656473206d6178696d756d0000000000000000005f82015250565b5f614def60178361491c565b9150614dfa82614dbb565b602082019050919050565b5f6020820190508181035f830152614e1c81614de3565b9050919050565b7f4c6971756964697479206665652065786365656473206d6178696d756d0000005f82015250565b5f614e57601d8361491c565b9150614e6282614e23565b602082019050919050565b5f6020820190508181035f830152614e8481614e4b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614ec282614a16565b9150614ecd83614a16565b9250828201905080821115614ee557614ee4614e8b565b5b92915050565b7f546f74616c206665657320657863656564206d6178696d756d000000000000005f82015250565b5f614f1f60198361491c565b9150614f2a82614eeb565b602082019050919050565b5f6020820190508181035f830152614f4c81614f13565b9050919050565b5f604082019050614f665f830185614aed565b614f736020830184614aed565b9392505050565b5f8160011c9050919050565b5f808291508390505b6001851115614fcf57808604811115614fab57614faa614e8b565b5b6001851615614fba5780820291505b8081029050614fc885614f7a565b9450614f8f565b94509492505050565b5f82614fe757600190506150a2565b81614ff4575f90506150a2565b816001811461500a576002811461501457615043565b60019150506150a2565b60ff84111561502657615025614e8b565b5b8360020a91508482111561503d5761503c614e8b565b5b506150a2565b5060208310610133831016604e8410600b84101617156150785782820a90508381111561507357615072614e8b565b5b6150a2565b6150858484846001614f86565b9250905081840481111561509c5761509b614e8b565b5b81810290505b9392505050565b5f6150b382614a16565b91506150be83614ba3565b92506150eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614fd8565b905092915050565b5f6150fd82614a16565b915061510883614a16565b925082820261511681614a16565b9150828204841483151761512d5761512c614e8b565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61518e60288361491c565b915061519982615134565b604082019050919050565b5f6020820190508181035f8301526151bb81615182565b9050919050565b5f6151cc82614a16565b91506151d783614a16565b92508282039050818111156151ef576151ee614e8b565b5b92915050565b7f4e6f7420617574686f72697a6564206d6f64756c6500000000000000000000005f82015250565b5f61522960158361491c565b9150615234826151f5565b602082019050919050565b5f6020820190508181035f8301526152568161521d565b9050919050565b7f4d6f64756c652063616e6e6f74206265207a65726f20616464726573730000005f82015250565b5f615291601d8361491c565b915061529c8261525d565b602082019050919050565b5f6020820190508181035f8301526152be81615285565b9050919050565b7f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000005f82015250565b5f6152f9601c8361491c565b9150615304826152c5565b602082019050919050565b5f6020820190508181035f830152615326816152ed565b9050919050565b5f819050919050565b5f819050919050565b5f61535961535461534f8461532d565b615336565b614a16565b9050919050565b6153698161533f565b82525050565b5f6040820190506153825f830185615360565b61538f6020830184615360565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6153f060258361491c565b91506153fb82615396565b604082019050919050565b5f6020820190508181035f83015261541d816153e4565b9050919050565b7f43616e6e6f74207769746864726177206f776e20746f6b656e730000000000005f82015250565b5f615458601a8361491c565b915061546382615424565b602082019050919050565b5f6020820190508181035f8301526154858161544c565b9050919050565b5f60408201905061549f5f830185614c2d565b6154ac6020830184614aed565b9392505050565b5f815190506154c18161488b565b92915050565b5f602082840312156154dc576154db614817565b5b5f6154e9848285016154b3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61552982614a16565b915061553483614a16565b925082615544576155436154f2565b5b828204905092915050565b7f416d6f756e7420746f6f20736d616c6c000000000000000000000000000000005f82015250565b5f61558360108361491c565b915061558e8261554f565b602082019050919050565b5f6020820190508181035f8301526155b081615577565b9050919050565b7f416d6f756e7420746f6f206c61726765000000000000000000000000000000005f82015250565b5f6155eb60108361491c565b91506155f6826155b7565b602082019050919050565b5f6020820190508181035f830152615618816155df565b9050919050565b7f4d617820747820746f6f206c6f770000000000000000000000000000000000005f82015250565b5f615653600e8361491c565b915061565e8261561f565b602082019050919050565b5f6020820190508181035f83015261568081615647565b9050919050565b7f4d61782077616c6c657420746f6f206c6f7700000000000000000000000000005f82015250565b5f6156bb60128361491c565b91506156c682615687565b602082019050919050565b5f6020820190508181035f8301526156e8816156af565b9050919050565b7f4e6f20424e4220746f20776974686472617700000000000000000000000000005f82015250565b5f61572360128361491c565b915061572e826156ef565b602082019050919050565b5f6020820190508181035f83015261575081615717565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6157b160268361491c565b91506157bc82615757565b604082019050919050565b5f6020820190508181035f8301526157de816157a5565b9050919050565b7f45524332303a20617070726f76652066726f6d207a65726f20616464726573735f82015250565b5f61581960208361491c565b9150615824826157e5565b602082019050919050565b5f6020820190508181035f8301526158468161580d565b9050919050565b7f45524332303a20617070726f766520746f207a65726f206164647265737300005f82015250565b5f615881601e8361491c565b915061588c8261584d565b602082019050919050565b5f6020820190508181035f8301526158ae81615875565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f6158e960108361491c565b91506158f4826158b5565b602082019050919050565b5f6020820190508181035f830152615916816158dd565b9050919050565b7f45524332303a207472616e736665722066726f6d207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61597760218361491c565b91506159828261591d565b604082019050919050565b5f6020820190508181035f8301526159a48161596b565b9050919050565b7f45524332303a207472616e7366657220746f207a65726f2061646472657373005f82015250565b5f6159df601f8361491c565b91506159ea826159ab565b602082019050919050565b5f6020820190508181035f830152615a0c816159d3565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f615a4760138361491c565b9150615a5282615a13565b602082019050919050565b5f6020820190508181035f830152615a7481615a3b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615ad560268361491c565b9150615ae082615a7b565b604082019050919050565b5f6020820190508181035f830152615b0281615ac9565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d617820747820615f8201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b5f615b6360258361491c565b9150615b6e82615b09565b604082019050919050565b5f6020820190508181035f830152615b9081615b57565b9050919050565b7f526563697069656e742065786365656473206d61782077616c6c657420616d6f5f8201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b5f615bf160238361491c565b9150615bfc82615b97565b604082019050919050565b5f6020820190508181035f830152615c1e81615be5565b9050919050565b7f416e74692d626f743a20636f6f6c646f776e20706572696f64206163746976655f82015250565b5f615c5960208361491c565b9150615c6482615c25565b602082019050919050565b5f6020820190508181035f830152615c8681615c4d565b9050919050565b7f45524332303a206d696e7420746f207a65726f206164647265737300000000005f82015250565b5f615cc1601b8361491c565b9150615ccc82615c8d565b602082019050919050565b5f6020820190508181035f830152615cee81615cb5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f615d2960208361491c565b9150615d3482615cf5565b602082019050919050565b5f6020820190508181035f830152615d5681615d1d565b9050919050565b7f45524332303a206275726e2066726f6d207a65726f20616464726573730000005f82015250565b5f615d91601d8361491c565b9150615d9c82615d5d565b602082019050919050565b5f6020820190508181035f830152615dbe81615d85565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f615e1f60228361491c565b9150615e2a82615dc5565b604082019050919050565b5f6020820190508181035f830152615e4c81615e13565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f615e8760148361491c565b9150615e9282615e53565b602082019050919050565b5f6020820190508181035f830152615eb481615e7b565b905091905056fea26469706673582212205f99b9276c164945736cca19326e2406cd4d0c28ee8f62ca129b763091f7962464736f6c63430008180033

Deployed Bytecode

0x608060405260043610610301575f3560e01c80637be796be1161018f578063bc063e1a116100db578063e6f3e00411610094578063f26b854f1161006e578063f26b854f14610b30578063f2fde38b14610b46578063f851a44014610b6e578063fe575a8714610b9857610308565b8063e6f3e00414610aa0578063e735877814610adc578063ebacd6d414610b0657610308565b8063bc063e1a14610998578063c4590d3f146109c2578063c49b9a80146109ea578063c82a108914610a12578063dd62ed3e14610a3a578063e2f4560514610a7657610308565b806395d89b4111610148578063a4c3b09111610122578063a4c3b091146108e2578063a9059cbb1461090a578063aa4bde2814610946578063afa4f3b21461097057610308565b806395d89b41146108405780639eb996d41461086a578063a457c2d7146108a657610308565b80637be796be1461075e5780637dfd50a2146107865780638456cb59146107ae5780638c0b5e22146107c45780638da5cb5b146107ee57806391b98e0e1461081857610308565b80633f4ba83a1161024e5780636677e6ba1161020757806370a08231116101e157806370a08231146106e0578063715018a61461071c578063741af87f14610732578063751039fc1461074857610308565b80636677e6ba146106665780636e2310b21461068e578063704b6c02146106b857610308565b80633f4ba83a1461056e5780634a74bb02146105845780634e26463f146105ae5780634fbee193146105d657806355272372146106125780635c975abb1461063c57610308565b8063160dd93c116102bb57806330b94cd51161029557806330b94cd5146104a4578063313ce567146104cc57806339509351146104f6578063399dd4631461053257610308565b8063160dd93c1461041457806318160ddd1461043e57806323b872dd1461046857610308565b80625dd8ed1461030c57806306fdde0314610334578063095ea7b31461035e5780630b78f9c01461039a57806311ffd5b7146103c2578063153b0d1e146103ec57610308565b3661030857005b5f80fd5b348015610317575f80fd5b50610332600480360381019061032d91906148b5565b610bd4565b005b34801561033f575f80fd5b50610348610ef5565b604051610355919061499c565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190614a49565b610f32565b6040516103919190614a96565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb9190614aaf565b610f4f565b005b3480156103cd575f80fd5b506103d6611167565b6040516103e39190614afc565b60405180910390f35b3480156103f7575f80fd5b50610412600480360381019061040d9190614b15565b61116d565b005b34801561041f575f80fd5b506104286113d6565b6040516104359190614a96565b60405180910390f35b348015610449575f80fd5b506104526113ec565b60405161045f9190614afc565b60405180910390f35b348015610473575f80fd5b5061048e60048036038101906104899190614b53565b61140f565b60405161049b9190614a96565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190614b15565b611512565b005b3480156104d7575f80fd5b506104e061165d565b6040516104ed9190614bbe565b60405180910390f35b348015610501575f80fd5b5061051c60048036038101906105179190614a49565b611665565b6040516105299190614a96565b60405180910390f35b34801561053d575f80fd5b5061055860048036038101906105539190614bd7565b61170c565b6040516105659190614a96565b60405180910390f35b348015610579575f80fd5b5061058261175e565b005b34801561058f575f80fd5b5061059861185b565b6040516105a59190614a96565b60405180910390f35b3480156105b9575f80fd5b506105d460048036038101906105cf9190614a49565b61186d565b005b3480156105e1575f80fd5b506105fc60048036038101906105f79190614bd7565b61190b565b6040516106099190614a96565b60405180910390f35b34801561061d575f80fd5b5061062661195d565b6040516106339190614a96565b60405180910390f35b348015610647575f80fd5b5061065061198c565b60405161065d9190614a96565b60405180910390f35b348015610671575f80fd5b5061068c600480360381019061068791906148b5565b6119a1565b005b348015610699575f80fd5b506106a2611c39565b6040516106af9190614afc565b60405180910390f35b3480156106c3575f80fd5b506106de60048036038101906106d99190614bd7565b611c3f565b005b3480156106eb575f80fd5b5061070660048036038101906107019190614bd7565b611f0e565b6040516107139190614afc565b60405180910390f35b348015610727575f80fd5b50610730611f54565b005b34801561073d575f80fd5b50610746611f67565b005b348015610753575f80fd5b5061075c6120a3565b005b348015610769575f80fd5b50610784600480360381019061077f9190614c02565b61224f565b005b348015610791575f80fd5b506107ac60048036038101906107a79190614c02565b612396565b005b3480156107b9575f80fd5b506107c26124dc565b005b3480156107cf575f80fd5b506107d86125d9565b6040516107e59190614afc565b60405180910390f35b3480156107f9575f80fd5b506108026125df565b60405161080f9190614c3c565b60405180910390f35b348015610823575f80fd5b5061083e60048036038101906108399190614a49565b612606565b005b34801561084b575f80fd5b506108546126a4565b604051610861919061499c565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b9190614b53565b6126e1565b60405161089d9190614a96565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c79190614a49565b612788565b6040516108d99190614a96565b60405180910390f35b3480156108ed575f80fd5b5061090860048036038101906109039190614a49565b612877565b005b348015610915575f80fd5b50610930600480360381019061092b9190614a49565b612ac8565b60405161093d9190614a96565b60405180910390f35b348015610951575f80fd5b5061095a612aed565b6040516109679190614afc565b60405180910390f35b34801561097b575f80fd5b5061099660048036038101906109919190614c55565b612af3565b005b3480156109a3575f80fd5b506109ac612cc8565b6040516109b99190614afc565b60405180910390f35b3480156109cd575f80fd5b506109e860048036038101906109e39190614aaf565b612cce565b005b3480156109f5575f80fd5b50610a106004803603810190610a0b9190614c02565b612ee3565b005b348015610a1d575f80fd5b50610a386004803603810190610a339190614b15565b613029565b005b348015610a45575f80fd5b50610a606004803603810190610a5b9190614c80565b613230565b604051610a6d9190614afc565b60405180910390f35b348015610a81575f80fd5b50610a8a6132b2565b604051610a979190614afc565b60405180910390f35b348015610aab575f80fd5b50610ac66004803603810190610ac19190614bd7565b6132b8565b604051610ad39190614afc565b60405180910390f35b348015610ae7575f80fd5b50610af0613352565b604051610afd9190614afc565b60405180910390f35b348015610b11575f80fd5b50610b1a613368565b604051610b279190614afc565b60405180910390f35b348015610b3b575f80fd5b50610b44613371565b005b348015610b51575f80fd5b50610b6c6004803603810190610b679190614bd7565b613561565b005b348015610b79575f80fd5b50610b826135e3565b604051610b8f9190614c3c565b60405180910390f35b348015610ba3575f80fd5b50610bbe6004803603810190610bb99190614bd7565b61360c565b604051610bcb9190614a96565b60405180910390f35b610bdc6125df565b73ffffffffffffffffffffffffffffffffffffffff16610bfa61365e565b73ffffffffffffffffffffffffffffffffffffffff161480610c885750600260159054906101000a900460ff168015610c875750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c6f61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90614d08565b60405180910390fd5b5f5b83839050811015610eef57610cdc6125df565b73ffffffffffffffffffffffffffffffffffffffff16848483818110610d0557610d04614d26565b5b9050602002016020810190610d1a9190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1614158015610db35750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16848483818110610d8557610d84614d26565b5b9050602002016020810190610d9a9190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1614155b610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de990614d9d565b60405180910390fd5b8160065f868685818110610e0957610e08614d26565b5b9050602002016020810190610e1e9190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610e8057610e7f614d26565b5b9050602002016020810190610e959190614bd7565b73ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac83604051610eda9190614a96565b60405180910390a28080600101915050610cc9565b50505050565b60606040518060400160405280600c81526020017f4e696e6a6120467573696f6e0000000000000000000000000000000000000000815250905090565b5f610f45610f3e61365e565b8484613665565b6001905092915050565b610f576125df565b73ffffffffffffffffffffffffffffffffffffffff16610f7561365e565b73ffffffffffffffffffffffffffffffffffffffff1614806110035750600260159054906101000a900460ff1680156110025750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fea61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990614d08565b60405180910390fd5b6103e8821115611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90614e05565b60405180910390fd5b6103e88111156110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c390614e6d565b60405180910390fd5b6103e881836110db9190614eb8565b111561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390614f35565b60405180910390fd5b81600881905550806009819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1828260405161115b929190614f53565b60405180910390a15050565b60085481565b6111756125df565b73ffffffffffffffffffffffffffffffffffffffff1661119361365e565b73ffffffffffffffffffffffffffffffffffffffff1614806112215750600260159054906101000a900460ff1680156112205750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661120861365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790614d08565b60405180910390fd5b6112686125df565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156112f15750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790614d9d565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac826040516113ca9190614a96565b60405180910390a25050565b5f600260159054906101000a900460ff16905090565b5f6012600a6113fb91906150a9565b6305f5e10061140a91906150f3565b905090565b5f611418613828565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61145f61365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d5906151a4565b60405180910390fd5b6114e9858585613872565b611506856114f561365e565b858461150191906151c2565b613665565b60019150509392505050565b61151a6125df565b73ffffffffffffffffffffffffffffffffffffffff1661153861365e565b73ffffffffffffffffffffffffffffffffffffffff1614806115c65750600260159054906101000a900460ff1680156115c55750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115ad61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90614d08565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f61170261167161365e565b848460045f61167e61365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546116fd9190614eb8565b613665565b6001905092915050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6117666125df565b73ffffffffffffffffffffffffffffffffffffffff1661178461365e565b73ffffffffffffffffffffffffffffffffffffffff1614806118125750600260159054906101000a900460ff1680156118115750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f961365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184890614d08565b60405180910390fd5b6118596142f8565b565b600f5f9054906101000a900460ff1681565b60075f61187861365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f49061523f565b60405180910390fd5b6119078282614359565b5050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600c5f9054906101000a900460ff168015611987575061012c600d546119849190614eb8565b42105b905090565b5f60025f9054906101000a900460ff16905090565b6119a96125df565b73ffffffffffffffffffffffffffffffffffffffff166119c761365e565b73ffffffffffffffffffffffffffffffffffffffff161480611a555750600260159054906101000a900460ff168015611a545750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a3c61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8b90614d08565b60405180910390fd5b5f5b83839050811015611c33575f73ffffffffffffffffffffffffffffffffffffffff16848483818110611acb57611aca614d26565b5b9050602002016020810190611ae09190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1603611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d906152a7565b60405180910390fd5b8160075f868685818110611b4d57611b4c614d26565b5b9050602002016020810190611b629190614bd7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110611bc457611bc3614d26565b5b9050602002016020810190611bd99190614bd7565b73ffffffffffffffffffffffffffffffffffffffff167f7bfed9e73cc01c459d482800942a9eef9046d01f68c4881d389495df294d10ca83604051611c1e9190614a96565b60405180910390a28080600101915050611a96565b50505050565b60095481565b611c476125df565b73ffffffffffffffffffffffffffffffffffffffff16611c6561365e565b73ffffffffffffffffffffffffffffffffffffffff161480611cf35750600260159054906101000a900460ff168015611cf25750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cda61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990614d08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d979061530f565b60405180910390fd5b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611f5c614483565b611f655f614501565b565b611f6f6125df565b73ffffffffffffffffffffffffffffffffffffffff16611f8d61365e565b73ffffffffffffffffffffffffffffffffffffffff16148061201b5750600260159054906101000a900460ff16801561201a5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661200261365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b61205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190614d08565b60405180910390fd5b5f6008819055505f6009819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a15f8060405161209992919061536f565b60405180910390a1565b6120ab6125df565b73ffffffffffffffffffffffffffffffffffffffff166120c961365e565b73ffffffffffffffffffffffffffffffffffffffff1614806121575750600260159054906101000a900460ff1680156121565750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661213e61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218d90614d08565b60405180910390fd5b6012600a6121a491906150a9565b6305f5e1006121b391906150f3565b600a819055506012600a6121c791906150a9565b6305f5e1006121d691906150f3565b600b819055507f4d4981437d0211f9e6843eb024d9ada1fa3a99514d4343d4aece106dd11524bb6012600a61220b91906150a9565b6305f5e10061221a91906150f3565b6012600a61222891906150a9565b6305f5e10061223791906150f3565b604051612245929190614f53565b60405180910390a1565b6122576125df565b73ffffffffffffffffffffffffffffffffffffffff1661227561365e565b73ffffffffffffffffffffffffffffffffffffffff1614806123035750600260159054906101000a900460ff1680156123025750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122ea61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233990614d08565b60405180910390fd5b80600260156101000a81548160ff0219169083151502179055507fa0e11b44261a4f21ec6042da14d400f3e041356e7e2d08d68c5cb447bda465a58160405161238b9190614a96565b60405180910390a150565b61239e6125df565b73ffffffffffffffffffffffffffffffffffffffff166123bc61365e565b73ffffffffffffffffffffffffffffffffffffffff16148061244a5750600260159054906101000a900460ff1680156124495750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661243161365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248090614d08565b60405180910390fd5b80600c5f6101000a81548160ff0219169083151502179055507f08cef7527343893f39f57ac897f7c0cc69a0aaff38f01ea8630cc523ad2dd737816040516124d19190614a96565b60405180910390a150565b6124e46125df565b73ffffffffffffffffffffffffffffffffffffffff1661250261365e565b73ffffffffffffffffffffffffffffffffffffffff1614806125905750600260159054906101000a900460ff16801561258f5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661257761365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b6125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c690614d08565b60405180910390fd5b6125d76145c2565b565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f61261161365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d9061523f565b60405180910390fd5b6126a08282614624565b5050565b60606040518060400160405280600481526020017f4e49464900000000000000000000000000000000000000000000000000000000815250905090565b5f60075f6126ed61365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127699061523f565b60405180910390fd5b61277d848484613872565b600190509392505050565b5f8060045f61279561365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690615406565b60405180910390fd5b61286c61285a61365e565b85858461286791906151c2565b613665565b600191505092915050565b61287f6125df565b73ffffffffffffffffffffffffffffffffffffffff1661289d61365e565b73ffffffffffffffffffffffffffffffffffffffff16148061292b5750600260159054906101000a900460ff16801561292a5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661291261365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b61296a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296190614d08565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf9061546e565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612a3592919061548c565b6020604051808303815f875af1158015612a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7591906154c7565b508173ffffffffffffffffffffffffffffffffffffffff167f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969582604051612abc9190614afc565b60405180910390a25050565b5f612ad1613828565b612ae3612adc61365e565b8484613872565b6001905092915050565b600b5481565b612afb6125df565b73ffffffffffffffffffffffffffffffffffffffff16612b1961365e565b73ffffffffffffffffffffffffffffffffffffffff161480612ba75750600260159054906101000a900460ff168015612ba65750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b8e61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bdd90614d08565b60405180910390fd5b620186a06012600a612bf891906150a9565b6305f5e100612c0791906150f3565b612c11919061551f565b811015612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90615599565b60405180910390fd5b60646012600a612c6391906150a9565b6305f5e100612c7291906150f3565b612c7c919061551f565b811115612cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb590615601565b60405180910390fd5b8060108190555050565b6103e881565b612cd66125df565b73ffffffffffffffffffffffffffffffffffffffff16612cf461365e565b73ffffffffffffffffffffffffffffffffffffffff161480612d825750600260159054906101000a900460ff168015612d815750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612d6961365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db890614d08565b60405180910390fd5b6103e86012600a612dd291906150a9565b6305f5e100612de191906150f3565b612deb919061551f565b821015612e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2490615669565b60405180910390fd5b60646012600a612e3d91906150a9565b6305f5e100612e4c91906150f3565b612e56919061551f565b811015612e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8f906156d1565b60405180910390fd5b81600a8190555080600b819055507f4d4981437d0211f9e6843eb024d9ada1fa3a99514d4343d4aece106dd11524bb8282604051612ed7929190614f53565b60405180910390a15050565b612eeb6125df565b73ffffffffffffffffffffffffffffffffffffffff16612f0961365e565b73ffffffffffffffffffffffffffffffffffffffff161480612f975750600260159054906101000a900460ff168015612f965750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f7e61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b612fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcd90614d08565b60405180910390fd5b80600f5f6101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161301e9190614a96565b60405180910390a150565b6130316125df565b73ffffffffffffffffffffffffffffffffffffffff1661304f61365e565b73ffffffffffffffffffffffffffffffffffffffff1614806130dd5750600260159054906101000a900460ff1680156130dc5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130c461365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b61311c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311390614d08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361318a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613181906152a7565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f7bfed9e73cc01c459d482800942a9eef9046d01f68c4881d389495df294d10ca826040516132249190614a96565b60405180910390a25050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b5f600c5f9054906101000a900460ff166132d4575f905061334d565b5f600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050601e816133229190614eb8565b4210613331575f91505061334d565b42601e8261333f9190614eb8565b61334991906151c2565b9150505b919050565b5f6009546008546133639190614eb8565b905090565b5f6103e8905090565b6133796125df565b73ffffffffffffffffffffffffffffffffffffffff1661339761365e565b73ffffffffffffffffffffffffffffffffffffffff1614806134255750600260159054906101000a900460ff1680156134245750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661340c61365e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b613464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345b90614d08565b60405180910390fd5b5f4790505f81116134aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a190615739565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561350f573d5f803e3d5ffd5b505f73ffffffffffffffffffffffffffffffffffffffff167f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695826040516135569190614afc565b60405180910390a250565b613569614483565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ce906157c7565b60405180910390fd5b6135e081614501565b50565b5f600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ca9061582f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373890615897565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161381b9190614afc565b60405180910390a3505050565b61383061198c565b15613870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613867906158ff565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138d79061598d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361394e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613945906159f5565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156139ec575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2290615a5d565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015613aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa290615aeb565b60405180910390fd5b613ab36125df565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613b3c5750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613b7b5750613b4b6125df565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613bd55750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613ce157600a54811115613c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c1690615b79565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613ce057600b548160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c9e9190614eb8565b1115613cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd690615c07565b60405180910390fd5b5b5b600c5f9054906101000a900460ff168015613d0a575061012c600d54613d079190614eb8565b42105b15613f0e57613d176125df565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613da05750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613ddf5750613daf6125df565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613e395750600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613f0d57601e600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613e889190614eb8565b421015613eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec190615c6f565b60405180910390fd5b42600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613fad575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b9050808015613fc957505f6008541180613fc857505f600954115b5b156141e6575f600954600854613fdf9190614eb8565b90505f6127108285613ff191906150f3565b613ffb919061551f565b90508360035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461404991906151c2565b92505081905550808461405c91906151c2565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546140a79190614eb8565b925050819055508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546140fa9190614eb8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838761415c91906151c2565b6040516141699190614afc565b60405180910390a35f8111156141df573073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141d69190614afc565b60405180910390a35b50506142f2565b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461423291906151c2565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546142859190614eb8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142e99190614afc565b60405180910390a35b50505050565b6143006147ce565b5f60025f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61434261365e565b60405161434f9190614c3c565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036143c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143be90615cd7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546144139190614eb8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144779190614afc565b60405180910390a35050565b61448b61365e565b73ffffffffffffffffffffffffffffffffffffffff166144a96125df565b73ffffffffffffffffffffffffffffffffffffffff16146144ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144f690615d3f565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6145ca613828565b600160025f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861460d61365e565b60405161461a9190614c3c565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161468990615da7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015614712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161470990615e35565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461475e91906151c2565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147c29190614afc565b60405180910390a35050565b6147d661198c565b614815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161480c90615e9d565b60405180910390fd5b565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126148405761483f61481f565b5b8235905067ffffffffffffffff81111561485d5761485c614823565b5b60208301915083602082028301111561487957614878614827565b5b9250929050565b5f8115159050919050565b61489481614880565b811461489e575f80fd5b50565b5f813590506148af8161488b565b92915050565b5f805f604084860312156148cc576148cb614817565b5b5f84013567ffffffffffffffff8111156148e9576148e861481b565b5b6148f58682870161482b565b93509350506020614908868287016148a1565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561494957808201518184015260208101905061492e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61496e82614912565b614978818561491c565b935061498881856020860161492c565b61499181614954565b840191505092915050565b5f6020820190508181035f8301526149b48184614964565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6149e5826149bc565b9050919050565b6149f5816149db565b81146149ff575f80fd5b50565b5f81359050614a10816149ec565b92915050565b5f819050919050565b614a2881614a16565b8114614a32575f80fd5b50565b5f81359050614a4381614a1f565b92915050565b5f8060408385031215614a5f57614a5e614817565b5b5f614a6c85828601614a02565b9250506020614a7d85828601614a35565b9150509250929050565b614a9081614880565b82525050565b5f602082019050614aa95f830184614a87565b92915050565b5f8060408385031215614ac557614ac4614817565b5b5f614ad285828601614a35565b9250506020614ae385828601614a35565b9150509250929050565b614af681614a16565b82525050565b5f602082019050614b0f5f830184614aed565b92915050565b5f8060408385031215614b2b57614b2a614817565b5b5f614b3885828601614a02565b9250506020614b49858286016148a1565b9150509250929050565b5f805f60608486031215614b6a57614b69614817565b5b5f614b7786828701614a02565b9350506020614b8886828701614a02565b9250506040614b9986828701614a35565b9150509250925092565b5f60ff82169050919050565b614bb881614ba3565b82525050565b5f602082019050614bd15f830184614baf565b92915050565b5f60208284031215614bec57614beb614817565b5b5f614bf984828501614a02565b91505092915050565b5f60208284031215614c1757614c16614817565b5b5f614c24848285016148a1565b91505092915050565b614c36816149db565b82525050565b5f602082019050614c4f5f830184614c2d565b92915050565b5f60208284031215614c6a57614c69614817565b5b5f614c7784828501614a35565b91505092915050565b5f8060408385031215614c9657614c95614817565b5b5f614ca385828601614a02565b9250506020614cb485828601614a02565b9150509250929050565b7f43616c6c6572206973206e6f74206f776e6572206f722061646d696e000000005f82015250565b5f614cf2601c8361491c565b9150614cfd82614cbe565b602082019050919050565b5f6020820190508181035f830152614d1f81614ce6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f43616e6e6f7420626c61636b6c697374206f776e6572206f722061646d696e005f82015250565b5f614d87601f8361491c565b9150614d9282614d53565b602082019050919050565b5f6020820190508181035f830152614db481614d7b565b9050919050565b7f546178206665652065786365656473206d6178696d756d0000000000000000005f82015250565b5f614def60178361491c565b9150614dfa82614dbb565b602082019050919050565b5f6020820190508181035f830152614e1c81614de3565b9050919050565b7f4c6971756964697479206665652065786365656473206d6178696d756d0000005f82015250565b5f614e57601d8361491c565b9150614e6282614e23565b602082019050919050565b5f6020820190508181035f830152614e8481614e4b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614ec282614a16565b9150614ecd83614a16565b9250828201905080821115614ee557614ee4614e8b565b5b92915050565b7f546f74616c206665657320657863656564206d6178696d756d000000000000005f82015250565b5f614f1f60198361491c565b9150614f2a82614eeb565b602082019050919050565b5f6020820190508181035f830152614f4c81614f13565b9050919050565b5f604082019050614f665f830185614aed565b614f736020830184614aed565b9392505050565b5f8160011c9050919050565b5f808291508390505b6001851115614fcf57808604811115614fab57614faa614e8b565b5b6001851615614fba5780820291505b8081029050614fc885614f7a565b9450614f8f565b94509492505050565b5f82614fe757600190506150a2565b81614ff4575f90506150a2565b816001811461500a576002811461501457615043565b60019150506150a2565b60ff84111561502657615025614e8b565b5b8360020a91508482111561503d5761503c614e8b565b5b506150a2565b5060208310610133831016604e8410600b84101617156150785782820a90508381111561507357615072614e8b565b5b6150a2565b6150858484846001614f86565b9250905081840481111561509c5761509b614e8b565b5b81810290505b9392505050565b5f6150b382614a16565b91506150be83614ba3565b92506150eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614fd8565b905092915050565b5f6150fd82614a16565b915061510883614a16565b925082820261511681614a16565b9150828204841483151761512d5761512c614e8b565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61518e60288361491c565b915061519982615134565b604082019050919050565b5f6020820190508181035f8301526151bb81615182565b9050919050565b5f6151cc82614a16565b91506151d783614a16565b92508282039050818111156151ef576151ee614e8b565b5b92915050565b7f4e6f7420617574686f72697a6564206d6f64756c6500000000000000000000005f82015250565b5f61522960158361491c565b9150615234826151f5565b602082019050919050565b5f6020820190508181035f8301526152568161521d565b9050919050565b7f4d6f64756c652063616e6e6f74206265207a65726f20616464726573730000005f82015250565b5f615291601d8361491c565b915061529c8261525d565b602082019050919050565b5f6020820190508181035f8301526152be81615285565b9050919050565b7f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000005f82015250565b5f6152f9601c8361491c565b9150615304826152c5565b602082019050919050565b5f6020820190508181035f830152615326816152ed565b9050919050565b5f819050919050565b5f819050919050565b5f61535961535461534f8461532d565b615336565b614a16565b9050919050565b6153698161533f565b82525050565b5f6040820190506153825f830185615360565b61538f6020830184615360565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6153f060258361491c565b91506153fb82615396565b604082019050919050565b5f6020820190508181035f83015261541d816153e4565b9050919050565b7f43616e6e6f74207769746864726177206f776e20746f6b656e730000000000005f82015250565b5f615458601a8361491c565b915061546382615424565b602082019050919050565b5f6020820190508181035f8301526154858161544c565b9050919050565b5f60408201905061549f5f830185614c2d565b6154ac6020830184614aed565b9392505050565b5f815190506154c18161488b565b92915050565b5f602082840312156154dc576154db614817565b5b5f6154e9848285016154b3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61552982614a16565b915061553483614a16565b925082615544576155436154f2565b5b828204905092915050565b7f416d6f756e7420746f6f20736d616c6c000000000000000000000000000000005f82015250565b5f61558360108361491c565b915061558e8261554f565b602082019050919050565b5f6020820190508181035f8301526155b081615577565b9050919050565b7f416d6f756e7420746f6f206c61726765000000000000000000000000000000005f82015250565b5f6155eb60108361491c565b91506155f6826155b7565b602082019050919050565b5f6020820190508181035f830152615618816155df565b9050919050565b7f4d617820747820746f6f206c6f770000000000000000000000000000000000005f82015250565b5f615653600e8361491c565b915061565e8261561f565b602082019050919050565b5f6020820190508181035f83015261568081615647565b9050919050565b7f4d61782077616c6c657420746f6f206c6f7700000000000000000000000000005f82015250565b5f6156bb60128361491c565b91506156c682615687565b602082019050919050565b5f6020820190508181035f8301526156e8816156af565b9050919050565b7f4e6f20424e4220746f20776974686472617700000000000000000000000000005f82015250565b5f61572360128361491c565b915061572e826156ef565b602082019050919050565b5f6020820190508181035f83015261575081615717565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6157b160268361491c565b91506157bc82615757565b604082019050919050565b5f6020820190508181035f8301526157de816157a5565b9050919050565b7f45524332303a20617070726f76652066726f6d207a65726f20616464726573735f82015250565b5f61581960208361491c565b9150615824826157e5565b602082019050919050565b5f6020820190508181035f8301526158468161580d565b9050919050565b7f45524332303a20617070726f766520746f207a65726f206164647265737300005f82015250565b5f615881601e8361491c565b915061588c8261584d565b602082019050919050565b5f6020820190508181035f8301526158ae81615875565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f6158e960108361491c565b91506158f4826158b5565b602082019050919050565b5f6020820190508181035f830152615916816158dd565b9050919050565b7f45524332303a207472616e736665722066726f6d207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61597760218361491c565b91506159828261591d565b604082019050919050565b5f6020820190508181035f8301526159a48161596b565b9050919050565b7f45524332303a207472616e7366657220746f207a65726f2061646472657373005f82015250565b5f6159df601f8361491c565b91506159ea826159ab565b602082019050919050565b5f6020820190508181035f830152615a0c816159d3565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f615a4760138361491c565b9150615a5282615a13565b602082019050919050565b5f6020820190508181035f830152615a7481615a3b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615ad560268361491c565b9150615ae082615a7b565b604082019050919050565b5f6020820190508181035f830152615b0281615ac9565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d617820747820615f8201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b5f615b6360258361491c565b9150615b6e82615b09565b604082019050919050565b5f6020820190508181035f830152615b9081615b57565b9050919050565b7f526563697069656e742065786365656473206d61782077616c6c657420616d6f5f8201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b5f615bf160238361491c565b9150615bfc82615b97565b604082019050919050565b5f6020820190508181035f830152615c1e81615be5565b9050919050565b7f416e74692d626f743a20636f6f6c646f776e20706572696f64206163746976655f82015250565b5f615c5960208361491c565b9150615c6482615c25565b602082019050919050565b5f6020820190508181035f830152615c8681615c4d565b9050919050565b7f45524332303a206d696e7420746f207a65726f206164647265737300000000005f82015250565b5f615cc1601b8361491c565b9150615ccc82615c8d565b602082019050919050565b5f6020820190508181035f830152615cee81615cb5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f615d2960208361491c565b9150615d3482615cf5565b602082019050919050565b5f6020820190508181035f830152615d5681615d1d565b9050919050565b7f45524332303a206275726e2066726f6d207a65726f20616464726573730000005f82015250565b5f615d91601d8361491c565b9150615d9c82615d5d565b602082019050919050565b5f6020820190508181035f830152615dbe81615d85565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f615e1f60228361491c565b9150615e2a82615dc5565b604082019050919050565b5f6020820190508181035f830152615e4c81615e13565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f615e8760148361491c565b9150615e9282615e53565b602082019050919050565b5f6020820190508181035f830152615eb481615e7b565b905091905056fea26469706673582212205f99b9276c164945736cca19326e2406cd4d0c28ee8f62ca129b763091f7962464736f6c63430008180033

Deployed Bytecode Sourcemap

3796:19559:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11931:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16176:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18661:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9636:457;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4874:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11438:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17019:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16492:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18834:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12521:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16388:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19290:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17125:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12876:74;;;;;;;;;;;;;:::i;:::-;;5514:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15575:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17262:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17771:151;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3201:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9036:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4931:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7697:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16604:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1866:103;;;;;;;;;;;;;:::i;:::-;;10168:155;;;;;;;;;;;;;:::i;:::-;;11036:193;;;;;;;;;;;;;:::i;:::-;;8249:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13089:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12733:70;;;;;;;;;;;;;:::i;:::-;;5017:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1623:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15849:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16280:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15242:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19509:367;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14168:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18468:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5094:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13698:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4806:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10525:437;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13394:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8584:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16735:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5599:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17934:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17532:124;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17668:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14513:267;;;;;;;;;;;;;:::i;:::-;;1981:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16926:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17402:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11931:396;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;12043:9:::1;12038:282;12062:8;;:15;;12058:1;:19;12038:282;;;12122:7;:5;:7::i;:::-;12107:22;;:8;;12116:1;12107:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:22;;;;:47;;;;;12148:6;;;;;;;;;;;12133:21;;:8;;12142:1;12133:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:21;;;;12107:47;12099:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12235:11;12205:14;:27;12220:8;;12229:1;12220:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12205:27;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12283:8;;12292:1;12283:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12266:42;;;12296:11;12266:42;;;;;;:::i;:::-;;;;;;;;12079:3;;;;;;;12038:282;;;;11931:396:::0;;;:::o;16176:92::-;16222:13;16255:5;;;;;;;;;;;;;;;;;16248:12;;16176:92;:::o;18661:161::-;18736:4;18753:39;18762:12;:10;:12::i;:::-;18776:7;18785:6;18753:8;:39::i;:::-;18810:4;18803:11;;18661:161;;;;:::o;9636:457::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;4840:4:::1;9738:7;:18;;9730:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4840:4;9803:13;:24;;9795:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;4840:4;9890:13;9880:7;:23;;;;:::i;:::-;:34;;9872:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9981:7;9965:13;:23;;;;10021:13;9999:19;:35;;;;10050;10062:7;10071:13;10050:35;;;;;;;:::i;:::-;;;;;;;;9636:457:::0;;:::o;4874:32::-;;;;:::o;11438:287::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;11551:7:::1;:5;:7::i;:::-;11540:18;;:7;:18;;;;:39;;;;;11573:6;;;;;;;;;;;11562:17;;:7;:17;;;;11540:39;11532:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;11652:11;11626:14;:23;11641:7;11626:23;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11696:7;11679:38;;;11705:11;11679:38;;;;;;:::i;:::-;;;;;;;;11438:287:::0;;:::o;17019:94::-;17068:4;17092:13;;;;;;;;;;;17085:20;;17019:94;:::o;16492:100::-;16545:7;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;16565:19;;16492:100;:::o;18834:444::-;18946:4;3069:19;:17;:19::i;:::-;18963:24:::1;18990:11;:19;19002:6;18990:19;;;;;;;;;;;;;;;:33;19010:12;:10;:12::i;:::-;18990:33;;;;;;;;;;;;;;;;18963:60;;19062:6;19042:16;:26;;19034:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19134:36;19144:6;19152:9;19163:6;19134:9;:36::i;:::-;19181:57;19190:6;19198:12;:10;:12::i;:::-;19231:6;19212:16;:25;;;;:::i;:::-;19181:8;:57::i;:::-;19266:4;19259:11;;;18834:444:::0;;;;;:::o;12521:141::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;12646:8:::1;12615:19;:28;12635:7;12615:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12521:141:::0;;:::o;16388:92::-;16438:5;4047:2;16456:16;;16388:92;:::o;19290:207::-;19370:4;19387:80;19396:12;:10;:12::i;:::-;19410:7;19456:10;19419:11;:25;19431:12;:10;:12::i;:::-;19419:25;;;;;;;;;;;;;;;:34;19445:7;19419:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;19387:8;:80::i;:::-;19485:4;19478:11;;19290:207;;;;:::o;17125:125::-;17192:4;17216:18;:26;17235:6;17216:26;;;;;;;;;;;;;;;;;;;;;;;;;17209:33;;17125:125;;;:::o;12876:74::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;12932:10:::1;:8;:10::i;:::-;12876:74::o:0;5514:41::-;;;;;;;;;;;;;:::o;15575:114::-;6571:18;:32;6590:12;:10;:12::i;:::-;6571:32;;;;;;;;;;;;;;;;;;;;;;;;;6563:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15664:17:::1;15670:2;15674:6;15664:5;:17::i;:::-;15575:114:::0;;:::o;17262:128::-;17330:4;17354:19;:28;17374:7;17354:28;;;;;;;;;;;;;;;;;;;;;;;;;17347:35;;17262:128;;;:::o;17771:151::-;17821:4;17845:14;;;;;;;;;;;:69;;;;;5326:3;17882:11;;:31;;;;:::i;:::-;17864:15;:49;17845:69;17838:76;;17771:151;:::o;3201:86::-;3248:4;3272:7;;;;;;;;;;;3265:14;;3201:86;:::o;9036:375::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;9153:9:::1;9148:256;9172:7;;:14;;9168:1;:18;9148:256;;;9238:1;9216:24;;:7;;9224:1;9216:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:24;;::::0;9208:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9322:10;9289:18;:30;9308:7;;9316:1;9308:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9289:30;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;9369:7;;9377:1;9369:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9352:40;;;9381:10;9352:40;;;;;;:::i;:::-;;;;;;;;9188:3;;;;;;;9148:256;;;;9036:375:::0;;;:::o;4931:38::-;;;;:::o;7697:420::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;7798:1:::1;7778:22;;:8;:22;;::::0;7770:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7844:21;7868:6;;;;;;;;;;;7844:30;;7894:8;7885:6;;:17;;;;;;;;;;;;;;;;;;7994:5;7957:19;:34;7977:13;7957:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;8042:4;8010:19;:29;8030:8;8010:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;8100:8;8072:37;;8085:13;8072:37;;;;;;;;;;;;7759:358;7697:420:::0;:::o;16604:119::-;16670:7;16697:9;:18;16707:7;16697:18;;;;;;;;;;;;;;;;16690:25;;16604:119;;;:::o;1866:103::-;1578:13;:11;:13::i;:::-;1931:30:::1;1958:1;1931:18;:30::i;:::-;1866:103::o:0;10168:155::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;10247:1:::1;10231:13;:17;;;;10281:1;10259:19;:23;;;;10298:17;10310:1;10313::::0;10298:17:::1;;;;;;;:::i;:::-;;;;;;;;10168:155::o:0;11036:193::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;4047:2:::1;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;11097:11;:26;;;;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;11134:15;:30;;;;11180:41;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;11180:41;;;;;;;:::i;:::-;;;;;;;;11036:193::o:0;8249:150::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;8341:7:::1;8325:13;;:23;;;;;;;;;;;;;;;;;;8364:27;8383:7;8364:27;;;;;;:::i;:::-;;;;;;;;8249:150:::0;:::o;13089:151::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;13182:6:::1;13165:14;;:23;;;;;;;;;;;;;;;;;;13204:28;13225:6;13204:28;;;;;;:::i;:::-;;;;;;;;13089:151:::0;:::o;12733:70::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;12787:8:::1;:6;:8::i;:::-;12733:70::o:0;5017:54::-;;;;:::o;1623:87::-;1669:7;1696:6;;;;;;;;;;;1689:13;;1623:87;:::o;15849:118::-;6571:18;:32;6590:12;:10;:12::i;:::-;6571:32;;;;;;;;;;;;;;;;;;;;;;;;;6563:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15940:19:::1;15946:4;15952:6;15940:5;:19::i;:::-;15849:118:::0;;:::o;16280:96::-;16328:13;16361:7;;;;;;;;;;;;;;;;;16354:14;;16280:96;:::o;15242:179::-;15347:4;6571:18;:32;6590:12;:10;:12::i;:::-;6571:32;;;;;;;;;;;;;;;;;;;;;;;;;6563:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15364:27:::1;15374:4;15380:2;15384:6;15364:9;:27::i;:::-;15409:4;15402:11;;15242:179:::0;;;;;:::o;19509:367::-;19594:4;19611:24;19638:11;:25;19650:12;:10;:12::i;:::-;19638:25;;;;;;;;;;;;;;;:34;19664:7;19638:34;;;;;;;;;;;;;;;;19611:61;;19711:15;19691:16;:35;;19683:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;19779:67;19788:12;:10;:12::i;:::-;19802:7;19830:15;19811:16;:34;;;;:::i;:::-;19779:8;:67::i;:::-;19864:4;19857:11;;;19509:367;;;;:::o;14168:266::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;14293:4:::1;14276:22;;:5;:22;;::::0;14268:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14347:5;14340:22;;;14363:6;;;;;;;;;;;14371;14340:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14412:5;14394:32;;;14419:6;14394:32;;;;;;:::i;:::-;;;;;;;;14168:266:::0;;:::o;18468:181::-;18560:4;3069:19;:17;:19::i;:::-;18577:42:::1;18587:12;:10;:12::i;:::-;18601:9;18612:6;18577:9;:42::i;:::-;18637:4;18630:11;;18468:181:::0;;;;:::o;5094:58::-;;;;:::o;13698:290::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;13815:6:::1;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;13800:21;;;;:::i;:::-;13790:6;:31;;13782:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13904:3;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;13889:18;;;;:::i;:::-;13879:6;:28;;13871:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13974:6;13953:18;:27;;;;13698:290:::0;:::o;4806:38::-;4840:4;4806:38;:::o;10525:437::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;10668:4:::1;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;10653:19;;;;:::i;:::-;10637:12;:35;;10629:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10761:3;4047:2;4110;:13;;;;:::i;:::-;4096:11;:27;;;;:::i;:::-;10746:18;;;;:::i;:::-;10726:16;:38;;10718:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10836:12;10822:11;:26;;;;10877:16;10859:15;:34;;;;10909:45;10923:12;10937:16;10909:45;;;;;;;:::i;:::-;;;;;;;;10525:437:::0;;:::o;13394:177::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;13503:7:::1;13479:21;;:31;;;;;;;;;;;;;;;;;;13526:37;13555:7;13526:37;;;;;;:::i;:::-;;;;;;;;13394:177:::0;:::o;8584:267::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;8705:1:::1;8687:20;;:6;:20;;::::0;8679:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8781:10;8752:18;:26;8771:6;8752:26;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8824:6;8807:36;;;8832:10;8807:36;;;;;;:::i;:::-;;;;;;;;8584:267:::0;;:::o;16735:143::-;16816:7;16843:11;:18;16855:5;16843:18;;;;;;;;;;;;;;;:27;16862:7;16843:27;;;;;;;;;;;;;;;;16836:34;;16735:143;;;;:::o;5599:59::-;;;;:::o;17934:324::-;18004:7;18029:14;;;;;;;;;;;18024:29;;18052:1;18045:8;;;;18024:29;18064:14;18081:20;:29;18102:7;18081:29;;;;;;;;;;;;;;;;18064:46;;5460:2;18144:6;:29;;;;:::i;:::-;18125:15;:48;18121:62;;18182:1;18175:8;;;;;18121:62;18235:15;5460:2;18202:6;:29;;;;:::i;:::-;18201:49;;;;:::i;:::-;18194:56;;;17934:324;;;;:::o;17532:124::-;17586:7;17629:19;;17613:13;;:35;;;;:::i;:::-;17606:42;;17532:124;:::o;17668:91::-;17717:7;4840:4;17737:14;;17668:91;:::o;14513:267::-;6365:7;:5;:7::i;:::-;6349:23;;:12;:10;:12::i;:::-;:23;;;:82;;;;6391:13;;;;;;;;;;;:39;;;;;6424:6;;;;;;;;;;;6408:22;;:12;:10;:12::i;:::-;:22;;;6391:39;6349:82;6327:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;14582:15:::1;14600:21;14582:39;;14650:1;14640:7;:11;14632:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14693:6;;;;;;;;;;;14685:24;;:33;14710:7;14685:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14760:1;14734:38;;;14764:7;14734:38;;;;;;:::i;:::-;;;;;;;;14571:209;14513:267::o:0;1981:201::-;1578:13;:11;:13::i;:::-;2090:1:::1;2070:22;;:8;:22;;::::0;2062:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2146:28;2165:8;2146:18;:28::i;:::-;1981:201:::0;:::o;16926:81::-;16966:7;16993:6;;;;;;;;;;;16986:13;;16926:81;:::o;17402:118::-;17465:4;17489:14;:23;17504:7;17489:23;;;;;;;;;;;;;;;;;;;;;;;;;17482:30;;17402:118;;;:::o;1169:98::-;1222:7;1249:10;1242:17;;1169:98;:::o;22945:328::-;23056:1;23039:19;;:5;:19;;;23031:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23133:1;23114:21;;:7;:21;;;23106:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23211:6;23181:11;:18;23193:5;23181:18;;;;;;;;;;;;;;;:27;23200:7;23181:27;;;;;;;;;;;;;;;:36;;;;23249:7;23233:32;;23242:5;23233:32;;;23258:6;23233:32;;;;;;:::i;:::-;;;;;;;;22945:328;;;:::o;3299:108::-;3370:8;:6;:8::i;:::-;3369:9;3361:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3299:108::o;20089:2274::-;20205:1;20187:20;;:6;:20;;;20179:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20285:1;20264:23;;:9;:23;;;20256:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20343:14;:22;20358:6;20343:22;;;;;;;;;;;;;;;;;;;;;;;;;20342:23;:53;;;;;20370:14;:25;20385:9;20370:25;;;;;;;;;;;;;;;;;;;;;;;;;20369:26;20342:53;20334:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20459:6;20438:9;:17;20448:6;20438:17;;;;;;;;;;;;;;;;:27;;20430:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20568:7;:5;:7::i;:::-;20558:17;;:6;:17;;;;:37;;;;;20589:6;;;;;;;;;;;20579:16;;:6;:16;;;;20558:37;:61;;;;;20612:7;:5;:7::i;:::-;20599:20;;:9;:20;;;;20558:61;:84;;;;;20636:6;;;;;;;;;;;20623:19;;:9;:19;;;;20558:84;20554:379;;;20677:11;;20667:6;:21;;20659:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20784:4;20763:26;;:9;:26;;;20759:163;;20851:15;;20841:6;20818:9;:20;20828:9;20818:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:48;;20810:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20759:163;20554:379;20989:14;;;;;;;;;;;:67;;;;;5326:3;21025:11;;:31;;;;:::i;:::-;21007:15;:49;20989:67;20985:465;;;21087:7;:5;:7::i;:::-;21077:17;;:6;:17;;;;:37;;;;;21108:6;;;;;;;;;;;21098:16;;:6;:16;;;;21077:37;:61;;;;;21131:7;:5;:7::i;:::-;21118:20;;:9;:20;;;;21077:61;:84;;;;;21155:6;;;;;;;;;;;21142:19;;:9;:19;;;;21077:84;21073:366;;;5460:2;21231:20;:28;21252:6;21231:28;;;;;;;;;;;;;;;;:51;;;;:::i;:::-;21212:15;:70;;21182:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;21408:15;21377:20;:28;21398:6;21377:28;;;;;;;;;;;;;;;:46;;;;21073:366;20985:465;21514:12;21530:19;:27;21550:6;21530:27;;;;;;;;;;;;;;;;;;;;;;;;;21529:28;:63;;;;;21562:19;:30;21582:9;21562:30;;;;;;;;;;;;;;;;;;;;;;;;;21561:31;21529:63;21514:78;;21617:7;:57;;;;;21645:1;21629:13;;:17;:44;;;;21672:1;21650:19;;:23;21629:44;21617:57;21613:743;;;21691:23;21733:19;;21717:13;;:35;;;;:::i;:::-;21691:61;;21767:17;21816:5;21797:15;21788:6;:24;;;;:::i;:::-;21787:34;;;;:::i;:::-;21767:54;;21871:6;21850:9;:17;21860:6;21850:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;21926:9;21917:6;:18;;;;:::i;:::-;21892:9;:20;21902:9;21892:20;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;21979:9;21951;:24;21969:4;21951:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;22039:9;22022:47;;22031:6;22022:47;;;22059:9;22050:6;:18;;;;:::i;:::-;22022:47;;;;;;:::i;:::-;;;;;;;;22100:1;22088:9;:13;22084:101;;;22152:4;22127:42;;22136:6;22127:42;;;22159:9;22127:42;;;;;;:::i;:::-;;;;;;;;22084:101;21676:520;;21613:743;;;22238:6;22217:9;:17;22227:6;22217:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;22283:6;22259:9;:20;22269:9;22259:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;22326:9;22309:35;;22318:6;22309:35;;;22337:6;22309:35;;;;;;:::i;:::-;;;;;;;;21613:743;20168:2195;20089:2274;;;:::o;3669:120::-;3153:16;:14;:16::i;:::-;3738:5:::1;3728:7;;:15;;;;;;;;;;;;;;;;;;3759:22;3768:12;:10;:12::i;:::-;3759:22;;;;;;:::i;:::-;;;;;;;;3669:120::o:0;22375:229::-;22470:1;22451:21;;:7;:21;;;22443:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22537:6;22515:9;:18;22525:7;22515:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;22580:7;22559:37;;22576:1;22559:37;;;22589:6;22559:37;;;;;;:::i;:::-;;;;;;;;22375:229;;:::o;1722:132::-;1797:12;:10;:12::i;:::-;1786:23;;:7;:5;:7::i;:::-;:23;;;1778:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1722:132::o;2194:191::-;2268:16;2287:6;;;;;;;;;;;2268:25;;2313:8;2304:6;;:17;;;;;;;;;;;;;;;;;;2368:8;2337:40;;2358:8;2337:40;;;;;;;;;;;;2257:128;2194:191;:::o;3539:118::-;3069:19;:17;:19::i;:::-;3609:4:::1;3599:7;;:14;;;;;;;;;;;;;;;;;;3629:20;3636:12;:10;:12::i;:::-;3629:20;;;;;;:::i;:::-;;;;;;;;3539:118::o:0;22616:317::-;22711:1;22692:21;;:7;:21;;;22684:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22788:6;22766:9;:18;22776:7;22766:18;;;;;;;;;;;;;;;;:28;;22758:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22866:6;22844:9;:18;22854:7;22844:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;22914:1;22888:37;;22897:7;22888:37;;;22918:6;22888:37;;;;;;:::i;:::-;;;;;;;;22616:317;;:::o;3419:108::-;3486:8;:6;:8::i;:::-;3478:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;3419:108::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:99::-;2407:6;2441:5;2435:12;2425:22;;2355:99;;;:::o;2460:169::-;2544:11;2578:6;2573:3;2566:19;2618:4;2613:3;2609:14;2594:29;;2460:169;;;;:::o;2635:246::-;2716:1;2726:113;2740:6;2737:1;2734:13;2726:113;;;2825:1;2820:3;2816:11;2810:18;2806:1;2801:3;2797:11;2790:39;2762:2;2759:1;2755:10;2750:15;;2726:113;;;2873:1;2864:6;2859:3;2855:16;2848:27;2697:184;2635:246;;;:::o;2887:102::-;2928:6;2979:2;2975:7;2970:2;2963:5;2959:14;2955:28;2945:38;;2887:102;;;:::o;2995:377::-;3083:3;3111:39;3144:5;3111:39;:::i;:::-;3166:71;3230:6;3225:3;3166:71;:::i;:::-;3159:78;;3246:65;3304:6;3299:3;3292:4;3285:5;3281:16;3246:65;:::i;:::-;3336:29;3358:6;3336:29;:::i;:::-;3331:3;3327:39;3320:46;;3087:285;2995:377;;;;:::o;3378:313::-;3491:4;3529:2;3518:9;3514:18;3506:26;;3578:9;3572:4;3568:20;3564:1;3553:9;3549:17;3542:47;3606:78;3679:4;3670:6;3606:78;:::i;:::-;3598:86;;3378:313;;;;:::o;3697:126::-;3734:7;3774:42;3767:5;3763:54;3752:65;;3697:126;;;:::o;3829:96::-;3866:7;3895:24;3913:5;3895:24;:::i;:::-;3884:35;;3829:96;;;:::o;3931:122::-;4004:24;4022:5;4004:24;:::i;:::-;3997:5;3994:35;3984:63;;4043:1;4040;4033:12;3984:63;3931:122;:::o;4059:139::-;4105:5;4143:6;4130:20;4121:29;;4159:33;4186:5;4159:33;:::i;:::-;4059:139;;;;:::o;4204:77::-;4241:7;4270:5;4259:16;;4204:77;;;:::o;4287:122::-;4360:24;4378:5;4360:24;:::i;:::-;4353:5;4350:35;4340:63;;4399:1;4396;4389:12;4340:63;4287:122;:::o;4415:139::-;4461:5;4499:6;4486:20;4477:29;;4515:33;4542:5;4515:33;:::i;:::-;4415:139;;;;:::o;4560:474::-;4628:6;4636;4685:2;4673:9;4664:7;4660:23;4656:32;4653:119;;;4691:79;;:::i;:::-;4653:119;4811:1;4836:53;4881:7;4872:6;4861:9;4857:22;4836:53;:::i;:::-;4826:63;;4782:117;4938:2;4964:53;5009:7;5000:6;4989:9;4985:22;4964:53;:::i;:::-;4954:63;;4909:118;4560:474;;;;;:::o;5040:109::-;5121:21;5136:5;5121:21;:::i;:::-;5116:3;5109:34;5040:109;;:::o;5155:210::-;5242:4;5280:2;5269:9;5265:18;5257:26;;5293:65;5355:1;5344:9;5340:17;5331:6;5293:65;:::i;:::-;5155:210;;;;:::o;5371:474::-;5439:6;5447;5496:2;5484:9;5475:7;5471:23;5467:32;5464:119;;;5502:79;;:::i;:::-;5464:119;5622:1;5647:53;5692:7;5683:6;5672:9;5668:22;5647:53;:::i;:::-;5637:63;;5593:117;5749:2;5775:53;5820:7;5811:6;5800:9;5796:22;5775:53;:::i;:::-;5765:63;;5720:118;5371:474;;;;;:::o;5851:118::-;5938:24;5956:5;5938:24;:::i;:::-;5933:3;5926:37;5851:118;;:::o;5975:222::-;6068:4;6106:2;6095:9;6091:18;6083:26;;6119:71;6187:1;6176:9;6172:17;6163:6;6119:71;:::i;:::-;5975:222;;;;:::o;6203:468::-;6268:6;6276;6325:2;6313:9;6304:7;6300:23;6296:32;6293:119;;;6331:79;;:::i;:::-;6293:119;6451:1;6476:53;6521:7;6512:6;6501:9;6497:22;6476:53;:::i;:::-;6466:63;;6422:117;6578:2;6604:50;6646:7;6637:6;6626:9;6622:22;6604:50;:::i;:::-;6594:60;;6549:115;6203:468;;;;;:::o;6677:619::-;6754:6;6762;6770;6819:2;6807:9;6798:7;6794:23;6790:32;6787:119;;;6825:79;;:::i;:::-;6787:119;6945:1;6970:53;7015:7;7006:6;6995:9;6991:22;6970:53;:::i;:::-;6960:63;;6916:117;7072:2;7098:53;7143:7;7134:6;7123:9;7119:22;7098:53;:::i;:::-;7088:63;;7043:118;7200:2;7226:53;7271:7;7262:6;7251:9;7247:22;7226:53;:::i;:::-;7216:63;;7171:118;6677:619;;;;;:::o;7302:86::-;7337:7;7377:4;7370:5;7366:16;7355:27;;7302:86;;;:::o;7394:112::-;7477:22;7493:5;7477:22;:::i;:::-;7472:3;7465:35;7394:112;;:::o;7512:214::-;7601:4;7639:2;7628:9;7624:18;7616:26;;7652:67;7716:1;7705:9;7701:17;7692:6;7652:67;:::i;:::-;7512:214;;;;:::o;7732:329::-;7791:6;7840:2;7828:9;7819:7;7815:23;7811:32;7808:119;;;7846:79;;:::i;:::-;7808:119;7966:1;7991:53;8036:7;8027:6;8016:9;8012:22;7991:53;:::i;:::-;7981:63;;7937:117;7732:329;;;;:::o;8067:323::-;8123:6;8172:2;8160:9;8151:7;8147:23;8143:32;8140:119;;;8178:79;;:::i;:::-;8140:119;8298:1;8323:50;8365:7;8356:6;8345:9;8341:22;8323:50;:::i;:::-;8313:60;;8269:114;8067:323;;;;:::o;8396:118::-;8483:24;8501:5;8483:24;:::i;:::-;8478:3;8471:37;8396:118;;:::o;8520:222::-;8613:4;8651:2;8640:9;8636:18;8628:26;;8664:71;8732:1;8721:9;8717:17;8708:6;8664:71;:::i;:::-;8520:222;;;;:::o;8748:329::-;8807:6;8856:2;8844:9;8835:7;8831:23;8827:32;8824:119;;;8862:79;;:::i;:::-;8824:119;8982:1;9007:53;9052:7;9043:6;9032:9;9028:22;9007:53;:::i;:::-;8997:63;;8953:117;8748:329;;;;:::o;9083:474::-;9151:6;9159;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9334:1;9359:53;9404:7;9395:6;9384:9;9380:22;9359:53;:::i;:::-;9349:63;;9305:117;9461:2;9487:53;9532:7;9523:6;9512:9;9508:22;9487:53;:::i;:::-;9477:63;;9432:118;9083:474;;;;;:::o;9563:178::-;9703:30;9699:1;9691:6;9687:14;9680:54;9563:178;:::o;9747:366::-;9889:3;9910:67;9974:2;9969:3;9910:67;:::i;:::-;9903:74;;9986:93;10075:3;9986:93;:::i;:::-;10104:2;10099:3;10095:12;10088:19;;9747:366;;;:::o;10119:419::-;10285:4;10323:2;10312:9;10308:18;10300:26;;10372:9;10366:4;10362:20;10358:1;10347:9;10343:17;10336:47;10400:131;10526:4;10400:131;:::i;:::-;10392:139;;10119:419;;;:::o;10544:180::-;10592:77;10589:1;10582:88;10689:4;10686:1;10679:15;10713:4;10710:1;10703:15;10730:181;10870:33;10866:1;10858:6;10854:14;10847:57;10730:181;:::o;10917:366::-;11059:3;11080:67;11144:2;11139:3;11080:67;:::i;:::-;11073:74;;11156:93;11245:3;11156:93;:::i;:::-;11274:2;11269:3;11265:12;11258:19;;10917:366;;;:::o;11289:419::-;11455:4;11493:2;11482:9;11478:18;11470:26;;11542:9;11536:4;11532:20;11528:1;11517:9;11513:17;11506:47;11570:131;11696:4;11570:131;:::i;:::-;11562:139;;11289:419;;;:::o;11714:173::-;11854:25;11850:1;11842:6;11838:14;11831:49;11714:173;:::o;11893:366::-;12035:3;12056:67;12120:2;12115:3;12056:67;:::i;:::-;12049:74;;12132:93;12221:3;12132:93;:::i;:::-;12250:2;12245:3;12241:12;12234:19;;11893:366;;;:::o;12265:419::-;12431:4;12469:2;12458:9;12454:18;12446:26;;12518:9;12512:4;12508:20;12504:1;12493:9;12489:17;12482:47;12546:131;12672:4;12546:131;:::i;:::-;12538:139;;12265:419;;;:::o;12690:179::-;12830:31;12826:1;12818:6;12814:14;12807:55;12690:179;:::o;12875:366::-;13017:3;13038:67;13102:2;13097:3;13038:67;:::i;:::-;13031:74;;13114:93;13203:3;13114:93;:::i;:::-;13232:2;13227:3;13223:12;13216:19;;12875:366;;;:::o;13247:419::-;13413:4;13451:2;13440:9;13436:18;13428:26;;13500:9;13494:4;13490:20;13486:1;13475:9;13471:17;13464:47;13528:131;13654:4;13528:131;:::i;:::-;13520:139;;13247:419;;;:::o;13672:180::-;13720:77;13717:1;13710:88;13817:4;13814:1;13807:15;13841:4;13838:1;13831:15;13858:191;13898:3;13917:20;13935:1;13917:20;:::i;:::-;13912:25;;13951:20;13969:1;13951:20;:::i;:::-;13946:25;;13994:1;13991;13987:9;13980:16;;14015:3;14012:1;14009:10;14006:36;;;14022:18;;:::i;:::-;14006:36;13858:191;;;;:::o;14055:175::-;14195:27;14191:1;14183:6;14179:14;14172:51;14055:175;:::o;14236:366::-;14378:3;14399:67;14463:2;14458:3;14399:67;:::i;:::-;14392:74;;14475:93;14564:3;14475:93;:::i;:::-;14593:2;14588:3;14584:12;14577:19;;14236:366;;;:::o;14608:419::-;14774:4;14812:2;14801:9;14797:18;14789:26;;14861:9;14855:4;14851:20;14847:1;14836:9;14832:17;14825:47;14889:131;15015:4;14889:131;:::i;:::-;14881:139;;14608:419;;;:::o;15033:332::-;15154:4;15192:2;15181:9;15177:18;15169:26;;15205:71;15273:1;15262:9;15258:17;15249:6;15205:71;:::i;:::-;15286:72;15354:2;15343:9;15339:18;15330:6;15286:72;:::i;:::-;15033:332;;;;;:::o;15371:102::-;15413:8;15460:5;15457:1;15453:13;15432:34;;15371:102;;;:::o;15479:848::-;15540:5;15547:4;15571:6;15562:15;;15595:5;15586:14;;15609:712;15630:1;15620:8;15617:15;15609:712;;;15725:4;15720:3;15716:14;15710:4;15707:24;15704:50;;;15734:18;;:::i;:::-;15704:50;15784:1;15774:8;15770:16;15767:451;;;16199:4;16192:5;16188:16;16179:25;;15767:451;16249:4;16243;16239:15;16231:23;;16279:32;16302:8;16279:32;:::i;:::-;16267:44;;15609:712;;;15479:848;;;;;;;:::o;16333:1073::-;16387:5;16578:8;16568:40;;16599:1;16590:10;;16601:5;;16568:40;16627:4;16617:36;;16644:1;16635:10;;16646:5;;16617:36;16713:4;16761:1;16756:27;;;;16797:1;16792:191;;;;16706:277;;16756:27;16774:1;16765:10;;16776:5;;;16792:191;16837:3;16827:8;16824:17;16821:43;;;16844:18;;:::i;:::-;16821:43;16893:8;16890:1;16886:16;16877:25;;16928:3;16921:5;16918:14;16915:40;;;16935:18;;:::i;:::-;16915:40;16968:5;;;16706:277;;17092:2;17082:8;17079:16;17073:3;17067:4;17064:13;17060:36;17042:2;17032:8;17029:16;17024:2;17018:4;17015:12;17011:35;16995:111;16992:246;;;17148:8;17142:4;17138:19;17129:28;;17183:3;17176:5;17173:14;17170:40;;;17190:18;;:::i;:::-;17170:40;17223:5;;16992:246;17263:42;17301:3;17291:8;17285:4;17282:1;17263:42;:::i;:::-;17248:57;;;;17337:4;17332:3;17328:14;17321:5;17318:25;17315:51;;;17346:18;;:::i;:::-;17315:51;17395:4;17388:5;17384:16;17375:25;;16333:1073;;;;;;:::o;17412:281::-;17470:5;17494:23;17512:4;17494:23;:::i;:::-;17486:31;;17538:25;17554:8;17538:25;:::i;:::-;17526:37;;17582:104;17619:66;17609:8;17603:4;17582:104;:::i;:::-;17573:113;;17412:281;;;;:::o;17699:410::-;17739:7;17762:20;17780:1;17762:20;:::i;:::-;17757:25;;17796:20;17814:1;17796:20;:::i;:::-;17791:25;;17851:1;17848;17844:9;17873:30;17891:11;17873:30;:::i;:::-;17862:41;;18052:1;18043:7;18039:15;18036:1;18033:22;18013:1;18006:9;17986:83;17963:139;;18082:18;;:::i;:::-;17963:139;17747:362;17699:410;;;;:::o;18115:227::-;18255:34;18251:1;18243:6;18239:14;18232:58;18324:10;18319:2;18311:6;18307:15;18300:35;18115:227;:::o;18348:366::-;18490:3;18511:67;18575:2;18570:3;18511:67;:::i;:::-;18504:74;;18587:93;18676:3;18587:93;:::i;:::-;18705:2;18700:3;18696:12;18689:19;;18348:366;;;:::o;18720:419::-;18886:4;18924:2;18913:9;18909:18;18901:26;;18973:9;18967:4;18963:20;18959:1;18948:9;18944:17;18937:47;19001:131;19127:4;19001:131;:::i;:::-;18993:139;;18720:419;;;:::o;19145:194::-;19185:4;19205:20;19223:1;19205:20;:::i;:::-;19200:25;;19239:20;19257:1;19239:20;:::i;:::-;19234:25;;19283:1;19280;19276:9;19268:17;;19307:1;19301:4;19298:11;19295:37;;;19312:18;;:::i;:::-;19295:37;19145:194;;;;:::o;19345:171::-;19485:23;19481:1;19473:6;19469:14;19462:47;19345:171;:::o;19522:366::-;19664:3;19685:67;19749:2;19744:3;19685:67;:::i;:::-;19678:74;;19761:93;19850:3;19761:93;:::i;:::-;19879:2;19874:3;19870:12;19863:19;;19522:366;;;:::o;19894:419::-;20060:4;20098:2;20087:9;20083:18;20075:26;;20147:9;20141:4;20137:20;20133:1;20122:9;20118:17;20111:47;20175:131;20301:4;20175:131;:::i;:::-;20167:139;;19894:419;;;:::o;20319:179::-;20459:31;20455:1;20447:6;20443:14;20436:55;20319:179;:::o;20504:366::-;20646:3;20667:67;20731:2;20726:3;20667:67;:::i;:::-;20660:74;;20743:93;20832:3;20743:93;:::i;:::-;20861:2;20856:3;20852:12;20845:19;;20504:366;;;:::o;20876:419::-;21042:4;21080:2;21069:9;21065:18;21057:26;;21129:9;21123:4;21119:20;21115:1;21104:9;21100:17;21093:47;21157:131;21283:4;21157:131;:::i;:::-;21149:139;;20876:419;;;:::o;21301:178::-;21441:30;21437:1;21429:6;21425:14;21418:54;21301:178;:::o;21485:366::-;21627:3;21648:67;21712:2;21707:3;21648:67;:::i;:::-;21641:74;;21724:93;21813:3;21724:93;:::i;:::-;21842:2;21837:3;21833:12;21826:19;;21485:366;;;:::o;21857:419::-;22023:4;22061:2;22050:9;22046:18;22038:26;;22110:9;22104:4;22100:20;22096:1;22085:9;22081:17;22074:47;22138:131;22264:4;22138:131;:::i;:::-;22130:139;;21857:419;;;:::o;22282:85::-;22327:7;22356:5;22345:16;;22282:85;;;:::o;22373:60::-;22401:3;22422:5;22415:12;;22373:60;;;:::o;22439:158::-;22497:9;22530:61;22548:42;22557:32;22583:5;22557:32;:::i;:::-;22548:42;:::i;:::-;22530:61;:::i;:::-;22517:74;;22439:158;;;:::o;22603:147::-;22698:45;22737:5;22698:45;:::i;:::-;22693:3;22686:58;22603:147;;:::o;22756:364::-;22893:4;22931:2;22920:9;22916:18;22908:26;;22944:79;23020:1;23009:9;23005:17;22996:6;22944:79;:::i;:::-;23033:80;23109:2;23098:9;23094:18;23085:6;23033:80;:::i;:::-;22756:364;;;;;:::o;23126:224::-;23266:34;23262:1;23254:6;23250:14;23243:58;23335:7;23330:2;23322:6;23318:15;23311:32;23126:224;:::o;23356:366::-;23498:3;23519:67;23583:2;23578:3;23519:67;:::i;:::-;23512:74;;23595:93;23684:3;23595:93;:::i;:::-;23713:2;23708:3;23704:12;23697:19;;23356:366;;;:::o;23728:419::-;23894:4;23932:2;23921:9;23917:18;23909:26;;23981:9;23975:4;23971:20;23967:1;23956:9;23952:17;23945:47;24009:131;24135:4;24009:131;:::i;:::-;24001:139;;23728:419;;;:::o;24153:176::-;24293:28;24289:1;24281:6;24277:14;24270:52;24153:176;:::o;24335:366::-;24477:3;24498:67;24562:2;24557:3;24498:67;:::i;:::-;24491:74;;24574:93;24663:3;24574:93;:::i;:::-;24692:2;24687:3;24683:12;24676:19;;24335:366;;;:::o;24707:419::-;24873:4;24911:2;24900:9;24896:18;24888:26;;24960:9;24954:4;24950:20;24946:1;24935:9;24931:17;24924:47;24988:131;25114:4;24988:131;:::i;:::-;24980:139;;24707:419;;;:::o;25132:332::-;25253:4;25291:2;25280:9;25276:18;25268:26;;25304:71;25372:1;25361:9;25357:17;25348:6;25304:71;:::i;:::-;25385:72;25453:2;25442:9;25438:18;25429:6;25385:72;:::i;:::-;25132:332;;;;;:::o;25470:137::-;25524:5;25555:6;25549:13;25540:22;;25571:30;25595:5;25571:30;:::i;:::-;25470:137;;;;:::o;25613:345::-;25680:6;25729:2;25717:9;25708:7;25704:23;25700:32;25697:119;;;25735:79;;:::i;:::-;25697:119;25855:1;25880:61;25933:7;25924:6;25913:9;25909:22;25880:61;:::i;:::-;25870:71;;25826:125;25613:345;;;;:::o;25964:180::-;26012:77;26009:1;26002:88;26109:4;26106:1;26099:15;26133:4;26130:1;26123:15;26150:185;26190:1;26207:20;26225:1;26207:20;:::i;:::-;26202:25;;26241:20;26259:1;26241:20;:::i;:::-;26236:25;;26280:1;26270:35;;26285:18;;:::i;:::-;26270:35;26327:1;26324;26320:9;26315:14;;26150:185;;;;:::o;26341:166::-;26481:18;26477:1;26469:6;26465:14;26458:42;26341:166;:::o;26513:366::-;26655:3;26676:67;26740:2;26735:3;26676:67;:::i;:::-;26669:74;;26752:93;26841:3;26752:93;:::i;:::-;26870:2;26865:3;26861:12;26854:19;;26513:366;;;:::o;26885:419::-;27051:4;27089:2;27078:9;27074:18;27066:26;;27138:9;27132:4;27128:20;27124:1;27113:9;27109:17;27102:47;27166:131;27292:4;27166:131;:::i;:::-;27158:139;;26885:419;;;:::o;27310:166::-;27450:18;27446:1;27438:6;27434:14;27427:42;27310:166;:::o;27482:366::-;27624:3;27645:67;27709:2;27704:3;27645:67;:::i;:::-;27638:74;;27721:93;27810:3;27721:93;:::i;:::-;27839:2;27834:3;27830:12;27823:19;;27482:366;;;:::o;27854:419::-;28020:4;28058:2;28047:9;28043:18;28035:26;;28107:9;28101:4;28097:20;28093:1;28082:9;28078:17;28071:47;28135:131;28261:4;28135:131;:::i;:::-;28127:139;;27854:419;;;:::o;28279:164::-;28419:16;28415:1;28407:6;28403:14;28396:40;28279:164;:::o;28449:366::-;28591:3;28612:67;28676:2;28671:3;28612:67;:::i;:::-;28605:74;;28688:93;28777:3;28688:93;:::i;:::-;28806:2;28801:3;28797:12;28790:19;;28449:366;;;:::o;28821:419::-;28987:4;29025:2;29014:9;29010:18;29002:26;;29074:9;29068:4;29064:20;29060:1;29049:9;29045:17;29038:47;29102:131;29228:4;29102:131;:::i;:::-;29094:139;;28821:419;;;:::o;29246:168::-;29386:20;29382:1;29374:6;29370:14;29363:44;29246:168;:::o;29420:366::-;29562:3;29583:67;29647:2;29642:3;29583:67;:::i;:::-;29576:74;;29659:93;29748:3;29659:93;:::i;:::-;29777:2;29772:3;29768:12;29761:19;;29420:366;;;:::o;29792:419::-;29958:4;29996:2;29985:9;29981:18;29973:26;;30045:9;30039:4;30035:20;30031:1;30020:9;30016:17;30009:47;30073:131;30199:4;30073:131;:::i;:::-;30065:139;;29792:419;;;:::o;30217:168::-;30357:20;30353:1;30345:6;30341:14;30334:44;30217:168;:::o;30391:366::-;30533:3;30554:67;30618:2;30613:3;30554:67;:::i;:::-;30547:74;;30630:93;30719:3;30630:93;:::i;:::-;30748:2;30743:3;30739:12;30732:19;;30391:366;;;:::o;30763:419::-;30929:4;30967:2;30956:9;30952:18;30944:26;;31016:9;31010:4;31006:20;31002:1;30991:9;30987:17;30980:47;31044:131;31170:4;31044:131;:::i;:::-;31036:139;;30763:419;;;:::o;31188:225::-;31328:34;31324:1;31316:6;31312:14;31305:58;31397:8;31392:2;31384:6;31380:15;31373:33;31188:225;:::o;31419:366::-;31561:3;31582:67;31646:2;31641:3;31582:67;:::i;:::-;31575:74;;31658:93;31747:3;31658:93;:::i;:::-;31776:2;31771:3;31767:12;31760:19;;31419:366;;;:::o;31791:419::-;31957:4;31995:2;31984:9;31980:18;31972:26;;32044:9;32038:4;32034:20;32030:1;32019:9;32015:17;32008:47;32072:131;32198:4;32072:131;:::i;:::-;32064:139;;31791:419;;;:::o;32216:182::-;32356:34;32352:1;32344:6;32340:14;32333:58;32216:182;:::o;32404:366::-;32546:3;32567:67;32631:2;32626:3;32567:67;:::i;:::-;32560:74;;32643:93;32732:3;32643:93;:::i;:::-;32761:2;32756:3;32752:12;32745:19;;32404:366;;;:::o;32776:419::-;32942:4;32980:2;32969:9;32965:18;32957:26;;33029:9;33023:4;33019:20;33015:1;33004:9;33000:17;32993:47;33057:131;33183:4;33057:131;:::i;:::-;33049:139;;32776:419;;;:::o;33201:180::-;33341:32;33337:1;33329:6;33325:14;33318:56;33201:180;:::o;33387:366::-;33529:3;33550:67;33614:2;33609:3;33550:67;:::i;:::-;33543:74;;33626:93;33715:3;33626:93;:::i;:::-;33744:2;33739:3;33735:12;33728:19;;33387:366;;;:::o;33759:419::-;33925:4;33963:2;33952:9;33948:18;33940:26;;34012:9;34006:4;34002:20;33998:1;33987:9;33983:17;33976:47;34040:131;34166:4;34040:131;:::i;:::-;34032:139;;33759:419;;;:::o;34184:166::-;34324:18;34320:1;34312:6;34308:14;34301:42;34184:166;:::o;34356:366::-;34498:3;34519:67;34583:2;34578:3;34519:67;:::i;:::-;34512:74;;34595:93;34684:3;34595:93;:::i;:::-;34713:2;34708:3;34704:12;34697:19;;34356:366;;;:::o;34728:419::-;34894:4;34932:2;34921:9;34917:18;34909:26;;34981:9;34975:4;34971:20;34967:1;34956:9;34952:17;34945:47;35009:131;35135:4;35009:131;:::i;:::-;35001:139;;34728:419;;;:::o;35153:220::-;35293:34;35289:1;35281:6;35277:14;35270:58;35362:3;35357:2;35349:6;35345:15;35338:28;35153:220;:::o;35379:366::-;35521:3;35542:67;35606:2;35601:3;35542:67;:::i;:::-;35535:74;;35618:93;35707:3;35618:93;:::i;:::-;35736:2;35731:3;35727:12;35720:19;;35379:366;;;:::o;35751:419::-;35917:4;35955:2;35944:9;35940:18;35932:26;;36004:9;35998:4;35994:20;35990:1;35979:9;35975:17;35968:47;36032:131;36158:4;36032:131;:::i;:::-;36024:139;;35751:419;;;:::o;36176:181::-;36316:33;36312:1;36304:6;36300:14;36293:57;36176:181;:::o;36363:366::-;36505:3;36526:67;36590:2;36585:3;36526:67;:::i;:::-;36519:74;;36602:93;36691:3;36602:93;:::i;:::-;36720:2;36715:3;36711:12;36704:19;;36363:366;;;:::o;36735:419::-;36901:4;36939:2;36928:9;36924:18;36916:26;;36988:9;36982:4;36978:20;36974:1;36963:9;36959:17;36952:47;37016:131;37142:4;37016:131;:::i;:::-;37008:139;;36735:419;;;:::o;37160:169::-;37300:21;37296:1;37288:6;37284:14;37277:45;37160:169;:::o;37335:366::-;37477:3;37498:67;37562:2;37557:3;37498:67;:::i;:::-;37491:74;;37574:93;37663:3;37574:93;:::i;:::-;37692:2;37687:3;37683:12;37676:19;;37335:366;;;:::o;37707:419::-;37873:4;37911:2;37900:9;37896:18;37888:26;;37960:9;37954:4;37950:20;37946:1;37935:9;37931:17;37924:47;37988:131;38114:4;37988:131;:::i;:::-;37980:139;;37707:419;;;:::o;38132:225::-;38272:34;38268:1;38260:6;38256:14;38249:58;38341:8;38336:2;38328:6;38324:15;38317:33;38132:225;:::o;38363:366::-;38505:3;38526:67;38590:2;38585:3;38526:67;:::i;:::-;38519:74;;38602:93;38691:3;38602:93;:::i;:::-;38720:2;38715:3;38711:12;38704:19;;38363:366;;;:::o;38735:419::-;38901:4;38939:2;38928:9;38924:18;38916:26;;38988:9;38982:4;38978:20;38974:1;38963:9;38959:17;38952:47;39016:131;39142:4;39016:131;:::i;:::-;39008:139;;38735:419;;;:::o;39160:224::-;39300:34;39296:1;39288:6;39284:14;39277:58;39369:7;39364:2;39356:6;39352:15;39345:32;39160:224;:::o;39390:366::-;39532:3;39553:67;39617:2;39612:3;39553:67;:::i;:::-;39546:74;;39629:93;39718:3;39629:93;:::i;:::-;39747:2;39742:3;39738:12;39731:19;;39390:366;;;:::o;39762:419::-;39928:4;39966:2;39955:9;39951:18;39943:26;;40015:9;40009:4;40005:20;40001:1;39990:9;39986:17;39979:47;40043:131;40169:4;40043:131;:::i;:::-;40035:139;;39762:419;;;:::o;40187:222::-;40327:34;40323:1;40315:6;40311:14;40304:58;40396:5;40391:2;40383:6;40379:15;40372:30;40187:222;:::o;40415:366::-;40557:3;40578:67;40642:2;40637:3;40578:67;:::i;:::-;40571:74;;40654:93;40743:3;40654:93;:::i;:::-;40772:2;40767:3;40763:12;40756:19;;40415:366;;;:::o;40787:419::-;40953:4;40991:2;40980:9;40976:18;40968:26;;41040:9;41034:4;41030:20;41026:1;41015:9;41011:17;41004:47;41068:131;41194:4;41068:131;:::i;:::-;41060:139;;40787:419;;;:::o;41212:182::-;41352:34;41348:1;41340:6;41336:14;41329:58;41212:182;:::o;41400:366::-;41542:3;41563:67;41627:2;41622:3;41563:67;:::i;:::-;41556:74;;41639:93;41728:3;41639:93;:::i;:::-;41757:2;41752:3;41748:12;41741:19;;41400:366;;;:::o;41772:419::-;41938:4;41976:2;41965:9;41961:18;41953:26;;42025:9;42019:4;42015:20;42011:1;42000:9;41996:17;41989:47;42053:131;42179:4;42053:131;:::i;:::-;42045:139;;41772:419;;;:::o;42197:177::-;42337:29;42333:1;42325:6;42321:14;42314:53;42197:177;:::o;42380:366::-;42522:3;42543:67;42607:2;42602:3;42543:67;:::i;:::-;42536:74;;42619:93;42708:3;42619:93;:::i;:::-;42737:2;42732:3;42728:12;42721:19;;42380:366;;;:::o;42752:419::-;42918:4;42956:2;42945:9;42941:18;42933:26;;43005:9;42999:4;42995:20;42991:1;42980:9;42976:17;42969:47;43033:131;43159:4;43033:131;:::i;:::-;43025:139;;42752:419;;;:::o;43177:182::-;43317:34;43313:1;43305:6;43301:14;43294:58;43177:182;:::o;43365:366::-;43507:3;43528:67;43592:2;43587:3;43528:67;:::i;:::-;43521:74;;43604:93;43693:3;43604:93;:::i;:::-;43722:2;43717:3;43713:12;43706:19;;43365:366;;;:::o;43737:419::-;43903:4;43941:2;43930:9;43926:18;43918:26;;43990:9;43984:4;43980:20;43976:1;43965:9;43961:17;43954:47;44018:131;44144:4;44018:131;:::i;:::-;44010:139;;43737:419;;;:::o;44162:179::-;44302:31;44298:1;44290:6;44286:14;44279:55;44162:179;:::o;44347:366::-;44489:3;44510:67;44574:2;44569:3;44510:67;:::i;:::-;44503:74;;44586:93;44675:3;44586:93;:::i;:::-;44704:2;44699:3;44695:12;44688:19;;44347:366;;;:::o;44719:419::-;44885:4;44923:2;44912:9;44908:18;44900:26;;44972:9;44966:4;44962:20;44958:1;44947:9;44943:17;44936:47;45000:131;45126:4;45000:131;:::i;:::-;44992:139;;44719:419;;;:::o;45144:221::-;45284:34;45280:1;45272:6;45268:14;45261:58;45353:4;45348:2;45340:6;45336:15;45329:29;45144:221;:::o;45371:366::-;45513:3;45534:67;45598:2;45593:3;45534:67;:::i;:::-;45527:74;;45610:93;45699:3;45610:93;:::i;:::-;45728:2;45723:3;45719:12;45712:19;;45371:366;;;:::o;45743:419::-;45909:4;45947:2;45936:9;45932:18;45924:26;;45996:9;45990:4;45986:20;45982:1;45971:9;45967:17;45960:47;46024:131;46150:4;46024:131;:::i;:::-;46016:139;;45743:419;;;:::o;46168:170::-;46308:22;46304:1;46296:6;46292:14;46285:46;46168:170;:::o;46344:366::-;46486:3;46507:67;46571:2;46566:3;46507:67;:::i;:::-;46500:74;;46583:93;46672:3;46583:93;:::i;:::-;46701:2;46696:3;46692:12;46685:19;;46344:366;;;:::o;46716:419::-;46882:4;46920:2;46909:9;46905:18;46897:26;;46969:9;46963:4;46959:20;46955:1;46944:9;46940:17;46933:47;46997:131;47123:4;46997:131;:::i;:::-;46989:139;;46716:419;;;:::o

Swarm Source

ipfs://5f99b9276c164945736cca19326e2406cd4d0c28ee8f62ca129b763091f79624
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.