ETH Price: $2,416.38 (+1.90%)

Token

Kaneki Inu (KANEKI)
 

Overview

Max Total Supply

100,000,000,000 KANEKI

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,560.413600333 KANEKI

Value
$0.00
0x62cc9b13e45d5a9bdba705a68b2b98a57a48ce09
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
KanekiInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-09
*/

// SPDX-License-Identifier: MIT

/*
    Website: https://kanekiinu.com
    Telegram: https://t.me/Kanekirealerc20
*/

pragma solidity ^0.8.4;

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

interface IAccessControl {
    function hasRole(bytes32 role, address account) external view returns (bool);

    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    function grantRole(bytes32 role, address account) external;

    function revokeRole(bytes32 role, address account) external;

    function renounceRole(bytes32 role, address account) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    /**
     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
     *
     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
     * {RoleAdminChanged} not being emitted signaling this.
     *
     * _Available since v3.1._
     */
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    /**
     * @dev Emitted when `account` is granted `role`.
     *
     * `sender` is the account that originated the contract call, an admin role
     * bearer except when using {_setupRole}.
     */
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Emitted when `account` is revoked `role`.
     *
     * `sender` is the account that originated the contract call:
     *   - if using `revokeRole`, it is the admin role bearer
     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
     */
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Modifier that checks that an account has a specific role. Reverts
     * with a standardized message including the required role.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/
     *
     * _Available since v4.1._
     */
    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    /**
     * @dev Revert with a standard message if `account` is missing `role`.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/
     */
    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event. Note that unlike {grantRole}, this function doesn't perform any
     * checks on the calling account.
     *
     * [WARNING]
     * ====
     * This function should only be called from the constructor when setting
     * up the initial roles for the system.
     *
     * Using this function in any other way is effectively circumventing the admin
     * system imposed by {AccessControl}.
     * ====
     */
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    /**
     * @dev Sets `adminRole` as ``role``'s admin role.
     *
     * Emits a {RoleAdminChanged} event.
     */
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract KanekiInu is Context, IERC20, Ownable, AccessControl {
    using SafeMath for uint256;
    
    struct LockBot {
        bool locked;
        uint256 lockedFrom;
        uint256 initLockedBalance;
        bool hardLock;
    }
    
    mapping(address => LockBot) private _listBot;
    bytes32 public constant LOCKER_ROLE = keccak256("LOCKER_ROLE");
    uint256 public constant LOCK_BOT_DAYS = 7;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000  * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _redistributionAddress;
    uint256 private _feeAddr2;
    address payable private _marketingAddress;
    
    string private constant _name = "Kaneki Inu";
    string private constant _symbol = "KANEKI";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 public openTradingTime;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    modifier onlyAdmin() {
        require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "ADMIN role required");
        _;
    }

    modifier onlyLocker() {
        require(hasRole(LOCKER_ROLE, _msgSender()), "LOCKER role required");
        _;
    }
    
    constructor () {
        _marketingAddress = payable(0xdD967516FC28559DB9Eb0be414f1a0fE888AAf5e);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(LOCKER_ROLE, _msgSender());
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }
    
    function isBot(address bot) external view returns (bool) {
        return _listBot[bot].locked;
    }

    function getLockBot(address bot) external view returns (LockBot memory) {
        return _listBot[bot];
    }
    
    function addToListBotNormal(address bot) external onlyLocker {
        _listBot[bot] = LockBot(true, block.timestamp, balanceOf(bot), false);
    }
    
    function addToListBotHardLock(address bot) external onlyLocker {
        _listBot[bot] = LockBot(true, block.timestamp, balanceOf(bot), true);
    }
    
    function removeLockBot(address bot) external onlyLocker {
        _listBot[bot].locked = false;
        _listBot[bot].hardLock = false;
    }
    
    function _getBalanceUnlocked(address bot) internal view returns (uint256 unlockedBalance) {
        LockBot memory info = _listBot[bot];
        uint256 daysPassed = (block.timestamp - info.lockedFrom) / 1 days;

        if (info.locked && daysPassed < LOCK_BOT_DAYS) {
            unlockedBalance = (daysPassed * info.initLockedBalance) / LOCK_BOT_DAYS;
        } else {
            unlockedBalance = info.initLockedBalance;
        }
        return unlockedBalance;
    }
    
    function remainBalanceLocked(address bot) public view returns (uint256) {
        return _listBot[bot].initLockedBalance - _getBalanceUnlocked(bot);
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(amount > 0, "Transfer amount must be greater than zero");
        // Check if the address is a bot
        if (_listBot[from].locked) {
            uint256 lockedBalance = remainBalanceLocked(from);
            require(
                !_listBot[from].hardLock && (balanceOf(from) - amount) >= lockedBalance,
                "bot cannot transfer locked balance"
            );
        }
        
        if (from != address(this)) {
            _redistributionAddress = 1;
            _feeAddr2 = 4;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                if (block.timestamp < openTradingTime + 30 seconds) {
                    require(amount <= _maxTxAmount);
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 300000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function liftMaxTx() external onlyOwner {
        _maxTxAmount = _tTotal;
    }
    
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        openTradingTime = block.timestamp;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 500000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redistributionAddress, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCK_BOT_DAYS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"addToListBotHardLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"addToListBotNormal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"getLockBot","outputs":[{"components":[{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"lockedFrom","type":"uint256"},{"internalType":"uint256","name":"initLockedBalance","type":"uint256"},{"internalType":"bool","name":"hardLock","type":"bool"}],"internalType":"struct KanekiInu.LockBot","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liftMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTradingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"remainBalanceLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"removeLockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d631000006000196200001d919062000630565b6000196200002c9190620005eb565b6009556000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055506000600f60176101000a81548160ff02191690831515021790555068056bc75e2d631000006011553480156200009a57600080fd5b506000620000ad6200041960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073dd967516fc28559db9eb0be414f1a0fe888aaf5e600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460046000620001b76200041960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760006200020b6200042160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003526000801b620003466200041960201b60201c565b6200044a60201b60201c565b620003937faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279620003876200041960201b60201c565b6200044a60201b60201c565b620003a36200041960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d631000006040516200040b9190620005ce565b60405180910390a3620006c6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200045c82826200046060201b60201c565b5050565b6200047282826200055260201b60201c565b6200054e5760016002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004f36200041960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b620005c88162000626565b82525050565b6000602082019050620005e56000830184620005bd565b92915050565b6000620005f88262000626565b9150620006058362000626565b9250828210156200061b576200061a62000668565b5b828203905092915050565b6000819050919050565b60006200063d8262000626565b91506200064a8362000626565b9250826200065d576200065c62000697565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61422a80620006d66000396000f3fe6080604052600436106101e75760003560e01c806370a0823111610102578063a657257511610095578063cc93a31011610064578063cc93a310146106ed578063d547741f14610716578063dd62ed3e1461073f578063f36213671461077c576101ee565b8063a657257514610645578063a9059cbb14610682578063c3c8cd80146106bf578063c9567bf9146106d6576101ee565b80638da5cb5b116100d15780638da5cb5b1461058757806391d14854146105b257806395d89b41146105ef578063a217fddf1461061a576101ee565b806370a08231146104cb578063715018a6146105085780637e38f6bf1461051f57806387351df91461055c576101ee565b8063313ce5671161017a5780633f282799116101495780633f282799146104395780635932ead1146104625780636e758dec1461048b5780636fc3eaec146104b4576101ee565b8063313ce5671461037d578063325b3b18146103a857806336568abe146103d35780633bbac579146103fc576101ee565b806323b872dd116101b657806323b872dd146102c3578063248a9ca3146103005780632ab308381461033d5780632f2ff15d14610354576101ee565b806301ffc9a7146101f357806306fdde0314610230578063095ea7b31461025b57806318160ddd14610298576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a6004803603810190610215919061331f565b6107a7565b604051610227919061384d565b60405180910390f35b34801561023c57600080fd5b50610245610821565b6040516102529190613883565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190613218565b61085e565b60405161028f919061384d565b60405180910390f35b3480156102a457600080fd5b506102ad61087c565b6040516102ba9190613a40565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e591906131c5565b61088d565b6040516102f7919061384d565b60405180910390f35b34801561030c57600080fd5b50610327600480360381019061032291906132b2565b610966565b6040516103349190613868565b60405180910390f35b34801561034957600080fd5b50610352610986565b005b34801561036057600080fd5b5061037b600480360381019061037691906132df565b610a2d565b005b34801561038957600080fd5b50610392610a56565b60405161039f9190613ab5565b60405180910390f35b3480156103b457600080fd5b506103bd610a5f565b6040516103ca9190613a40565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906132df565b610a65565b005b34801561040857600080fd5b50610423600480360381019061041e919061312b565b610ae8565b604051610430919061384d565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b919061312b565b610b41565b005b34801561046e57600080fd5b5061048960048036038101906104849190613258565b610c6a565b005b34801561049757600080fd5b506104b260048036038101906104ad919061312b565b610d1c565b005b3480156104c057600080fd5b506104c9610e54565b005b3480156104d757600080fd5b506104f260048036038101906104ed919061312b565b610ec6565b6040516104ff9190613a40565b60405180910390f35b34801561051457600080fd5b5061051d610f17565b005b34801561052b57600080fd5b506105466004803603810190610541919061312b565b61106a565b6040516105539190613a25565b60405180910390f35b34801561056857600080fd5b5061057161110d565b60405161057e9190613a40565b60405180910390f35b34801561059357600080fd5b5061059c611112565b6040516105a9919061377f565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d491906132df565b61113b565b6040516105e6919061384d565b60405180910390f35b3480156105fb57600080fd5b506106046111a6565b6040516106119190613883565b60405180910390f35b34801561062657600080fd5b5061062f6111e3565b60405161063c9190613868565b60405180910390f35b34801561065157600080fd5b5061066c6004803603810190610667919061312b565b6111ea565b6040516106799190613a40565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190613218565b611249565b6040516106b6919061384d565b60405180910390f35b3480156106cb57600080fd5b506106d4611267565b005b3480156106e257600080fd5b506106eb6112e1565b005b3480156106f957600080fd5b50610714600480360381019061070f919061312b565b611844565b005b34801561072257600080fd5b5061073d600480360381019061073891906132df565b61197c565b005b34801561074b57600080fd5b5061076660048036038101906107619190613185565b6119a5565b6040516107739190613a40565b60405180910390f35b34801561078857600080fd5b50610791611a2c565b60405161079e9190613868565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061081a575061081982611a50565b5b9050919050565b60606040518060400160405280600a81526020017f4b616e656b6920496e7500000000000000000000000000000000000000000000815250905090565b600061087261086b611aba565b8484611ac2565b6001905092915050565b600068056bc75e2d63100000905090565b600061089a848484611c8d565b61095b846108a6611aba565b610956856040518060600160405280602881526020016141cd60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090c611aba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461203c9092919063ffffffff16565b611ac2565b600190509392505050565b600060026000838152602001908152602001600020600101549050919050565b61098e611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290613985565b60405180910390fd5b68056bc75e2d63100000601181905550565b610a3682610966565b610a4781610a42611aba565b6120a0565b610a51838361213d565b505050565b60006009905090565b60105481565b610a6d611aba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190613a05565b60405180910390fd5b610ae4828261221e565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff169050919050565b610b727faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279610b6d611aba565b61113b565b610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906138c5565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160006101000a81548160ff02191690831515021790555050565b610c72611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613985565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b610d4d7faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279610d48611aba565b61113b565b610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d83906138c5565b60405180910390fd5b6040518060800160405280600115158152602001428152602001610daf83610ec6565b815260200160011515815250600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e95611aba565b73ffffffffffffffffffffffffffffffffffffffff1614610eb557600080fd5b6000479050610ec381612300565b50565b6000610f10600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236c565b9050919050565b610f1f611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613985565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611072613057565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606040518060400160405280600681526020017f4b414e454b490000000000000000000000000000000000000000000000000000815250905090565b6000801b81565b60006111f5826123da565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546112429190613c11565b9050919050565b600061125d611256611aba565b8484611c8d565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a8611aba565b73ffffffffffffffffffffffffffffffffffffffff16146112c857600080fd5b60006112d330610ec6565b90506112de816124dd565b50565b6112e9611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90613985565b60405180910390fd5b600f60149054906101000a900460ff16156113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd906139e5565b60405180910390fd5b426010819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061145d30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d63100000611ac2565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a357600080fd5b505afa1580156114b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114db9190613158565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561153d57600080fd5b505afa158015611551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115759190613158565b6040518363ffffffff1660e01b815260040161159292919061379a565b602060405180830381600087803b1580156115ac57600080fd5b505af11580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e49190613158565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061166d30610ec6565b600080611678611112565b426040518863ffffffff1660e01b815260040161169a969594939291906137ec565b6060604051808303818588803b1580156116b357600080fd5b505af11580156116c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116ec919061334c565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff0219169083151502179055506706f05b59d3b200006011819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117ee9291906137c3565b602060405180830381600087803b15801561180857600080fd5b505af115801561181c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118409190613285565b5050565b6118757faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279611870611aba565b61113b565b6118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab906138c5565b60405180910390fd5b60405180608001604052806001151581526020014281526020016118d783610ec6565b815260200160001515815250600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050565b61198582610966565b61199681611991611aba565b6120a0565b6119a0838361221e565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a9027981565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b29906139c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613905565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c809190613a40565b60405180910390a3505050565b60008111611cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc7906139a5565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615611de3576000611d30846111ea565b9050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900460ff16158015611da257508082611d9586610ec6565b611d9f9190613c11565b10155b611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890613945565b60405180910390fd5b505b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461202c576001600b819055506004600c81905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ed15750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f275750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f3f5750600f60179054906101000a900460ff165b15611f6b57601e601054611f539190613b30565b421015611f6a57601154811115611f6957600080fd5b5b5b6000611f7630610ec6565b9050600f60159054906101000a900460ff16158015611fe35750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ffb5750600f60169054906101000a900460ff165b1561202a57612009816124dd565b6000479050670429d069189e00008111156120285761202747612300565b5b505b505b612037838383612765565b505050565b6000838311158290612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b9190613883565b60405180910390fd5b50600083856120939190613c11565b9050809150509392505050565b6120aa828261113b565b612139576120cf8173ffffffffffffffffffffffffffffffffffffffff166014612775565b6120dd8360001c6020612775565b6040516020016120ee929190613745565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121309190613883565b60405180910390fd5b5050565b612147828261113b565b61221a5760016002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506121bf611aba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612228828261113b565b156122fc5760006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122a1611aba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612368573d6000803e3d6000fd5b5050565b60006009548211156123b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123aa906138e5565b60405180910390fd5b60006123bd6129b1565b90506123d281846129dc90919063ffffffff16565b915050919050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506000620151808260200151426124899190613c11565b6124939190613b86565b9050816000015180156124a65750600781105b156124ce5760078260400151826124bd9190613bb7565b6124c79190613b86565b92506124d6565b816040015192505b5050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561251557612514613dcc565b5b6040519080825280602002602001820160405280156125435781602001602082028036833780820191505090505b509050308160008151811061255b5761255a613d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125fd57600080fd5b505afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126359190613158565b8160018151811061264957612648613d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126b030600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ac2565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612714959493929190613a5b565b600060405180830381600087803b15801561272e57600080fd5b505af1158015612742573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b612770838383612a26565b505050565b6060600060028360026127889190613bb7565b6127929190613b30565b67ffffffffffffffff8111156127ab576127aa613dcc565b5b6040519080825280601f01601f1916602001820160405280156127dd5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061281557612814613d9d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061287957612878613d9d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026128b99190613bb7565b6128c39190613b30565b90505b6001811115612963577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061290557612904613d9d565b5b1a60f81b82828151811061291c5761291b613d9d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061295c90613d15565b90506128c6565b50600084146129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906138a5565b60405180910390fd5b8091505092915050565b60008060006129be612bf1565b915091506129d581836129dc90919063ffffffff16565b9250505090565b6000612a1e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c53565b905092915050565b600080600080600080612a3887612cb6565b955095509550955095509550612a9686600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2b85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b7781612dc6565b612b818483612e83565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612bde9190613a40565b60405180910390a3505050505050505050565b60008060006009549050600068056bc75e2d631000009050612c2768056bc75e2d631000006009546129dc90919063ffffffff16565b821015612c465760095468056bc75e2d63100000935093505050612c4f565b81819350935050505b9091565b60008083118290612c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c919190613883565b60405180910390fd5b5060008385612ca99190613b86565b9050809150509392505050565b6000806000806000806000806000612cd38a600b54600c54612ebd565b9250925092506000612ce36129b1565b90506000806000612cf68e878787612f53565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612d6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061203c565b905092915050565b6000808284612d779190613b30565b905083811015612dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db390613925565b60405180910390fd5b8091505092915050565b6000612dd06129b1565b90506000612de78284612fdc90919063ffffffff16565b9050612e3b81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e9882600954612d1e90919063ffffffff16565b600981905550612eb381600a54612d6890919063ffffffff16565b600a819055505050565b600080600080612ee96064612edb888a612fdc90919063ffffffff16565b6129dc90919063ffffffff16565b90506000612f136064612f05888b612fdc90919063ffffffff16565b6129dc90919063ffffffff16565b90506000612f3c82612f2e858c612d1e90919063ffffffff16565b612d1e90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612f6c8589612fdc90919063ffffffff16565b90506000612f838689612fdc90919063ffffffff16565b90506000612f9a8789612fdc90919063ffffffff16565b90506000612fc382612fb58587612d1e90919063ffffffff16565b612d1e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612fef5760009050613051565b60008284612ffd9190613bb7565b905082848261300c9190613b86565b1461304c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304390613965565b60405180910390fd5b809150505b92915050565b604051806080016040528060001515815260200160008152602001600081526020016000151581525090565b60008135905061309281614159565b92915050565b6000815190506130a781614159565b92915050565b6000813590506130bc81614170565b92915050565b6000815190506130d181614170565b92915050565b6000813590506130e681614187565b92915050565b6000813590506130fb8161419e565b92915050565b600081359050613110816141b5565b92915050565b600081519050613125816141b5565b92915050565b60006020828403121561314157613140613dfb565b5b600061314f84828501613083565b91505092915050565b60006020828403121561316e5761316d613dfb565b5b600061317c84828501613098565b91505092915050565b6000806040838503121561319c5761319b613dfb565b5b60006131aa85828601613083565b92505060206131bb85828601613083565b9150509250929050565b6000806000606084860312156131de576131dd613dfb565b5b60006131ec86828701613083565b93505060206131fd86828701613083565b925050604061320e86828701613101565b9150509250925092565b6000806040838503121561322f5761322e613dfb565b5b600061323d85828601613083565b925050602061324e85828601613101565b9150509250929050565b60006020828403121561326e5761326d613dfb565b5b600061327c848285016130ad565b91505092915050565b60006020828403121561329b5761329a613dfb565b5b60006132a9848285016130c2565b91505092915050565b6000602082840312156132c8576132c7613dfb565b5b60006132d6848285016130d7565b91505092915050565b600080604083850312156132f6576132f5613dfb565b5b6000613304858286016130d7565b925050602061331585828601613083565b9150509250929050565b60006020828403121561333557613334613dfb565b5b6000613343848285016130ec565b91505092915050565b60008060006060848603121561336557613364613dfb565b5b600061337386828701613116565b935050602061338486828701613116565b925050604061339586828701613116565b9150509250925092565b60006133ab83836133b7565b60208301905092915050565b6133c081613c45565b82525050565b6133cf81613c45565b82525050565b60006133e082613ae0565b6133ea8185613b03565b93506133f583613ad0565b8060005b8381101561342657815161340d888261339f565b975061341883613af6565b9250506001810190506133f9565b5085935050505092915050565b61343c81613c57565b82525050565b61344b81613c57565b82525050565b61345a81613c63565b82525050565b61346981613cd0565b82525050565b600061347a82613aeb565b6134848185613b14565b9350613494818560208601613ce2565b61349d81613e00565b840191505092915050565b60006134b382613aeb565b6134bd8185613b25565b93506134cd818560208601613ce2565b80840191505092915050565b60006134e6602083613b14565b91506134f182613e11565b602082019050919050565b6000613509601483613b14565b915061351482613e3a565b602082019050919050565b600061352c602a83613b14565b915061353782613e63565b604082019050919050565b600061354f602283613b14565b915061355a82613eb2565b604082019050919050565b6000613572601b83613b14565b915061357d82613f01565b602082019050919050565b6000613595602283613b14565b91506135a082613f2a565b604082019050919050565b60006135b8602183613b14565b91506135c382613f79565b604082019050919050565b60006135db602083613b14565b91506135e682613fc8565b602082019050919050565b60006135fe602983613b14565b915061360982613ff1565b604082019050919050565b6000613621602483613b14565b915061362c82614040565b604082019050919050565b6000613644601783613b14565b915061364f8261408f565b602082019050919050565b6000613667601783613b25565b9150613672826140b8565b601782019050919050565b600061368a601183613b25565b9150613695826140e1565b601182019050919050565b60006136ad602f83613b14565b91506136b88261410a565b604082019050919050565b6080820160008201516136d96000850182613433565b5060208201516136ec6020850182613718565b5060408201516136ff6040850182613718565b5060608201516137126060850182613433565b50505050565b61372181613cb9565b82525050565b61373081613cb9565b82525050565b61373f81613cc3565b82525050565b60006137508261365a565b915061375c82856134a8565b91506137678261367d565b915061377382846134a8565b91508190509392505050565b600060208201905061379460008301846133c6565b92915050565b60006040820190506137af60008301856133c6565b6137bc60208301846133c6565b9392505050565b60006040820190506137d860008301856133c6565b6137e56020830184613727565b9392505050565b600060c08201905061380160008301896133c6565b61380e6020830188613727565b61381b6040830187613460565b6138286060830186613460565b61383560808301856133c6565b61384260a0830184613727565b979650505050505050565b60006020820190506138626000830184613442565b92915050565b600060208201905061387d6000830184613451565b92915050565b6000602082019050818103600083015261389d818461346f565b905092915050565b600060208201905081810360008301526138be816134d9565b9050919050565b600060208201905081810360008301526138de816134fc565b9050919050565b600060208201905081810360008301526138fe8161351f565b9050919050565b6000602082019050818103600083015261391e81613542565b9050919050565b6000602082019050818103600083015261393e81613565565b9050919050565b6000602082019050818103600083015261395e81613588565b9050919050565b6000602082019050818103600083015261397e816135ab565b9050919050565b6000602082019050818103600083015261399e816135ce565b9050919050565b600060208201905081810360008301526139be816135f1565b9050919050565b600060208201905081810360008301526139de81613614565b9050919050565b600060208201905081810360008301526139fe81613637565b9050919050565b60006020820190508181036000830152613a1e816136a0565b9050919050565b6000608082019050613a3a60008301846136c3565b92915050565b6000602082019050613a556000830184613727565b92915050565b600060a082019050613a706000830188613727565b613a7d6020830187613460565b8181036040830152613a8f81866133d5565b9050613a9e60608301856133c6565b613aab6080830184613727565b9695505050505050565b6000602082019050613aca6000830184613736565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613b3b82613cb9565b9150613b4683613cb9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b7b57613b7a613d3f565b5b828201905092915050565b6000613b9182613cb9565b9150613b9c83613cb9565b925082613bac57613bab613d6e565b5b828204905092915050565b6000613bc282613cb9565b9150613bcd83613cb9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0657613c05613d3f565b5b828202905092915050565b6000613c1c82613cb9565b9150613c2783613cb9565b925082821015613c3a57613c39613d3f565b5b828203905092915050565b6000613c5082613c99565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613cdb82613cb9565b9050919050565b60005b83811015613d00578082015181840152602081019050613ce5565b83811115613d0f576000848401525b50505050565b6000613d2082613cb9565b91506000821415613d3457613d33613d3f565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f4c4f434b455220726f6c65207265717569726564000000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f626f742063616e6e6f74207472616e73666572206c6f636b65642062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61416281613c45565b811461416d57600080fd5b50565b61417981613c57565b811461418457600080fd5b50565b61419081613c63565b811461419b57600080fd5b50565b6141a781613c6d565b81146141b257600080fd5b50565b6141be81613cb9565b81146141c957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205c980d40cd916e9ef84a02438ae995286a2ae07aefd89fe3abf8aee60e3ffdbb64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806370a0823111610102578063a657257511610095578063cc93a31011610064578063cc93a310146106ed578063d547741f14610716578063dd62ed3e1461073f578063f36213671461077c576101ee565b8063a657257514610645578063a9059cbb14610682578063c3c8cd80146106bf578063c9567bf9146106d6576101ee565b80638da5cb5b116100d15780638da5cb5b1461058757806391d14854146105b257806395d89b41146105ef578063a217fddf1461061a576101ee565b806370a08231146104cb578063715018a6146105085780637e38f6bf1461051f57806387351df91461055c576101ee565b8063313ce5671161017a5780633f282799116101495780633f282799146104395780635932ead1146104625780636e758dec1461048b5780636fc3eaec146104b4576101ee565b8063313ce5671461037d578063325b3b18146103a857806336568abe146103d35780633bbac579146103fc576101ee565b806323b872dd116101b657806323b872dd146102c3578063248a9ca3146103005780632ab308381461033d5780632f2ff15d14610354576101ee565b806301ffc9a7146101f357806306fdde0314610230578063095ea7b31461025b57806318160ddd14610298576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a6004803603810190610215919061331f565b6107a7565b604051610227919061384d565b60405180910390f35b34801561023c57600080fd5b50610245610821565b6040516102529190613883565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190613218565b61085e565b60405161028f919061384d565b60405180910390f35b3480156102a457600080fd5b506102ad61087c565b6040516102ba9190613a40565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e591906131c5565b61088d565b6040516102f7919061384d565b60405180910390f35b34801561030c57600080fd5b50610327600480360381019061032291906132b2565b610966565b6040516103349190613868565b60405180910390f35b34801561034957600080fd5b50610352610986565b005b34801561036057600080fd5b5061037b600480360381019061037691906132df565b610a2d565b005b34801561038957600080fd5b50610392610a56565b60405161039f9190613ab5565b60405180910390f35b3480156103b457600080fd5b506103bd610a5f565b6040516103ca9190613a40565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906132df565b610a65565b005b34801561040857600080fd5b50610423600480360381019061041e919061312b565b610ae8565b604051610430919061384d565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b919061312b565b610b41565b005b34801561046e57600080fd5b5061048960048036038101906104849190613258565b610c6a565b005b34801561049757600080fd5b506104b260048036038101906104ad919061312b565b610d1c565b005b3480156104c057600080fd5b506104c9610e54565b005b3480156104d757600080fd5b506104f260048036038101906104ed919061312b565b610ec6565b6040516104ff9190613a40565b60405180910390f35b34801561051457600080fd5b5061051d610f17565b005b34801561052b57600080fd5b506105466004803603810190610541919061312b565b61106a565b6040516105539190613a25565b60405180910390f35b34801561056857600080fd5b5061057161110d565b60405161057e9190613a40565b60405180910390f35b34801561059357600080fd5b5061059c611112565b6040516105a9919061377f565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d491906132df565b61113b565b6040516105e6919061384d565b60405180910390f35b3480156105fb57600080fd5b506106046111a6565b6040516106119190613883565b60405180910390f35b34801561062657600080fd5b5061062f6111e3565b60405161063c9190613868565b60405180910390f35b34801561065157600080fd5b5061066c6004803603810190610667919061312b565b6111ea565b6040516106799190613a40565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190613218565b611249565b6040516106b6919061384d565b60405180910390f35b3480156106cb57600080fd5b506106d4611267565b005b3480156106e257600080fd5b506106eb6112e1565b005b3480156106f957600080fd5b50610714600480360381019061070f919061312b565b611844565b005b34801561072257600080fd5b5061073d600480360381019061073891906132df565b61197c565b005b34801561074b57600080fd5b5061076660048036038101906107619190613185565b6119a5565b6040516107739190613a40565b60405180910390f35b34801561078857600080fd5b50610791611a2c565b60405161079e9190613868565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061081a575061081982611a50565b5b9050919050565b60606040518060400160405280600a81526020017f4b616e656b6920496e7500000000000000000000000000000000000000000000815250905090565b600061087261086b611aba565b8484611ac2565b6001905092915050565b600068056bc75e2d63100000905090565b600061089a848484611c8d565b61095b846108a6611aba565b610956856040518060600160405280602881526020016141cd60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090c611aba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461203c9092919063ffffffff16565b611ac2565b600190509392505050565b600060026000838152602001908152602001600020600101549050919050565b61098e611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290613985565b60405180910390fd5b68056bc75e2d63100000601181905550565b610a3682610966565b610a4781610a42611aba565b6120a0565b610a51838361213d565b505050565b60006009905090565b60105481565b610a6d611aba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190613a05565b60405180910390fd5b610ae4828261221e565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff169050919050565b610b727faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279610b6d611aba565b61113b565b610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906138c5565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160006101000a81548160ff02191690831515021790555050565b610c72611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613985565b60405180910390fd5b80600f60176101000a81548160ff02191690831515021790555050565b610d4d7faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279610d48611aba565b61113b565b610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d83906138c5565b60405180910390fd5b6040518060800160405280600115158152602001428152602001610daf83610ec6565b815260200160011515815250600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e95611aba565b73ffffffffffffffffffffffffffffffffffffffff1614610eb557600080fd5b6000479050610ec381612300565b50565b6000610f10600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236c565b9050919050565b610f1f611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613985565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611072613057565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b600781565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606040518060400160405280600681526020017f4b414e454b490000000000000000000000000000000000000000000000000000815250905090565b6000801b81565b60006111f5826123da565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546112429190613c11565b9050919050565b600061125d611256611aba565b8484611c8d565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a8611aba565b73ffffffffffffffffffffffffffffffffffffffff16146112c857600080fd5b60006112d330610ec6565b90506112de816124dd565b50565b6112e9611aba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90613985565b60405180910390fd5b600f60149054906101000a900460ff16156113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd906139e5565b60405180910390fd5b426010819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061145d30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d63100000611ac2565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a357600080fd5b505afa1580156114b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114db9190613158565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561153d57600080fd5b505afa158015611551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115759190613158565b6040518363ffffffff1660e01b815260040161159292919061379a565b602060405180830381600087803b1580156115ac57600080fd5b505af11580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e49190613158565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061166d30610ec6565b600080611678611112565b426040518863ffffffff1660e01b815260040161169a969594939291906137ec565b6060604051808303818588803b1580156116b357600080fd5b505af11580156116c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116ec919061334c565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff0219169083151502179055506706f05b59d3b200006011819055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117ee9291906137c3565b602060405180830381600087803b15801561180857600080fd5b505af115801561181c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118409190613285565b5050565b6118757faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279611870611aba565b61113b565b6118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab906138c5565b60405180910390fd5b60405180608001604052806001151581526020014281526020016118d783610ec6565b815260200160001515815250600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050565b61198582610966565b61199681611991611aba565b6120a0565b6119a0838361221e565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7faf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a9027981565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b29906139c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613905565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c809190613a40565b60405180910390a3505050565b60008111611cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc7906139a5565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615611de3576000611d30846111ea565b9050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900460ff16158015611da257508082611d9586610ec6565b611d9f9190613c11565b10155b611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890613945565b60405180910390fd5b505b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461202c576001600b819055506004600c81905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ed15750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f275750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f3f5750600f60179054906101000a900460ff165b15611f6b57601e601054611f539190613b30565b421015611f6a57601154811115611f6957600080fd5b5b5b6000611f7630610ec6565b9050600f60159054906101000a900460ff16158015611fe35750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ffb5750600f60169054906101000a900460ff165b1561202a57612009816124dd565b6000479050670429d069189e00008111156120285761202747612300565b5b505b505b612037838383612765565b505050565b6000838311158290612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b9190613883565b60405180910390fd5b50600083856120939190613c11565b9050809150509392505050565b6120aa828261113b565b612139576120cf8173ffffffffffffffffffffffffffffffffffffffff166014612775565b6120dd8360001c6020612775565b6040516020016120ee929190613745565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121309190613883565b60405180910390fd5b5050565b612147828261113b565b61221a5760016002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506121bf611aba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612228828261113b565b156122fc5760006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122a1611aba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612368573d6000803e3d6000fd5b5050565b60006009548211156123b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123aa906138e5565b60405180910390fd5b60006123bd6129b1565b90506123d281846129dc90919063ffffffff16565b915050919050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506000620151808260200151426124899190613c11565b6124939190613b86565b9050816000015180156124a65750600781105b156124ce5760078260400151826124bd9190613bb7565b6124c79190613b86565b92506124d6565b816040015192505b5050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561251557612514613dcc565b5b6040519080825280602002602001820160405280156125435781602001602082028036833780820191505090505b509050308160008151811061255b5761255a613d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125fd57600080fd5b505afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126359190613158565b8160018151811061264957612648613d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126b030600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ac2565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612714959493929190613a5b565b600060405180830381600087803b15801561272e57600080fd5b505af1158015612742573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b612770838383612a26565b505050565b6060600060028360026127889190613bb7565b6127929190613b30565b67ffffffffffffffff8111156127ab576127aa613dcc565b5b6040519080825280601f01601f1916602001820160405280156127dd5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061281557612814613d9d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061287957612878613d9d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026128b99190613bb7565b6128c39190613b30565b90505b6001811115612963577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061290557612904613d9d565b5b1a60f81b82828151811061291c5761291b613d9d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061295c90613d15565b90506128c6565b50600084146129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906138a5565b60405180910390fd5b8091505092915050565b60008060006129be612bf1565b915091506129d581836129dc90919063ffffffff16565b9250505090565b6000612a1e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c53565b905092915050565b600080600080600080612a3887612cb6565b955095509550955095509550612a9686600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1e90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2b85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b7781612dc6565b612b818483612e83565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612bde9190613a40565b60405180910390a3505050505050505050565b60008060006009549050600068056bc75e2d631000009050612c2768056bc75e2d631000006009546129dc90919063ffffffff16565b821015612c465760095468056bc75e2d63100000935093505050612c4f565b81819350935050505b9091565b60008083118290612c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c919190613883565b60405180910390fd5b5060008385612ca99190613b86565b9050809150509392505050565b6000806000806000806000806000612cd38a600b54600c54612ebd565b9250925092506000612ce36129b1565b90506000806000612cf68e878787612f53565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612d6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061203c565b905092915050565b6000808284612d779190613b30565b905083811015612dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db390613925565b60405180910390fd5b8091505092915050565b6000612dd06129b1565b90506000612de78284612fdc90919063ffffffff16565b9050612e3b81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e9882600954612d1e90919063ffffffff16565b600981905550612eb381600a54612d6890919063ffffffff16565b600a819055505050565b600080600080612ee96064612edb888a612fdc90919063ffffffff16565b6129dc90919063ffffffff16565b90506000612f136064612f05888b612fdc90919063ffffffff16565b6129dc90919063ffffffff16565b90506000612f3c82612f2e858c612d1e90919063ffffffff16565b612d1e90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612f6c8589612fdc90919063ffffffff16565b90506000612f838689612fdc90919063ffffffff16565b90506000612f9a8789612fdc90919063ffffffff16565b90506000612fc382612fb58587612d1e90919063ffffffff16565b612d1e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612fef5760009050613051565b60008284612ffd9190613bb7565b905082848261300c9190613b86565b1461304c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304390613965565b60405180910390fd5b809150505b92915050565b604051806080016040528060001515815260200160008152602001600081526020016000151581525090565b60008135905061309281614159565b92915050565b6000815190506130a781614159565b92915050565b6000813590506130bc81614170565b92915050565b6000815190506130d181614170565b92915050565b6000813590506130e681614187565b92915050565b6000813590506130fb8161419e565b92915050565b600081359050613110816141b5565b92915050565b600081519050613125816141b5565b92915050565b60006020828403121561314157613140613dfb565b5b600061314f84828501613083565b91505092915050565b60006020828403121561316e5761316d613dfb565b5b600061317c84828501613098565b91505092915050565b6000806040838503121561319c5761319b613dfb565b5b60006131aa85828601613083565b92505060206131bb85828601613083565b9150509250929050565b6000806000606084860312156131de576131dd613dfb565b5b60006131ec86828701613083565b93505060206131fd86828701613083565b925050604061320e86828701613101565b9150509250925092565b6000806040838503121561322f5761322e613dfb565b5b600061323d85828601613083565b925050602061324e85828601613101565b9150509250929050565b60006020828403121561326e5761326d613dfb565b5b600061327c848285016130ad565b91505092915050565b60006020828403121561329b5761329a613dfb565b5b60006132a9848285016130c2565b91505092915050565b6000602082840312156132c8576132c7613dfb565b5b60006132d6848285016130d7565b91505092915050565b600080604083850312156132f6576132f5613dfb565b5b6000613304858286016130d7565b925050602061331585828601613083565b9150509250929050565b60006020828403121561333557613334613dfb565b5b6000613343848285016130ec565b91505092915050565b60008060006060848603121561336557613364613dfb565b5b600061337386828701613116565b935050602061338486828701613116565b925050604061339586828701613116565b9150509250925092565b60006133ab83836133b7565b60208301905092915050565b6133c081613c45565b82525050565b6133cf81613c45565b82525050565b60006133e082613ae0565b6133ea8185613b03565b93506133f583613ad0565b8060005b8381101561342657815161340d888261339f565b975061341883613af6565b9250506001810190506133f9565b5085935050505092915050565b61343c81613c57565b82525050565b61344b81613c57565b82525050565b61345a81613c63565b82525050565b61346981613cd0565b82525050565b600061347a82613aeb565b6134848185613b14565b9350613494818560208601613ce2565b61349d81613e00565b840191505092915050565b60006134b382613aeb565b6134bd8185613b25565b93506134cd818560208601613ce2565b80840191505092915050565b60006134e6602083613b14565b91506134f182613e11565b602082019050919050565b6000613509601483613b14565b915061351482613e3a565b602082019050919050565b600061352c602a83613b14565b915061353782613e63565b604082019050919050565b600061354f602283613b14565b915061355a82613eb2565b604082019050919050565b6000613572601b83613b14565b915061357d82613f01565b602082019050919050565b6000613595602283613b14565b91506135a082613f2a565b604082019050919050565b60006135b8602183613b14565b91506135c382613f79565b604082019050919050565b60006135db602083613b14565b91506135e682613fc8565b602082019050919050565b60006135fe602983613b14565b915061360982613ff1565b604082019050919050565b6000613621602483613b14565b915061362c82614040565b604082019050919050565b6000613644601783613b14565b915061364f8261408f565b602082019050919050565b6000613667601783613b25565b9150613672826140b8565b601782019050919050565b600061368a601183613b25565b9150613695826140e1565b601182019050919050565b60006136ad602f83613b14565b91506136b88261410a565b604082019050919050565b6080820160008201516136d96000850182613433565b5060208201516136ec6020850182613718565b5060408201516136ff6040850182613718565b5060608201516137126060850182613433565b50505050565b61372181613cb9565b82525050565b61373081613cb9565b82525050565b61373f81613cc3565b82525050565b60006137508261365a565b915061375c82856134a8565b91506137678261367d565b915061377382846134a8565b91508190509392505050565b600060208201905061379460008301846133c6565b92915050565b60006040820190506137af60008301856133c6565b6137bc60208301846133c6565b9392505050565b60006040820190506137d860008301856133c6565b6137e56020830184613727565b9392505050565b600060c08201905061380160008301896133c6565b61380e6020830188613727565b61381b6040830187613460565b6138286060830186613460565b61383560808301856133c6565b61384260a0830184613727565b979650505050505050565b60006020820190506138626000830184613442565b92915050565b600060208201905061387d6000830184613451565b92915050565b6000602082019050818103600083015261389d818461346f565b905092915050565b600060208201905081810360008301526138be816134d9565b9050919050565b600060208201905081810360008301526138de816134fc565b9050919050565b600060208201905081810360008301526138fe8161351f565b9050919050565b6000602082019050818103600083015261391e81613542565b9050919050565b6000602082019050818103600083015261393e81613565565b9050919050565b6000602082019050818103600083015261395e81613588565b9050919050565b6000602082019050818103600083015261397e816135ab565b9050919050565b6000602082019050818103600083015261399e816135ce565b9050919050565b600060208201905081810360008301526139be816135f1565b9050919050565b600060208201905081810360008301526139de81613614565b9050919050565b600060208201905081810360008301526139fe81613637565b9050919050565b60006020820190508181036000830152613a1e816136a0565b9050919050565b6000608082019050613a3a60008301846136c3565b92915050565b6000602082019050613a556000830184613727565b92915050565b600060a082019050613a706000830188613727565b613a7d6020830187613460565b8181036040830152613a8f81866133d5565b9050613a9e60608301856133c6565b613aab6080830184613727565b9695505050505050565b6000602082019050613aca6000830184613736565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613b3b82613cb9565b9150613b4683613cb9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b7b57613b7a613d3f565b5b828201905092915050565b6000613b9182613cb9565b9150613b9c83613cb9565b925082613bac57613bab613d6e565b5b828204905092915050565b6000613bc282613cb9565b9150613bcd83613cb9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0657613c05613d3f565b5b828202905092915050565b6000613c1c82613cb9565b9150613c2783613cb9565b925082821015613c3a57613c39613d3f565b5b828203905092915050565b6000613c5082613c99565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613cdb82613cb9565b9050919050565b60005b83811015613d00578082015181840152602081019050613ce5565b83811115613d0f576000848401525b50505050565b6000613d2082613cb9565b91506000821415613d3457613d33613d3f565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f4c4f434b455220726f6c65207265717569726564000000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f626f742063616e6e6f74207472616e73666572206c6f636b65642062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61416281613c45565b811461416d57600080fd5b50565b61417981613c57565b811461418457600080fd5b50565b61419081613c63565b811461419b57600080fd5b50565b6141a781613c6d565b81146141b257600080fd5b50565b6141be81613cb9565b81146141c957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205c980d40cd916e9ef84a02438ae995286a2ae07aefd89fe3abf8aee60e3ffdbb64736f6c63430008070033

Deployed Bytecode Sourcemap

13197:12004:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7869:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15629:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16481:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15906:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16650:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9280:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20931:81;;;;;;;;;;;;;:::i;:::-;;9665:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15815:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14630:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10713:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17348:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17905:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16971:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17743:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23290:196;;;;;;;;;;;;;:::i;:::-;;16009:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5025:148;;;;;;;;;;;;;:::i;:::-;;17459:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13571:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4811:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8165:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15720:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6143:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18556:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16155:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23081:197;;;;;;;;;;;;;:::i;:::-;;21135:858;;;;;;;;;;;;;:::i;:::-;;17582:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10057;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16330:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13502:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7869:204;7954:4;7993:32;7978:47;;;:11;:47;;;;:87;;;;8029:36;8053:11;8029:23;:36::i;:::-;7978:87;7971:94;;7869:204;;;:::o;15629:83::-;15666:13;15699:5;;;;;;;;;;;;;;;;;15692:12;;15629:83;:::o;16481:161::-;16556:4;16573:39;16582:12;:10;:12::i;:::-;16596:7;16605:6;16573:8;:39::i;:::-;16630:4;16623:11;;16481:161;;;;:::o;15906:95::-;15959:7;13995:21;15979:14;;15906:95;:::o;16650:313::-;16748:4;16765:36;16775:6;16783:9;16794:6;16765:9;:36::i;:::-;16812:121;16821:6;16829:12;:10;:12::i;:::-;16843:89;16881:6;16843:89;;;;;;;;;;;;;;;;;:11;:19;16855:6;16843:19;;;;;;;;;;;;;;;:33;16863:12;:10;:12::i;:::-;16843:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16812:8;:121::i;:::-;16951:4;16944:11;;16650:313;;;;;:::o;9280:123::-;9346:7;9373:6;:12;9380:4;9373:12;;;;;;;;;;;:22;;;9366:29;;9280:123;;;:::o;20931:81::-;4948:12;:10;:12::i;:::-;4938:22;;:6;;;;;;;;;;:22;;;4930:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13995:21:::1;20982:12;:22;;;;20931:81::o:0;9665:147::-;9748:18;9761:4;9748:12;:18::i;:::-;7747:30;7758:4;7764:12;:10;:12::i;:::-;7747:10;:30::i;:::-;9779:25:::1;9790:4;9796:7;9779:10;:25::i;:::-;9665:147:::0;;;:::o;15815:83::-;15856:5;14384:1;15874:16;;15815:83;:::o;14630:30::-;;;;:::o;10713:218::-;10820:12;:10;:12::i;:::-;10809:23;;:7;:23;;;10801:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;10897:26;10909:4;10915:7;10897:11;:26::i;:::-;10713:218;;:::o;17348:103::-;17399:4;17423:8;:13;17432:3;17423:13;;;;;;;;;;;;;;;:20;;;;;;;;;;;;17416:27;;17348:103;;;:::o;17905:144::-;15050:34;13540:24;15071:12;:10;:12::i;:::-;15050:7;:34::i;:::-;15042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17995:5:::1;17972:8;:13;17981:3;17972:13;;;;;;;;;;;;;;;:20;;;:28;;;;;;;;;;;;;;;;;;18036:5;18011:8;:13;18020:3;18011:13;;;;;;;;;;;;;;;:22;;;:30;;;;;;;;;;;;;;;;;;17905:144:::0;:::o;16971:103::-;4948:12;:10;:12::i;:::-;4938:22;;:6;;;;;;;;;;:22;;;4930:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17061:5:::1;17043:15;;:23;;;;;;;;;;;;;;;;;;16971:103:::0;:::o;17743:150::-;15050:34;13540:24;15071:12;:10;:12::i;:::-;15050:7;:34::i;:::-;15042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17833:52:::1;;;;;;;;17841:4;17833:52;;;;;;17847:15;17833:52;;;;17864:14;17874:3;17864:9;:14::i;:::-;17833:52;;;;17880:4;17833:52;;;;::::0;17817:8:::1;:13;17826:3;17817:13;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17743:150:::0;:::o;23290:196::-;23356:17;;;;;;;;;;;23340:33;;:12;:10;:12::i;:::-;:33;;;23332:42;;;;;;23385:26;23414:21;23385:50;;23446:32;23459:18;23446:12;:32::i;:::-;23321:165;23290:196::o;16009:138::-;16075:7;16102:37;16122:7;:16;16130:7;16122:16;;;;;;;;;;;;;;;;16102:19;:37::i;:::-;16095:44;;16009:138;;;:::o;5025:148::-;4948:12;:10;:12::i;:::-;4938:22;;:6;;;;;;;;;;:22;;;4930:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5132:1:::1;5095:40;;5116:6;::::0;::::1;;;;;;;;5095:40;;;;;;;;;;;;5163:1;5146:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5025:148::o:0;17459:111::-;17515:14;;:::i;:::-;17549:8;:13;17558:3;17549:13;;;;;;;;;;;;;;;17542:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17459:111;;;:::o;13571:41::-;13611:1;13571:41;:::o;4811:79::-;4849:7;4876:6;;;;;;;;;;;4869:13;;4811:79;:::o;8165:139::-;8243:4;8267:6;:12;8274:4;8267:12;;;;;;;;;;;:20;;:29;8288:7;8267:29;;;;;;;;;;;;;;;;;;;;;;;;;8260:36;;8165:139;;;;:::o;15720:87::-;15759:13;15792:7;;;;;;;;;;;;;;;;;15785:14;;15720:87;:::o;6143:49::-;6188:4;6143:49;;;:::o;18556:156::-;18619:7;18680:24;18700:3;18680:19;:24::i;:::-;18646:8;:13;18655:3;18646:13;;;;;;;;;;;;;;;:31;;;:58;;;;:::i;:::-;18639:65;;18556:156;;;:::o;16155:167::-;16233:4;16250:42;16260:12;:10;:12::i;:::-;16274:9;16285:6;16250:9;:42::i;:::-;16310:4;16303:11;;16155:167;;;;:::o;23081:197::-;23147:17;;;;;;;;;;;23131:33;;:12;:10;:12::i;:::-;:33;;;23123:42;;;;;;23176:23;23202:24;23220:4;23202:9;:24::i;:::-;23176:50;;23237:33;23254:15;23237:16;:33::i;:::-;23112:166;23081:197::o;21135:858::-;4948:12;:10;:12::i;:::-;4938:22;;:6;;;;;;;;;;:22;;;4930:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21199:11:::1;;;;;;;;;;;21198:12;21190:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21266:15;21248;:33;;;;21292:35;21349:42;21292:100;;21421:16;21403:15;;:34;;;;;;;;;;;;;;;;;;21448:58;21465:4;21480:15;;;;;;;;;;;13995:21;21448:8;:58::i;:::-;21551:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21533:56;;;21598:4;21605:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21533:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21517:13;;:112;;;;;;;;;;;;;;;;;;21640:15;;;;;;;;;;;:31;;;21679:21;21710:4;21716:24;21734:4;21716:9;:24::i;:::-;21741:1;21743::::0;21745:7:::1;:5;:7::i;:::-;21753:15;21640:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21794:4;21780:11;;:18;;;;;;;;;;;;;;;;;;21827:4;21809:15;;:22;;;;;;;;;;;;;;;;;;21857:17;21842:12;:32;;;;21899:4;21885:11;;:18;;;;;;;;;;;;;;;;;;21921:13;;;;;;;;;;;21914:29;;;21952:15;;;;;;;;;;;21970:14;21914:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21179:814;21135:858::o:0;17582:149::-;15050:34;13540:24;15071:12;:10;:12::i;:::-;15050:7;:34::i;:::-;15042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17670:53:::1;;;;;;;;17678:4;17670:53;;;;;;17684:15;17670:53;;;;17701:14;17711:3;17701:9;:14::i;:::-;17670:53;;;;17717:5;17670:53;;;;::::0;17654:8:::1;:13;17663:3;17654:13;;;;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17582:149:::0;:::o;10057:::-;10141:18;10154:4;10141:12;:18::i;:::-;7747:30;7758:4;7764:12;:10;:12::i;:::-;7747:10;:30::i;:::-;10172:26:::1;10184:4;10190:7;10172:11;:26::i;:::-;10057:149:::0;;;:::o;16330:143::-;16411:7;16438:11;:18;16450:5;16438:18;;;;;;;;;;;;;;;:27;16457:7;16438:27;;;;;;;;;;;;;;;;16431:34;;16330:143;;;;:::o;13502:62::-;13540:24;13502:62;:::o;5750:157::-;5835:4;5874:25;5859:40;;;:11;:40;;;;5852:47;;5750:157;;;:::o;185:98::-;238:7;265:10;258:17;;185:98;:::o;18720:335::-;18830:1;18813:19;;:5;:19;;;;18805:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18911:1;18892:21;;:7;:21;;;;18884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18993:6;18963:11;:18;18975:5;18963:18;;;;;;;;;;;;;;;:27;18982:7;18963:27;;;;;;;;;;;;;;;:36;;;;19031:7;19015:32;;19024:5;19015:32;;;19040:6;19015:32;;;;;;:::i;:::-;;;;;;;;18720:335;;;:::o;19063:1365::-;19160:1;19151:6;:10;19143:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19264:8;:14;19273:4;19264:14;;;;;;;;;;;;;;;:21;;;;;;;;;;;;19260:285;;;19302:21;19326:25;19346:4;19326:19;:25::i;:::-;19302:49;;19393:8;:14;19402:4;19393:14;;;;;;;;;;;;;;;:23;;;;;;;;;;;;19392:24;:71;;;;;19450:13;19439:6;19421:15;19431:4;19421:9;:15::i;:::-;:24;;;;:::i;:::-;19420:43;;19392:71;19366:167;;;;;;;;;;;;:::i;:::-;;;;;;;;;19287:258;19260:285;19585:4;19569:21;;:4;:21;;;19565:811;;19632:1;19607:22;:26;;;;19660:1;19648:9;:13;;;;19688;;;;;;;;;;;19680:21;;:4;:21;;;:55;;;;;19719:15;;;;;;;;;;;19705:30;;:2;:30;;;;19680:55;:83;;;;;19741:18;:22;19760:2;19741:22;;;;;;;;;;;;;;;;;;;;;;;;;19739:24;19680:83;:102;;;;;19767:15;;;;;;;;;;;19680:102;19676:268;;;19843:10;19825:15;;:28;;;;:::i;:::-;19807:15;:46;19803:126;;;19896:12;;19886:6;:22;;19878:31;;;;;;19803:126;19676:268;19960:28;19991:24;20009:4;19991:9;:24::i;:::-;19960:55;;20035:6;;;;;;;;;;;20034:7;:32;;;;;20053:13;;;;;;;;;;;20045:21;;:4;:21;;;;20034:32;:47;;;;;20070:11;;;;;;;;;;;20034:47;20030:335;;;20102:38;20119:20;20102:16;:38::i;:::-;20159:26;20188:21;20159:50;;20252:18;20231;:39;20228:122;;;20295:35;20308:21;20295:12;:35::i;:::-;20228:122;20083:282;20030:335;19592:784;19565:811;20390:30;20405:4;20410:2;20413:6;20390:14;:30::i;:::-;19063:1365;;;:::o;1719:190::-;1805:7;1838:1;1833;:6;;1841:12;1825:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1865:9;1881:1;1877;:5;;;;:::i;:::-;1865:17;;1900:1;1893:8;;;1719:190;;;;;:::o;8594:497::-;8675:22;8683:4;8689:7;8675;:22::i;:::-;8670:414;;8863:41;8891:7;8863:41;;8901:2;8863:19;:41::i;:::-;8977:38;9005:4;8997:13;;9012:2;8977:19;:38::i;:::-;8768:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8714:358;;;;;;;;;;;:::i;:::-;;;;;;;;8670:414;8594:497;;:::o;11961:229::-;12036:22;12044:4;12050:7;12036;:22::i;:::-;12031:152;;12107:4;12075:6;:12;12082:4;12075:12;;;;;;;;;;;:20;;:29;12096:7;12075:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;12158:12;:10;:12::i;:::-;12131:40;;12149:7;12131:40;;12143:4;12131:40;;;;;;;;;;12031:152;11961:229;;:::o;12198:230::-;12273:22;12281:4;12287:7;12273;:22::i;:::-;12269:152;;;12344:5;12312:6;:12;12319:4;12312:12;;;;;;;;;;;:20;;:29;12333:7;12312:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12396:12;:10;:12::i;:::-;12369:40;;12387:7;12369:40;;12381:4;12369:40;;;;;;;;;;12269:152;12198:230;;:::o;21024:99::-;21081:17;;;;;;;;;;;:26;;:34;21108:6;21081:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21024:99;:::o;17082:254::-;17149:7;17188;;17177;:18;;17169:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17253:19;17276:10;:8;:10::i;:::-;17253:33;;17304:24;17316:11;17304:7;:11;;:24;;;;:::i;:::-;17297:31;;;17082:254;;;:::o;18061:483::-;18126:23;18162:19;18184:8;:13;18193:3;18184:13;;;;;;;;;;;;;;;18162:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18208:18;18267:6;18248:4;:15;;;18230;:33;;;;:::i;:::-;18229:44;;;;:::i;:::-;18208:65;;18290:4;:11;;;:41;;;;;13611:1;18305:10;:26;18290:41;18286:218;;;13611:1;18380:4;:22;;;18367:10;:35;;;;:::i;:::-;18366:53;;;;:::i;:::-;18348:71;;18286:218;;;18470:4;:22;;;18452:40;;18286:218;18514:22;;18061:483;;;:::o;20436:::-;14815:4;14806:6;;:13;;;;;;;;;;;;;;;;;;20514:21:::1;20552:1;20538:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20514:40;;20583:4;20565;20570:1;20565:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;20609:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20599:4;20604:1;20599:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;20642:62;20659:4;20674:15;;;;;;;;;;;20692:11;20642:8;:62::i;:::-;20715:15;;;;;;;;;;;:66;;;20796:11;20822:1;20838:4;20865;20885:15;20715:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20503:416;14851:5:::0;14842:6;;:14;;;;;;;;;;;;;;;;;;20436:483;:::o;22015:146::-;22109:44;22127:6;22135:9;22146:6;22109:17;:44::i;:::-;22015:146;;;:::o;3998:451::-;4073:13;4099:19;4144:1;4135:6;4131:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;4121:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4099:47;;4157:15;:6;4164:1;4157:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;4183;:6;4190:1;4183:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;4214:9;4239:1;4230:6;4226:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;4214:26;;4209:135;4246:1;4242;:5;4209:135;;;4281:12;4302:3;4294:5;:11;4281:25;;;;;;;:::i;:::-;;;;;4269:6;4276:1;4269:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;4331:1;4321:11;;;;;4249:3;;;;:::i;:::-;;;4209:135;;;;4371:1;4362:5;:10;4354:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4434:6;4420:21;;;3998:451;;;;:::o;24765:163::-;24806:7;24827:15;24844;24863:19;:17;:19::i;:::-;24826:56;;;;24900:20;24912:7;24900;:11;;:20;;;;:::i;:::-;24893:27;;;;24765:163;:::o;2171:132::-;2229:7;2256:39;2260:1;2263;2256:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2249:46;;2171:132;;;;:::o;22169:488::-;22268:15;22285:23;22310:12;22324:23;22349:12;22363:13;22380:19;22391:7;22380:10;:19::i;:::-;22267:132;;;;;;;;;;;;22428:28;22448:7;22428;:15;22436:6;22428:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22410:7;:15;22418:6;22410:15;;;;;;;;;;;;;;;:46;;;;22488:39;22511:15;22488:7;:18;22496:9;22488:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22467:7;:18;22475:9;22467:18;;;;;;;;;;;;;;;:60;;;;22539:16;22549:5;22539:9;:16::i;:::-;22566:23;22578:4;22584;22566:11;:23::i;:::-;22622:9;22605:44;;22614:6;22605:44;;;22633:15;22605:44;;;;;;:::i;:::-;;;;;;;;22256:401;;;;;;22169:488;;;:::o;24936:262::-;24986:7;24995;25015:15;25033:7;;25015:25;;25051:15;13995:21;25051:25;;25107:20;13995:21;25107:7;;:11;;:20;;;;:::i;:::-;25097:7;:30;25093:61;;;25137:7;;13995:21;25129:25;;;;;;;;25093:61;25173:7;25182;25165:25;;;;;;24936:262;;;:::o;2311:189::-;2397:7;2429:1;2425;:5;2432:12;2417:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2456:9;2472:1;2468;:5;;;;:::i;:::-;2456:17;;2491:1;2484:8;;;2311:189;;;;;:::o;23500:484::-;23559:7;23568;23577;23586;23595;23604;23625:23;23650:12;23664:13;23681:55;23693:7;23702:22;;23726:9;;23681:11;:55::i;:::-;23624:112;;;;;;23747:19;23770:10;:8;:10::i;:::-;23747:33;;23792:15;23809:23;23834:12;23850:46;23862:7;23871:4;23877:5;23884:11;23850;:46::i;:::-;23791:105;;;;;;23915:7;23924:15;23941:4;23947:15;23964:4;23970:5;23907:69;;;;;;;;;;;;;;;;;;;23500:484;;;;;;;:::o;1575:136::-;1633:7;1660:43;1664:1;1667;1660:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1653:50;;1575:136;;;;:::o;1388:179::-;1446:7;1466:9;1482:1;1478;:5;;;;:::i;:::-;1466:17;;1507:1;1502;:6;;1494:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1558:1;1551:8;;;1388:179;;;;:::o;22665:212::-;22718:19;22741:10;:8;:10::i;:::-;22718:33;;22762:13;22778:22;22788:11;22778:5;:9;;:22;;;;:::i;:::-;22762:38;;22836:33;22863:5;22836:7;:22;22852:4;22836:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;22811:7;:22;22827:4;22811:22;;;;;;;;;;;;;;;:58;;;;22707:170;;22665:212;:::o;22885:147::-;22963:17;22975:4;22963:7;;:11;;:17;;;;:::i;:::-;22953:7;:27;;;;23004:20;23019:4;23004:10;;:14;;:20;;;;:::i;:::-;22991:10;:33;;;;22885:147;;:::o;23992:351::-;24085:7;24094;24103;24123:12;24138:28;24162:3;24138:19;24150:6;24138:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;24123:43;;24177:13;24193:29;24218:3;24193:20;24205:7;24193;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;24177:45;;24233:23;24259:28;24281:5;24259:17;24271:4;24259:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;24233:54;;24306:15;24323:4;24329:5;24298:37;;;;;;;;;23992:351;;;;;;;:::o;24351:409::-;24461:7;24470;24479;24499:15;24517:24;24529:11;24517:7;:11;;:24;;;;:::i;:::-;24499:42;;24552:12;24567:21;24576:11;24567:4;:8;;:21;;;;:::i;:::-;24552:36;;24599:13;24615:22;24625:11;24615:5;:9;;:22;;;;:::i;:::-;24599:38;;24648:23;24674:28;24696:5;24674:17;24686:4;24674:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;24648:54;;24721:7;24730:15;24747:4;24713:39;;;;;;;;;;24351:409;;;;;;;;:::o;1917:246::-;1975:7;2004:1;1999;:6;1995:47;;;2029:1;2022:8;;;;1995:47;2052:9;2068:1;2064;:5;;;;:::i;:::-;2052:17;;2097:1;2092;2088;:5;;;;:::i;:::-;:10;2080:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2154:1;2147:8;;;1917:246;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;583:139;;;;:::o;728:137::-;773:5;811:6;798:20;789:29;;827:32;853:5;827:32;:::i;:::-;728:137;;;;:::o;871:139::-;917:5;955:6;942:20;933:29;;971:33;998:5;971:33;:::i;:::-;871:139;;;;:::o;1016:143::-;1073:5;1104:6;1098:13;1089:22;;1120:33;1147:5;1120:33;:::i;:::-;1016:143;;;;:::o;1165:329::-;1224:6;1273:2;1261:9;1252:7;1248:23;1244:32;1241:119;;;1279:79;;:::i;:::-;1241:119;1399:1;1424:53;1469:7;1460:6;1449:9;1445:22;1424:53;:::i;:::-;1414:63;;1370:117;1165:329;;;;:::o;1500:351::-;1570:6;1619:2;1607:9;1598:7;1594:23;1590:32;1587:119;;;1625:79;;:::i;:::-;1587:119;1745:1;1770:64;1826:7;1817:6;1806:9;1802:22;1770:64;:::i;:::-;1760:74;;1716:128;1500:351;;;;:::o;1857:474::-;1925:6;1933;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;2235:2;2261:53;2306:7;2297:6;2286:9;2282:22;2261:53;:::i;:::-;2251:63;;2206:118;1857:474;;;;;:::o;2337:619::-;2414:6;2422;2430;2479:2;2467:9;2458:7;2454:23;2450:32;2447:119;;;2485:79;;:::i;:::-;2447:119;2605:1;2630:53;2675:7;2666:6;2655:9;2651:22;2630:53;:::i;:::-;2620:63;;2576:117;2732:2;2758:53;2803:7;2794:6;2783:9;2779:22;2758:53;:::i;:::-;2748:63;;2703:118;2860:2;2886:53;2931:7;2922:6;2911:9;2907:22;2886:53;:::i;:::-;2876:63;;2831:118;2337:619;;;;;:::o;2962:474::-;3030:6;3038;3087:2;3075:9;3066:7;3062:23;3058:32;3055:119;;;3093:79;;:::i;:::-;3055:119;3213:1;3238:53;3283:7;3274:6;3263:9;3259:22;3238:53;:::i;:::-;3228:63;;3184:117;3340:2;3366:53;3411:7;3402:6;3391:9;3387:22;3366:53;:::i;:::-;3356:63;;3311:118;2962:474;;;;;:::o;3442:323::-;3498:6;3547:2;3535:9;3526:7;3522:23;3518:32;3515:119;;;3553:79;;:::i;:::-;3515:119;3673:1;3698:50;3740:7;3731:6;3720:9;3716:22;3698:50;:::i;:::-;3688:60;;3644:114;3442:323;;;;:::o;3771:345::-;3838:6;3887:2;3875:9;3866:7;3862:23;3858:32;3855:119;;;3893:79;;:::i;:::-;3855:119;4013:1;4038:61;4091:7;4082:6;4071:9;4067:22;4038:61;:::i;:::-;4028:71;;3984:125;3771:345;;;;:::o;4122:329::-;4181:6;4230:2;4218:9;4209:7;4205:23;4201:32;4198:119;;;4236:79;;:::i;:::-;4198:119;4356:1;4381:53;4426:7;4417:6;4406:9;4402:22;4381:53;:::i;:::-;4371:63;;4327:117;4122:329;;;;:::o;4457:474::-;4525:6;4533;4582:2;4570:9;4561:7;4557:23;4553:32;4550:119;;;4588:79;;:::i;:::-;4550:119;4708:1;4733:53;4778:7;4769:6;4758:9;4754:22;4733:53;:::i;:::-;4723:63;;4679:117;4835:2;4861:53;4906:7;4897:6;4886:9;4882:22;4861:53;:::i;:::-;4851:63;;4806:118;4457:474;;;;;:::o;4937:327::-;4995:6;5044:2;5032:9;5023:7;5019:23;5015:32;5012:119;;;5050:79;;:::i;:::-;5012:119;5170:1;5195:52;5239:7;5230:6;5219:9;5215:22;5195:52;:::i;:::-;5185:62;;5141:116;4937:327;;;;:::o;5270:663::-;5358:6;5366;5374;5423:2;5411:9;5402:7;5398:23;5394:32;5391:119;;;5429:79;;:::i;:::-;5391:119;5549:1;5574:64;5630:7;5621:6;5610:9;5606:22;5574:64;:::i;:::-;5564:74;;5520:128;5687:2;5713:64;5769:7;5760:6;5749:9;5745:22;5713:64;:::i;:::-;5703:74;;5658:129;5826:2;5852:64;5908:7;5899:6;5888:9;5884:22;5852:64;:::i;:::-;5842:74;;5797:129;5270:663;;;;;:::o;5939:179::-;6008:10;6029:46;6071:3;6063:6;6029:46;:::i;:::-;6107:4;6102:3;6098:14;6084:28;;5939:179;;;;:::o;6124:108::-;6201:24;6219:5;6201:24;:::i;:::-;6196:3;6189:37;6124:108;;:::o;6238:118::-;6325:24;6343:5;6325:24;:::i;:::-;6320:3;6313:37;6238:118;;:::o;6392:732::-;6511:3;6540:54;6588:5;6540:54;:::i;:::-;6610:86;6689:6;6684:3;6610:86;:::i;:::-;6603:93;;6720:56;6770:5;6720:56;:::i;:::-;6799:7;6830:1;6815:284;6840:6;6837:1;6834:13;6815:284;;;6916:6;6910:13;6943:63;7002:3;6987:13;6943:63;:::i;:::-;6936:70;;7029:60;7082:6;7029:60;:::i;:::-;7019:70;;6875:224;6862:1;6859;6855:9;6850:14;;6815:284;;;6819:14;7115:3;7108:10;;6516:608;;;6392:732;;;;:::o;7130:99::-;7201:21;7216:5;7201:21;:::i;:::-;7196:3;7189:34;7130:99;;:::o;7235:109::-;7316:21;7331:5;7316:21;:::i;:::-;7311:3;7304:34;7235:109;;:::o;7350:118::-;7437:24;7455:5;7437:24;:::i;:::-;7432:3;7425:37;7350:118;;:::o;7474:147::-;7569:45;7608:5;7569:45;:::i;:::-;7564:3;7557:58;7474:147;;:::o;7627:364::-;7715:3;7743:39;7776:5;7743:39;:::i;:::-;7798:71;7862:6;7857:3;7798:71;:::i;:::-;7791:78;;7878:52;7923:6;7918:3;7911:4;7904:5;7900:16;7878:52;:::i;:::-;7955:29;7977:6;7955:29;:::i;:::-;7950:3;7946:39;7939:46;;7719:272;7627:364;;;;:::o;7997:377::-;8103:3;8131:39;8164:5;8131:39;:::i;:::-;8186:89;8268:6;8263:3;8186:89;:::i;:::-;8179:96;;8284:52;8329:6;8324:3;8317:4;8310:5;8306:16;8284:52;:::i;:::-;8361:6;8356:3;8352:16;8345:23;;8107:267;7997:377;;;;:::o;8380:366::-;8522:3;8543:67;8607:2;8602:3;8543:67;:::i;:::-;8536:74;;8619:93;8708:3;8619:93;:::i;:::-;8737:2;8732:3;8728:12;8721:19;;8380:366;;;:::o;8752:::-;8894:3;8915:67;8979:2;8974:3;8915:67;:::i;:::-;8908:74;;8991:93;9080:3;8991:93;:::i;:::-;9109:2;9104:3;9100:12;9093:19;;8752:366;;;:::o;9124:::-;9266:3;9287:67;9351:2;9346:3;9287:67;:::i;:::-;9280:74;;9363:93;9452:3;9363:93;:::i;:::-;9481:2;9476:3;9472:12;9465:19;;9124:366;;;:::o;9496:::-;9638:3;9659:67;9723:2;9718:3;9659:67;:::i;:::-;9652:74;;9735:93;9824:3;9735:93;:::i;:::-;9853:2;9848:3;9844:12;9837:19;;9496:366;;;:::o;9868:::-;10010:3;10031:67;10095:2;10090:3;10031:67;:::i;:::-;10024:74;;10107:93;10196:3;10107:93;:::i;:::-;10225:2;10220:3;10216:12;10209:19;;9868:366;;;:::o;10240:::-;10382:3;10403:67;10467:2;10462:3;10403:67;:::i;:::-;10396:74;;10479:93;10568:3;10479:93;:::i;:::-;10597:2;10592:3;10588:12;10581:19;;10240:366;;;:::o;10612:::-;10754:3;10775:67;10839:2;10834:3;10775:67;:::i;:::-;10768:74;;10851:93;10940:3;10851:93;:::i;:::-;10969:2;10964:3;10960:12;10953:19;;10612:366;;;:::o;10984:::-;11126:3;11147:67;11211:2;11206:3;11147:67;:::i;:::-;11140:74;;11223:93;11312:3;11223:93;:::i;:::-;11341:2;11336:3;11332:12;11325:19;;10984:366;;;:::o;11356:::-;11498:3;11519:67;11583:2;11578:3;11519:67;:::i;:::-;11512:74;;11595:93;11684:3;11595:93;:::i;:::-;11713:2;11708:3;11704:12;11697:19;;11356:366;;;:::o;11728:::-;11870:3;11891:67;11955:2;11950:3;11891:67;:::i;:::-;11884:74;;11967:93;12056:3;11967:93;:::i;:::-;12085:2;12080:3;12076:12;12069:19;;11728:366;;;:::o;12100:::-;12242:3;12263:67;12327:2;12322:3;12263:67;:::i;:::-;12256:74;;12339:93;12428:3;12339:93;:::i;:::-;12457:2;12452:3;12448:12;12441:19;;12100:366;;;:::o;12472:402::-;12632:3;12653:85;12735:2;12730:3;12653:85;:::i;:::-;12646:92;;12747:93;12836:3;12747:93;:::i;:::-;12865:2;12860:3;12856:12;12849:19;;12472:402;;;:::o;12880:::-;13040:3;13061:85;13143:2;13138:3;13061:85;:::i;:::-;13054:92;;13155:93;13244:3;13155:93;:::i;:::-;13273:2;13268:3;13264:12;13257:19;;12880:402;;;:::o;13288:366::-;13430:3;13451:67;13515:2;13510:3;13451:67;:::i;:::-;13444:74;;13527:93;13616:3;13527:93;:::i;:::-;13645:2;13640:3;13636:12;13629:19;;13288:366;;;:::o;13720:866::-;13865:4;13860:3;13856:14;13954:4;13947:5;13943:16;13937:23;13973:57;14024:4;14019:3;14015:14;14001:12;13973:57;:::i;:::-;13880:160;14128:4;14121:5;14117:16;14111:23;14147:63;14204:4;14199:3;14195:14;14181:12;14147:63;:::i;:::-;14050:170;14315:4;14308:5;14304:16;14298:23;14334:63;14391:4;14386:3;14382:14;14368:12;14334:63;:::i;:::-;14230:177;14493:4;14486:5;14482:16;14476:23;14512:57;14563:4;14558:3;14554:14;14540:12;14512:57;:::i;:::-;14417:162;13834:752;13720:866;;:::o;14592:108::-;14669:24;14687:5;14669:24;:::i;:::-;14664:3;14657:37;14592:108;;:::o;14706:118::-;14793:24;14811:5;14793:24;:::i;:::-;14788:3;14781:37;14706:118;;:::o;14830:112::-;14913:22;14929:5;14913:22;:::i;:::-;14908:3;14901:35;14830:112;;:::o;14948:967::-;15330:3;15352:148;15496:3;15352:148;:::i;:::-;15345:155;;15517:95;15608:3;15599:6;15517:95;:::i;:::-;15510:102;;15629:148;15773:3;15629:148;:::i;:::-;15622:155;;15794:95;15885:3;15876:6;15794:95;:::i;:::-;15787:102;;15906:3;15899:10;;14948:967;;;;;:::o;15921:222::-;16014:4;16052:2;16041:9;16037:18;16029:26;;16065:71;16133:1;16122:9;16118:17;16109:6;16065:71;:::i;:::-;15921:222;;;;:::o;16149:332::-;16270:4;16308:2;16297:9;16293:18;16285:26;;16321:71;16389:1;16378:9;16374:17;16365:6;16321:71;:::i;:::-;16402:72;16470:2;16459:9;16455:18;16446:6;16402:72;:::i;:::-;16149:332;;;;;:::o;16487:::-;16608:4;16646:2;16635:9;16631:18;16623:26;;16659:71;16727:1;16716:9;16712:17;16703:6;16659:71;:::i;:::-;16740:72;16808:2;16797:9;16793:18;16784:6;16740:72;:::i;:::-;16487:332;;;;;:::o;16825:807::-;17074:4;17112:3;17101:9;17097:19;17089:27;;17126:71;17194:1;17183:9;17179:17;17170:6;17126:71;:::i;:::-;17207:72;17275:2;17264:9;17260:18;17251:6;17207:72;:::i;:::-;17289:80;17365:2;17354:9;17350:18;17341:6;17289:80;:::i;:::-;17379;17455:2;17444:9;17440:18;17431:6;17379:80;:::i;:::-;17469:73;17537:3;17526:9;17522:19;17513:6;17469:73;:::i;:::-;17552;17620:3;17609:9;17605:19;17596:6;17552:73;:::i;:::-;16825:807;;;;;;;;;:::o;17638:210::-;17725:4;17763:2;17752:9;17748:18;17740:26;;17776:65;17838:1;17827:9;17823:17;17814:6;17776:65;:::i;:::-;17638:210;;;;:::o;17854:222::-;17947:4;17985:2;17974:9;17970:18;17962:26;;17998:71;18066:1;18055:9;18051:17;18042:6;17998:71;:::i;:::-;17854:222;;;;:::o;18082:313::-;18195:4;18233:2;18222:9;18218:18;18210:26;;18282:9;18276:4;18272:20;18268:1;18257:9;18253:17;18246:47;18310:78;18383:4;18374:6;18310:78;:::i;:::-;18302:86;;18082:313;;;;:::o;18401:419::-;18567:4;18605:2;18594:9;18590:18;18582:26;;18654:9;18648:4;18644:20;18640:1;18629:9;18625:17;18618:47;18682:131;18808:4;18682:131;:::i;:::-;18674:139;;18401:419;;;:::o;18826:::-;18992:4;19030:2;19019:9;19015:18;19007:26;;19079:9;19073:4;19069:20;19065:1;19054:9;19050:17;19043:47;19107:131;19233:4;19107:131;:::i;:::-;19099:139;;18826:419;;;:::o;19251:::-;19417:4;19455:2;19444:9;19440:18;19432:26;;19504:9;19498:4;19494:20;19490:1;19479:9;19475:17;19468:47;19532:131;19658:4;19532:131;:::i;:::-;19524:139;;19251:419;;;:::o;19676:::-;19842:4;19880:2;19869:9;19865:18;19857:26;;19929:9;19923:4;19919:20;19915:1;19904:9;19900:17;19893:47;19957:131;20083:4;19957:131;:::i;:::-;19949:139;;19676:419;;;:::o;20101:::-;20267:4;20305:2;20294:9;20290:18;20282:26;;20354:9;20348:4;20344:20;20340:1;20329:9;20325:17;20318:47;20382:131;20508:4;20382:131;:::i;:::-;20374:139;;20101:419;;;:::o;20526:::-;20692:4;20730:2;20719:9;20715:18;20707:26;;20779:9;20773:4;20769:20;20765:1;20754:9;20750:17;20743:47;20807:131;20933:4;20807:131;:::i;:::-;20799:139;;20526:419;;;:::o;20951:::-;21117:4;21155:2;21144:9;21140:18;21132:26;;21204:9;21198:4;21194:20;21190:1;21179:9;21175:17;21168:47;21232:131;21358:4;21232:131;:::i;:::-;21224:139;;20951:419;;;:::o;21376:::-;21542:4;21580:2;21569:9;21565:18;21557:26;;21629:9;21623:4;21619:20;21615:1;21604:9;21600:17;21593:47;21657:131;21783:4;21657:131;:::i;:::-;21649:139;;21376:419;;;:::o;21801:::-;21967:4;22005:2;21994:9;21990:18;21982:26;;22054:9;22048:4;22044:20;22040:1;22029:9;22025:17;22018:47;22082:131;22208:4;22082:131;:::i;:::-;22074:139;;21801:419;;;:::o;22226:::-;22392:4;22430:2;22419:9;22415:18;22407:26;;22479:9;22473:4;22469:20;22465:1;22454:9;22450:17;22443:47;22507:131;22633:4;22507:131;:::i;:::-;22499:139;;22226:419;;;:::o;22651:::-;22817:4;22855:2;22844:9;22840:18;22832:26;;22904:9;22898:4;22894:20;22890:1;22879:9;22875:17;22868:47;22932:131;23058:4;22932:131;:::i;:::-;22924:139;;22651:419;;;:::o;23076:::-;23242:4;23280:2;23269:9;23265:18;23257:26;;23329:9;23323:4;23319:20;23315:1;23304:9;23300:17;23293:47;23357:131;23483:4;23357:131;:::i;:::-;23349:139;;23076:419;;;:::o;23501:319::-;23642:4;23680:3;23669:9;23665:19;23657:27;;23694:119;23810:1;23799:9;23795:17;23786:6;23694:119;:::i;:::-;23501:319;;;;:::o;23826:222::-;23919:4;23957:2;23946:9;23942:18;23934:26;;23970:71;24038:1;24027:9;24023:17;24014:6;23970:71;:::i;:::-;23826:222;;;;:::o;24054:831::-;24317:4;24355:3;24344:9;24340:19;24332:27;;24369:71;24437:1;24426:9;24422:17;24413:6;24369:71;:::i;:::-;24450:80;24526:2;24515:9;24511:18;24502:6;24450:80;:::i;:::-;24577:9;24571:4;24567:20;24562:2;24551:9;24547:18;24540:48;24605:108;24708:4;24699:6;24605:108;:::i;:::-;24597:116;;24723:72;24791:2;24780:9;24776:18;24767:6;24723:72;:::i;:::-;24805:73;24873:3;24862:9;24858:19;24849:6;24805:73;:::i;:::-;24054:831;;;;;;;;:::o;24891:214::-;24980:4;25018:2;25007:9;25003:18;24995:26;;25031:67;25095:1;25084:9;25080:17;25071:6;25031:67;:::i;:::-;24891:214;;;;:::o;25192:132::-;25259:4;25282:3;25274:11;;25312:4;25307:3;25303:14;25295:22;;25192:132;;;:::o;25330:114::-;25397:6;25431:5;25425:12;25415:22;;25330:114;;;:::o;25450:99::-;25502:6;25536:5;25530:12;25520:22;;25450:99;;;:::o;25555:113::-;25625:4;25657;25652:3;25648:14;25640:22;;25555:113;;;:::o;25674:184::-;25773:11;25807:6;25802:3;25795:19;25847:4;25842:3;25838:14;25823:29;;25674:184;;;;:::o;25864:169::-;25948:11;25982:6;25977:3;25970:19;26022:4;26017:3;26013:14;25998:29;;25864:169;;;;:::o;26039:148::-;26141:11;26178:3;26163:18;;26039:148;;;;:::o;26193:305::-;26233:3;26252:20;26270:1;26252:20;:::i;:::-;26247:25;;26286:20;26304:1;26286:20;:::i;:::-;26281:25;;26440:1;26372:66;26368:74;26365:1;26362:81;26359:107;;;26446:18;;:::i;:::-;26359:107;26490:1;26487;26483:9;26476:16;;26193:305;;;;:::o;26504:185::-;26544:1;26561:20;26579:1;26561:20;:::i;:::-;26556:25;;26595:20;26613:1;26595:20;:::i;:::-;26590:25;;26634:1;26624:35;;26639:18;;:::i;:::-;26624:35;26681:1;26678;26674:9;26669:14;;26504:185;;;;:::o;26695:348::-;26735:7;26758:20;26776:1;26758:20;:::i;:::-;26753:25;;26792:20;26810:1;26792:20;:::i;:::-;26787:25;;26980:1;26912:66;26908:74;26905:1;26902:81;26897:1;26890:9;26883:17;26879:105;26876:131;;;26987:18;;:::i;:::-;26876:131;27035:1;27032;27028:9;27017:20;;26695:348;;;;:::o;27049:191::-;27089:4;27109:20;27127:1;27109:20;:::i;:::-;27104:25;;27143:20;27161:1;27143:20;:::i;:::-;27138:25;;27182:1;27179;27176:8;27173:34;;;27187:18;;:::i;:::-;27173:34;27232:1;27229;27225:9;27217:17;;27049:191;;;;:::o;27246:96::-;27283:7;27312:24;27330:5;27312:24;:::i;:::-;27301:35;;27246:96;;;:::o;27348:90::-;27382:7;27425:5;27418:13;27411:21;27400:32;;27348:90;;;:::o;27444:77::-;27481:7;27510:5;27499:16;;27444:77;;;:::o;27527:149::-;27563:7;27603:66;27596:5;27592:78;27581:89;;27527:149;;;:::o;27682:126::-;27719:7;27759:42;27752:5;27748:54;27737:65;;27682:126;;;:::o;27814:77::-;27851:7;27880:5;27869:16;;27814:77;;;:::o;27897:86::-;27932:7;27972:4;27965:5;27961:16;27950:27;;27897:86;;;:::o;27989:121::-;28047:9;28080:24;28098:5;28080:24;:::i;:::-;28067:37;;27989:121;;;:::o;28116:307::-;28184:1;28194:113;28208:6;28205:1;28202:13;28194:113;;;28293:1;28288:3;28284:11;28278:18;28274:1;28269:3;28265:11;28258:39;28230:2;28227:1;28223:10;28218:15;;28194:113;;;28325:6;28322:1;28319:13;28316:101;;;28405:1;28396:6;28391:3;28387:16;28380:27;28316:101;28165:258;28116:307;;;:::o;28429:171::-;28468:3;28491:24;28509:5;28491:24;:::i;:::-;28482:33;;28537:4;28530:5;28527:15;28524:41;;;28545:18;;:::i;:::-;28524:41;28592:1;28585:5;28581:13;28574:20;;28429:171;;;:::o;28606:180::-;28654:77;28651:1;28644:88;28751:4;28748:1;28741:15;28775:4;28772:1;28765:15;28792:180;28840:77;28837:1;28830:88;28937:4;28934:1;28927:15;28961:4;28958:1;28951:15;28978:180;29026:77;29023:1;29016:88;29123:4;29120:1;29113:15;29147:4;29144:1;29137:15;29164:180;29212:77;29209:1;29202:88;29309:4;29306:1;29299:15;29333:4;29330:1;29323:15;29473:117;29582:1;29579;29572:12;29596:102;29637:6;29688:2;29684:7;29679:2;29672:5;29668:14;29664:28;29654:38;;29596:102;;;:::o;29704:182::-;29844:34;29840:1;29832:6;29828:14;29821:58;29704:182;:::o;29892:170::-;30032:22;30028:1;30020:6;30016:14;30009:46;29892:170;:::o;30068:229::-;30208:34;30204:1;30196:6;30192:14;30185:58;30277:12;30272:2;30264:6;30260:15;30253:37;30068:229;:::o;30303:221::-;30443:34;30439:1;30431:6;30427:14;30420:58;30512:4;30507:2;30499:6;30495:15;30488:29;30303:221;:::o;30530:177::-;30670:29;30666:1;30658:6;30654:14;30647:53;30530:177;:::o;30713:221::-;30853:34;30849:1;30841:6;30837:14;30830:58;30922:4;30917:2;30909:6;30905:15;30898:29;30713:221;:::o;30940:220::-;31080:34;31076:1;31068:6;31064:14;31057:58;31149:3;31144:2;31136:6;31132:15;31125:28;30940:220;:::o;31166:182::-;31306:34;31302:1;31294:6;31290:14;31283:58;31166:182;:::o;31354:228::-;31494:34;31490:1;31482:6;31478:14;31471:58;31563:11;31558:2;31550:6;31546:15;31539:36;31354:228;:::o;31588:223::-;31728:34;31724:1;31716:6;31712:14;31705:58;31797:6;31792:2;31784:6;31780:15;31773:31;31588:223;:::o;31817:173::-;31957:25;31953:1;31945:6;31941:14;31934:49;31817:173;:::o;31996:::-;32136:25;32132:1;32124:6;32120:14;32113:49;31996:173;:::o;32175:167::-;32315:19;32311:1;32303:6;32299:14;32292:43;32175:167;:::o;32348:234::-;32488:34;32484:1;32476:6;32472:14;32465:58;32557:17;32552:2;32544:6;32540:15;32533:42;32348:234;:::o;32588:122::-;32661:24;32679:5;32661:24;:::i;:::-;32654:5;32651:35;32641:63;;32700:1;32697;32690:12;32641:63;32588:122;:::o;32716:116::-;32786:21;32801:5;32786:21;:::i;:::-;32779:5;32776:32;32766:60;;32822:1;32819;32812:12;32766:60;32716:116;:::o;32838:122::-;32911:24;32929:5;32911:24;:::i;:::-;32904:5;32901:35;32891:63;;32950:1;32947;32940:12;32891:63;32838:122;:::o;32966:120::-;33038:23;33055:5;33038:23;:::i;:::-;33031:5;33028:34;33018:62;;33076:1;33073;33066:12;33018:62;32966:120;:::o;33092:122::-;33165:24;33183:5;33165:24;:::i;:::-;33158:5;33155:35;33145:63;;33204:1;33201;33194:12;33145:63;33092:122;:::o

Swarm Source

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