ETH Price: $3,484.50 (-1.43%)
Gas: 3 Gwei

Token

SOUL TOKEN (SOUL)
 

Overview

Max Total Supply

10,000,000,000 SOUL

Holders

1,216 (0.00%)

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH (+23.36%)

Onchain Market Cap

$4,401,000.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

SOULSAVER team developed SOULSAVER by combining idle simulation genre to the base of the IP of previously serviced Ghost Online. The team set strategic entertaining elements, such as minimizing user fatigue, character enhancement, diversification of combat with other uses, etc. as the top priority.

Market

Volume (24H):$230,508.00
Market Capitalization:$0.00
Circulating Supply:0.00 SOUL
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20Basic

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: ERC20Basic.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

import "./IERC20.sol";
import "./Ownable.sol";
import "./Whitelist.sol";

/**
 * @title ERC20 Basic.
 *
 * @dev ERC20 SOUL token.
 */
contract ERC20Basic is IERC20, Ownable, Whitelist {
    string public name = "SOUL TOKEN";
    string public symbol = "SOUL";
    uint8 public constant decimals = 18;

    uint256 private _totalSupply = 10000000000000000000000000000 wei;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _lockedAmount;

    event Lock(address indexed owner, address account, uint256 amount);
    event Unlock(address indexed owner, address account, uint256 amount);

    constructor() {
        _balances[msg.sender] = _totalSupply;
    }

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

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

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

    /**
     * @return The amount of tokens locked to `account`.
     */
    function lockedAmountOf(address account) public view returns (uint256) {
        return _lockedAmount[account];
    }

    function transfer(address to, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, to, amount);
        return true;
    }

    /**
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    // OPTIONAL
    function transferFrom(address from, address to, uint256 amount) public override returns (bool) {
        _spendAllowance(from, msg.sender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20Basic: transfer from the zero address");
        require(to != address(0), "ERC20Basic: transfer to the zero address");

        uint256 currentBalance = balanceOf(from);
        uint256 lockedAmount = lockedAmountOf(from);
        uint256 availableAmount;

        require(currentBalance >= lockedAmount);
        unchecked { availableAmount = currentBalance - lockedAmount; }
        require(availableAmount >= amount, "ERC20Basic: transfer amount exceeds balance");

        unchecked {
            _balances[from] -= amount;
            _balances[to] += amount;
            require(_balances[to] >= amount, "ERC20Basic: overflow of the to's balance");
        }

        emit Transfer(from, to, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20Basic: approve owner the zero address");
        require(spender != address(0), "ERC20Basic: approve spender the zero address");

        _allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal {
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= amount, "ERC20Basic: insufficient allowance");

        if (currentAllowance != type(uint256).max) {
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        uint256 currentAllowance = allowance(msg.sender, spender);
        unchecked {
            uint256 newAllowance = currentAllowance + addedValue;
            require(newAllowance >= currentAllowance, "ERC20Basic: overflow of the allowance");

            _approve(msg.sender, spender, newAllowance);
        }

        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        uint256 currentAllowance = allowance(msg.sender, spender);
        require(currentAllowance >= subtractedValue, "ERC20Basic: decreased allowance below zero");

        unchecked {
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function lock(address account, uint256 amount) public onlyWhitelisted returns (bool) {
        require(balanceOf(account) >= amount, "ERC20Basic: Insufficient balance to lock");

        unchecked {
            _lockedAmount[account] += amount;
            require(_lockedAmount[account] >= amount, "ERC20Basic: overflow of locked amount");

            emit Lock(msg.sender, account, amount);
        }

        return true;
    }

    function unlock(address account, uint256 amount) public onlyWhitelisted returns (bool) {
        require(_lockedAmount[account] >= amount, "ERC20Basic: underflow of locked amount");

        unchecked {
            _lockedAmount[account] -= amount;

            emit Unlock(msg.sender, account, amount);
        }

        return true;
    }

    function transferWithLock(address to, uint256 amount) public onlyWhitelisted returns (bool) {
        _transfer(msg.sender, to, amount);
        lock(to, amount);

        return true;
    }
}

File 2 of 4: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.9;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    // OPTIONAL public state variable getter is automatically generated.
    // function name() public view returns (string);
    // function symbol() public view returns (uint8);
    // function decimals() public view returns (uint256);

    /**
     * @return The amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @param account ? caller msg.sender ?
     * @return The amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev This is zero by default.
     * This value changes when {approve} or {transferFrom} are called.
     *
     * @return The remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Emits a {Transfer} event.
     *
     * @return A boolean value indicating whether the operation succeeded.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Emits an {Approval} event.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * @return A boolean value indicating whether the operation succeeded.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Emits a {Transfer} event.
     *
     * @return A boolean value indicating whether the operation succeeded.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}.
     * `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 3 of 4: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.9;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(msg.sender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 4: Whitelist.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

import "./Ownable.sol";

contract Whitelist is Ownable {
    mapping(address => bool) private whitelist;
    mapping(address => uint) private addressIdx;
    address[] private whiteArr;

    event WhitelistedAddressAdded(address addr);
    event WhitelistedAddressRemoved(address addr);

    constructor() {
        addAddressToWhitelist(msg.sender);
    }

    modifier onlyWhitelisted() {
        require(whitelist[msg.sender]);
        _;
    }

    function isWhitelist(address addr) public view returns (bool success) {
        return whitelist[addr];
    }

    function addAddressToWhitelist(address addr) onlyOwner public returns (bool success) {
        if (!whitelist[addr]) {
            whitelist[addr] = true;
            addressIdx[addr] = whiteArr.length;
            whiteArr.push(addr);

            emit WhitelistedAddressAdded(addr);
            success = true;
        }
    }

    function removeAddressFromWhitelist(address addr) onlyOwner public returns (bool success) {
        if (whitelist[addr]) {
            whitelist[addr] = false;
            uint deleteIdx = addressIdx[addr];
            address lastAddr = whiteArr[whiteArr.length - 1];
            addressIdx[lastAddr] = deleteIdx;
            delete addressIdx[addr];
            whiteArr[deleteIdx] = lastAddr;
            whiteArr.pop();

            emit WhitelistedAddressRemoved(addr);
            success = true;
        }
    }

    function getCountWhiteArr() public onlyOwner view returns (uint count) {
        count = whiteArr.length;
    }

    function getWhiteArrByIdx(uint idx) public onlyOwner view returns (address whiteAddress) {
        whiteAddress = whiteArr[idx];
    }

    function getWhiteArr() public onlyOwner view returns (address[] memory whiteArray) {
        whiteArray = whiteArr;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"WhitelistedAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"WhitelistedAddressRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addAddressToWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCountWhiteArr","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhiteArr","outputs":[{"internalType":"address[]","name":"whiteArray","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"getWhiteArrByIdx","outputs":[{"internalType":"address","name":"whiteAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"lockedAmountOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removeAddressFromWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600a81526020017f534f554c20544f4b454e00000000000000000000000000000000000000000000815250600490805190602001906200005192919062000434565b506040518060400160405280600481526020017f534f554c00000000000000000000000000000000000000000000000000000000815250600590805190602001906200009f92919062000434565b506b204fce5e3e25026110000000600655348015620000bd57600080fd5b50620000cf336200012d60201b60201c565b620000e033620001f160201b60201c565b50600654600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200062e565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60003373ffffffffffffffffffffffffffffffffffffffff166200021a6200040b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026a9062000545565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16620004065760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600380549050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f82604051620003f99190620005ac565b60405180910390a1600190505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200044290620005f8565b90600052602060002090601f016020900481019282620004665760008555620004b2565b82601f106200048157805160ff1916838001178555620004b2565b82800160010185558215620004b2579182015b82811115620004b157825182559160200191906001019062000494565b5b509050620004c19190620004c5565b5090565b5b80821115620004e0576000816000905550600101620004c6565b5090565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200052d602083620004e4565b91506200053a82620004f5565b602082019050919050565b6000602082019050818103600083015262000560816200051e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005948262000567565b9050919050565b620005a68162000587565b82525050565b6000602082019050620005c360008301846200059b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200061157607f821691505b60208210811415620006285762000627620005c9565b5b50919050565b61292d806200063e6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80637eee288d116100c3578063b0affc751161007c578063b0affc751461042b578063bfdc33a81461045b578063c683630d1461048b578063cb0ddd4e146104bb578063dd62ed3e146104d9578063f2fde38b1461050957610158565b80637eee288d1461032f5780638b9d68991461035f5780638da5cb5b1461038f57806395d89b41146103ad578063a457c2d7146103cb578063a9059cbb146103fb57610158565b8063286dd3f511610115578063286dd3f514610247578063313ce56714610277578063395093511461029557806370a08231146102c5578063715018a6146102f55780637b9417c8146102ff57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab5780631d9fb448146101c957806323b872dd146101e7578063282d3fdf14610217575b600080fd5b610165610525565b6040516101729190611c4d565b60405180910390f35b61019560048036038101906101909190611d08565b6105b3565b6040516101a29190611d63565b60405180910390f35b6101b36105ca565b6040516101c09190611d8d565b60405180910390f35b6101d16105d4565b6040516101de9190611e66565b60405180910390f35b61020160048036038101906101fc9190611e88565b6106d7565b60405161020e9190611d63565b60405180910390f35b610231600480360381019061022c9190611d08565b6106fa565b60405161023e9190611d63565b60405180910390f35b610261600480360381019061025c9190611edb565b6108c6565b60405161026e9190611d63565b60405180910390f35b61027f610bed565b60405161028c9190611f24565b60405180910390f35b6102af60048036038101906102aa9190611d08565b610bf2565b6040516102bc9190611d63565b60405180910390f35b6102df60048036038101906102da9190611edb565b610c62565b6040516102ec9190611d8d565b60405180910390f35b6102fd610cab565b005b61031960048036038101906103149190611edb565b610d2c565b6040516103269190611d63565b60405180910390f35b61034960048036038101906103449190611d08565b610f38565b6040516103569190611d63565b60405180910390f35b61037960048036038101906103749190611edb565b6110b9565b6040516103869190611d8d565b60405180910390f35b610397611102565b6040516103a49190611f4e565b60405180910390f35b6103b561112b565b6040516103c29190611c4d565b60405180910390f35b6103e560048036038101906103e09190611d08565b6111b9565b6040516103f29190611d63565b60405180910390f35b61041560048036038101906104109190611d08565b611223565b6040516104229190611d63565b60405180910390f35b61044560048036038101906104409190611f69565b61123a565b6040516104529190611f4e565b60405180910390f35b61047560048036038101906104709190611d08565b6112f7565b6040516104829190611d63565b60405180910390f35b6104a560048036038101906104a09190611edb565b61136f565b6040516104b29190611d63565b60405180910390f35b6104c36113c5565b6040516104d09190611d8d565b60405180910390f35b6104f360048036038101906104ee9190611f96565b611447565b6040516105009190611d8d565b60405180910390f35b610523600480360381019061051e9190611edb565b6114ce565b005b6004805461053290612005565b80601f016020809104026020016040519081016040528092919081815260200182805461055e90612005565b80156105ab5780601f10610580576101008083540402835291602001916105ab565b820191906000526020600020905b81548152906001019060200180831161058e57829003601f168201915b505050505081565b60006105c03384846115bf565b6001905092915050565b6000600654905090565b60603373ffffffffffffffffffffffffffffffffffffffff166105f5611102565b73ffffffffffffffffffffffffffffffffffffffff161461064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064290612083565b60405180910390fd5b60038054806020026020016040519081016040528092919081815260200182805480156106cd57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610683575b5050505050905090565b60006106e484338461178a565b6106ef848484611816565b600190509392505050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661075257600080fd5b8161075c84610c62565b101561079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490612115565b60405180910390fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561086c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610863906121a7565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fec36c0364d931187a76cf66d7eee08fad0ec2e8b7458a8d8b26b36769d4d13f384846040516108b49291906121c7565b60405180910390a26001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff166108e7611102565b73ffffffffffffffffffffffffffffffffffffffff161461093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490612083565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610be8576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060036001600380549050610a41919061221f565b81548110610a5257610a51612253565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558060038381548110610b1b57610b1a612253565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480610b7557610b74612282565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590557ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a84604051610bd99190611f4e565b60405180910390a16001925050505b919050565b601281565b600080610bff3385611447565b90506000838201905081811015610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290612323565b60405180910390fd5b610c563386836115bf565b50600191505092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610cca611102565b73ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790612083565b60405180910390fd5b610d2a6000611af0565b565b60003373ffffffffffffffffffffffffffffffffffffffff16610d4d611102565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612083565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f335760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600380549050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f82604051610f269190611f4e565b60405180910390a1600190505b919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f9057600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611012576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611009906123b5565b60405180910390fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167fc1c90b8e0705b212262c0dbd7580efe1862c2f185bf96899226f7596beb2db0984846040516110a79291906121c7565b60405180910390a26001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005805461113890612005565b80601f016020809104026020016040519081016040528092919081815260200182805461116490612005565b80156111b15780601f10611186576101008083540402835291602001916111b1565b820191906000526020600020905b81548152906001019060200180831161119457829003601f168201915b505050505081565b6000806111c63385611447565b90508281101561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612447565b60405180910390fd5b61121833858584036115bf565b600191505092915050565b6000611230338484611816565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff1661125b611102565b73ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a890612083565b60405180910390fd5b600382815481106112c5576112c4612253565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661134f57600080fd5b61135a338484611816565b61136483836106fa565b506001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff166113e6611102565b73ffffffffffffffffffffffffffffffffffffffff161461143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612083565b60405180910390fd5b600380549050905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166114ed611102565b73ffffffffffffffffffffffffffffffffffffffff1614611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612083565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906124d9565b60405180910390fd5b6115bc81611af0565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561162f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116269061256b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611696906125fd565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161177d9190611d8d565b60405180910390a3505050565b60006117968484611447565b9050818110156117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d29061268f565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118105761180f84848484036115bf565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90612721565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed906127b3565b60405180910390fd5b600061190184610c62565b9050600061190e856110b9565b905060008183101561191f57600080fd5b818303905083811015611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e90612845565b60405180910390fd5b83600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555083600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555083600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a906128d7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611ae09190611d8d565b60405180910390a3505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bee578082015181840152602081019050611bd3565b83811115611bfd576000848401525b50505050565b6000601f19601f8301169050919050565b6000611c1f82611bb4565b611c298185611bbf565b9350611c39818560208601611bd0565b611c4281611c03565b840191505092915050565b60006020820190508181036000830152611c678184611c14565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c9f82611c74565b9050919050565b611caf81611c94565b8114611cba57600080fd5b50565b600081359050611ccc81611ca6565b92915050565b6000819050919050565b611ce581611cd2565b8114611cf057600080fd5b50565b600081359050611d0281611cdc565b92915050565b60008060408385031215611d1f57611d1e611c6f565b5b6000611d2d85828601611cbd565b9250506020611d3e85828601611cf3565b9150509250929050565b60008115159050919050565b611d5d81611d48565b82525050565b6000602082019050611d786000830184611d54565b92915050565b611d8781611cd2565b82525050565b6000602082019050611da26000830184611d7e565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611ddd81611c94565b82525050565b6000611def8383611dd4565b60208301905092915050565b6000602082019050919050565b6000611e1382611da8565b611e1d8185611db3565b9350611e2883611dc4565b8060005b83811015611e59578151611e408882611de3565b9750611e4b83611dfb565b925050600181019050611e2c565b5085935050505092915050565b60006020820190508181036000830152611e808184611e08565b905092915050565b600080600060608486031215611ea157611ea0611c6f565b5b6000611eaf86828701611cbd565b9350506020611ec086828701611cbd565b9250506040611ed186828701611cf3565b9150509250925092565b600060208284031215611ef157611ef0611c6f565b5b6000611eff84828501611cbd565b91505092915050565b600060ff82169050919050565b611f1e81611f08565b82525050565b6000602082019050611f396000830184611f15565b92915050565b611f4881611c94565b82525050565b6000602082019050611f636000830184611f3f565b92915050565b600060208284031215611f7f57611f7e611c6f565b5b6000611f8d84828501611cf3565b91505092915050565b60008060408385031215611fad57611fac611c6f565b5b6000611fbb85828601611cbd565b9250506020611fcc85828601611cbd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061201d57607f821691505b6020821081141561203157612030611fd6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061206d602083611bbf565b915061207882612037565b602082019050919050565b6000602082019050818103600083015261209c81612060565b9050919050565b7f455243323042617369633a20496e73756666696369656e742062616c616e636560008201527f20746f206c6f636b000000000000000000000000000000000000000000000000602082015250565b60006120ff602883611bbf565b915061210a826120a3565b604082019050919050565b6000602082019050818103600083015261212e816120f2565b9050919050565b7f455243323042617369633a206f766572666c6f77206f66206c6f636b6564206160008201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b6000612191602583611bbf565b915061219c82612135565b604082019050919050565b600060208201905081810360008301526121c081612184565b9050919050565b60006040820190506121dc6000830185611f3f565b6121e96020830184611d7e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061222a82611cd2565b915061223583611cd2565b925082821015612248576122476121f0565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f455243323042617369633a206f766572666c6f77206f662074686520616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b600061230d602583611bbf565b9150612318826122b1565b604082019050919050565b6000602082019050818103600083015261233c81612300565b9050919050565b7f455243323042617369633a20756e646572666c6f77206f66206c6f636b65642060008201527f616d6f756e740000000000000000000000000000000000000000000000000000602082015250565b600061239f602683611bbf565b91506123aa82612343565b604082019050919050565b600060208201905081810360008301526123ce81612392565b9050919050565b7f455243323042617369633a2064656372656173656420616c6c6f77616e63652060008201527f62656c6f77207a65726f00000000000000000000000000000000000000000000602082015250565b6000612431602a83611bbf565b915061243c826123d5565b604082019050919050565b6000602082019050818103600083015261246081612424565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006124c3602683611bbf565b91506124ce82612467565b604082019050919050565b600060208201905081810360008301526124f2816124b6565b9050919050565b7f455243323042617369633a20617070726f7665206f776e657220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000612555602a83611bbf565b9150612560826124f9565b604082019050919050565b6000602082019050818103600083015261258481612548565b9050919050565b7f455243323042617369633a20617070726f7665207370656e646572207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b60006125e7602c83611bbf565b91506125f28261258b565b604082019050919050565b60006020820190508181036000830152612616816125da565b9050919050565b7f455243323042617369633a20696e73756666696369656e7420616c6c6f77616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612679602283611bbf565b91506126848261261d565b604082019050919050565b600060208201905081810360008301526126a88161266c565b9050919050565b7f455243323042617369633a207472616e736665722066726f6d20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b600061270b602a83611bbf565b9150612716826126af565b604082019050919050565b6000602082019050818103600083015261273a816126fe565b9050919050565b7f455243323042617369633a207472616e7366657220746f20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061279d602883611bbf565b91506127a882612741565b604082019050919050565b600060208201905081810360008301526127cc81612790565b9050919050565b7f455243323042617369633a207472616e7366657220616d6f756e74206578636560008201527f6564732062616c616e6365000000000000000000000000000000000000000000602082015250565b600061282f602b83611bbf565b915061283a826127d3565b604082019050919050565b6000602082019050818103600083015261285e81612822565b9050919050565b7f455243323042617369633a206f766572666c6f77206f662074686520746f277360008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b60006128c1602883611bbf565b91506128cc82612865565b604082019050919050565b600060208201905081810360008301526128f0816128b4565b905091905056fea264697066735822122065bb83c54363946c5c548df84ad5ddd29f271228f710b5ecd09be7931ad9a45d64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c80637eee288d116100c3578063b0affc751161007c578063b0affc751461042b578063bfdc33a81461045b578063c683630d1461048b578063cb0ddd4e146104bb578063dd62ed3e146104d9578063f2fde38b1461050957610158565b80637eee288d1461032f5780638b9d68991461035f5780638da5cb5b1461038f57806395d89b41146103ad578063a457c2d7146103cb578063a9059cbb146103fb57610158565b8063286dd3f511610115578063286dd3f514610247578063313ce56714610277578063395093511461029557806370a08231146102c5578063715018a6146102f55780637b9417c8146102ff57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab5780631d9fb448146101c957806323b872dd146101e7578063282d3fdf14610217575b600080fd5b610165610525565b6040516101729190611c4d565b60405180910390f35b61019560048036038101906101909190611d08565b6105b3565b6040516101a29190611d63565b60405180910390f35b6101b36105ca565b6040516101c09190611d8d565b60405180910390f35b6101d16105d4565b6040516101de9190611e66565b60405180910390f35b61020160048036038101906101fc9190611e88565b6106d7565b60405161020e9190611d63565b60405180910390f35b610231600480360381019061022c9190611d08565b6106fa565b60405161023e9190611d63565b60405180910390f35b610261600480360381019061025c9190611edb565b6108c6565b60405161026e9190611d63565b60405180910390f35b61027f610bed565b60405161028c9190611f24565b60405180910390f35b6102af60048036038101906102aa9190611d08565b610bf2565b6040516102bc9190611d63565b60405180910390f35b6102df60048036038101906102da9190611edb565b610c62565b6040516102ec9190611d8d565b60405180910390f35b6102fd610cab565b005b61031960048036038101906103149190611edb565b610d2c565b6040516103269190611d63565b60405180910390f35b61034960048036038101906103449190611d08565b610f38565b6040516103569190611d63565b60405180910390f35b61037960048036038101906103749190611edb565b6110b9565b6040516103869190611d8d565b60405180910390f35b610397611102565b6040516103a49190611f4e565b60405180910390f35b6103b561112b565b6040516103c29190611c4d565b60405180910390f35b6103e560048036038101906103e09190611d08565b6111b9565b6040516103f29190611d63565b60405180910390f35b61041560048036038101906104109190611d08565b611223565b6040516104229190611d63565b60405180910390f35b61044560048036038101906104409190611f69565b61123a565b6040516104529190611f4e565b60405180910390f35b61047560048036038101906104709190611d08565b6112f7565b6040516104829190611d63565b60405180910390f35b6104a560048036038101906104a09190611edb565b61136f565b6040516104b29190611d63565b60405180910390f35b6104c36113c5565b6040516104d09190611d8d565b60405180910390f35b6104f360048036038101906104ee9190611f96565b611447565b6040516105009190611d8d565b60405180910390f35b610523600480360381019061051e9190611edb565b6114ce565b005b6004805461053290612005565b80601f016020809104026020016040519081016040528092919081815260200182805461055e90612005565b80156105ab5780601f10610580576101008083540402835291602001916105ab565b820191906000526020600020905b81548152906001019060200180831161058e57829003601f168201915b505050505081565b60006105c03384846115bf565b6001905092915050565b6000600654905090565b60603373ffffffffffffffffffffffffffffffffffffffff166105f5611102565b73ffffffffffffffffffffffffffffffffffffffff161461064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064290612083565b60405180910390fd5b60038054806020026020016040519081016040528092919081815260200182805480156106cd57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610683575b5050505050905090565b60006106e484338461178a565b6106ef848484611816565b600190509392505050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661075257600080fd5b8161075c84610c62565b101561079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490612115565b60405180910390fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561086c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610863906121a7565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fec36c0364d931187a76cf66d7eee08fad0ec2e8b7458a8d8b26b36769d4d13f384846040516108b49291906121c7565b60405180910390a26001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff166108e7611102565b73ffffffffffffffffffffffffffffffffffffffff161461093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490612083565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610be8576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060036001600380549050610a41919061221f565b81548110610a5257610a51612253565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558060038381548110610b1b57610b1a612253565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480610b7557610b74612282565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590557ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a84604051610bd99190611f4e565b60405180910390a16001925050505b919050565b601281565b600080610bff3385611447565b90506000838201905081811015610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290612323565b60405180910390fd5b610c563386836115bf565b50600191505092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610cca611102565b73ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790612083565b60405180910390fd5b610d2a6000611af0565b565b60003373ffffffffffffffffffffffffffffffffffffffff16610d4d611102565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612083565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f335760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600380549050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f82604051610f269190611f4e565b60405180910390a1600190505b919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f9057600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611012576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611009906123b5565b60405180910390fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167fc1c90b8e0705b212262c0dbd7580efe1862c2f185bf96899226f7596beb2db0984846040516110a79291906121c7565b60405180910390a26001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005805461113890612005565b80601f016020809104026020016040519081016040528092919081815260200182805461116490612005565b80156111b15780601f10611186576101008083540402835291602001916111b1565b820191906000526020600020905b81548152906001019060200180831161119457829003601f168201915b505050505081565b6000806111c63385611447565b90508281101561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612447565b60405180910390fd5b61121833858584036115bf565b600191505092915050565b6000611230338484611816565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff1661125b611102565b73ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a890612083565b60405180910390fd5b600382815481106112c5576112c4612253565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661134f57600080fd5b61135a338484611816565b61136483836106fa565b506001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff166113e6611102565b73ffffffffffffffffffffffffffffffffffffffff161461143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612083565b60405180910390fd5b600380549050905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166114ed611102565b73ffffffffffffffffffffffffffffffffffffffff1614611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612083565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906124d9565b60405180910390fd5b6115bc81611af0565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561162f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116269061256b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611696906125fd565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161177d9190611d8d565b60405180910390a3505050565b60006117968484611447565b9050818110156117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d29061268f565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118105761180f84848484036115bf565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90612721565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed906127b3565b60405180910390fd5b600061190184610c62565b9050600061190e856110b9565b905060008183101561191f57600080fd5b818303905083811015611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e90612845565b60405180910390fd5b83600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555083600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555083600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a906128d7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611ae09190611d8d565b60405180910390a3505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bee578082015181840152602081019050611bd3565b83811115611bfd576000848401525b50505050565b6000601f19601f8301169050919050565b6000611c1f82611bb4565b611c298185611bbf565b9350611c39818560208601611bd0565b611c4281611c03565b840191505092915050565b60006020820190508181036000830152611c678184611c14565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c9f82611c74565b9050919050565b611caf81611c94565b8114611cba57600080fd5b50565b600081359050611ccc81611ca6565b92915050565b6000819050919050565b611ce581611cd2565b8114611cf057600080fd5b50565b600081359050611d0281611cdc565b92915050565b60008060408385031215611d1f57611d1e611c6f565b5b6000611d2d85828601611cbd565b9250506020611d3e85828601611cf3565b9150509250929050565b60008115159050919050565b611d5d81611d48565b82525050565b6000602082019050611d786000830184611d54565b92915050565b611d8781611cd2565b82525050565b6000602082019050611da26000830184611d7e565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611ddd81611c94565b82525050565b6000611def8383611dd4565b60208301905092915050565b6000602082019050919050565b6000611e1382611da8565b611e1d8185611db3565b9350611e2883611dc4565b8060005b83811015611e59578151611e408882611de3565b9750611e4b83611dfb565b925050600181019050611e2c565b5085935050505092915050565b60006020820190508181036000830152611e808184611e08565b905092915050565b600080600060608486031215611ea157611ea0611c6f565b5b6000611eaf86828701611cbd565b9350506020611ec086828701611cbd565b9250506040611ed186828701611cf3565b9150509250925092565b600060208284031215611ef157611ef0611c6f565b5b6000611eff84828501611cbd565b91505092915050565b600060ff82169050919050565b611f1e81611f08565b82525050565b6000602082019050611f396000830184611f15565b92915050565b611f4881611c94565b82525050565b6000602082019050611f636000830184611f3f565b92915050565b600060208284031215611f7f57611f7e611c6f565b5b6000611f8d84828501611cf3565b91505092915050565b60008060408385031215611fad57611fac611c6f565b5b6000611fbb85828601611cbd565b9250506020611fcc85828601611cbd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061201d57607f821691505b6020821081141561203157612030611fd6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061206d602083611bbf565b915061207882612037565b602082019050919050565b6000602082019050818103600083015261209c81612060565b9050919050565b7f455243323042617369633a20496e73756666696369656e742062616c616e636560008201527f20746f206c6f636b000000000000000000000000000000000000000000000000602082015250565b60006120ff602883611bbf565b915061210a826120a3565b604082019050919050565b6000602082019050818103600083015261212e816120f2565b9050919050565b7f455243323042617369633a206f766572666c6f77206f66206c6f636b6564206160008201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b6000612191602583611bbf565b915061219c82612135565b604082019050919050565b600060208201905081810360008301526121c081612184565b9050919050565b60006040820190506121dc6000830185611f3f565b6121e96020830184611d7e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061222a82611cd2565b915061223583611cd2565b925082821015612248576122476121f0565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f455243323042617369633a206f766572666c6f77206f662074686520616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b600061230d602583611bbf565b9150612318826122b1565b604082019050919050565b6000602082019050818103600083015261233c81612300565b9050919050565b7f455243323042617369633a20756e646572666c6f77206f66206c6f636b65642060008201527f616d6f756e740000000000000000000000000000000000000000000000000000602082015250565b600061239f602683611bbf565b91506123aa82612343565b604082019050919050565b600060208201905081810360008301526123ce81612392565b9050919050565b7f455243323042617369633a2064656372656173656420616c6c6f77616e63652060008201527f62656c6f77207a65726f00000000000000000000000000000000000000000000602082015250565b6000612431602a83611bbf565b915061243c826123d5565b604082019050919050565b6000602082019050818103600083015261246081612424565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006124c3602683611bbf565b91506124ce82612467565b604082019050919050565b600060208201905081810360008301526124f2816124b6565b9050919050565b7f455243323042617369633a20617070726f7665206f776e657220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000612555602a83611bbf565b9150612560826124f9565b604082019050919050565b6000602082019050818103600083015261258481612548565b9050919050565b7f455243323042617369633a20617070726f7665207370656e646572207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b60006125e7602c83611bbf565b91506125f28261258b565b604082019050919050565b60006020820190508181036000830152612616816125da565b9050919050565b7f455243323042617369633a20696e73756666696369656e7420616c6c6f77616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612679602283611bbf565b91506126848261261d565b604082019050919050565b600060208201905081810360008301526126a88161266c565b9050919050565b7f455243323042617369633a207472616e736665722066726f6d20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b600061270b602a83611bbf565b9150612716826126af565b604082019050919050565b6000602082019050818103600083015261273a816126fe565b9050919050565b7f455243323042617369633a207472616e7366657220746f20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061279d602883611bbf565b91506127a882612741565b604082019050919050565b600060208201905081810360008301526127cc81612790565b9050919050565b7f455243323042617369633a207472616e7366657220616d6f756e74206578636560008201527f6564732062616c616e6365000000000000000000000000000000000000000000602082015250565b600061282f602b83611bbf565b915061283a826127d3565b604082019050919050565b6000602082019050818103600083015261285e81612822565b9050919050565b7f455243323042617369633a206f766572666c6f77206f662074686520746f277360008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b60006128c1602883611bbf565b91506128cc82612865565b604082019050919050565b600060208201905081810360008301526128f0816128b4565b905091905056fea264697066735822122065bb83c54363946c5c548df84ad5ddd29f271228f710b5ecd09be7931ad9a45d64736f6c63430008090033

Deployed Bytecode Sourcemap

205:5629:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1795:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;864:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1802:123:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1979:215:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4827:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;998:531:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;338:35:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3963:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;972:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1672:103:2;;;:::i;:::-;;653:337:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5277:351:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1326:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1023:87:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;302:29:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4413:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1453:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1658:136:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5636:195:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;534:111:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1537:113;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1099:143:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1930:201:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;262:33:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1795:159::-;1870:4;1887:37;1896:10;1908:7;1917:6;1887:8;:37::i;:::-;1942:4;1935:11;;1795:159;;;;:::o;864:100::-;917:7;944:12;;937:19;;864:100;:::o;1802:123:3:-;1856:27;1254:10:2;1243:21;;:7;:5;:7::i;:::-;:21;;;1235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1909:8:3::1;1896:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:123:::0;:::o;1979:215:0:-;2068:4;2085:41;2101:4;2107:10;2119:6;2085:15;:41::i;:::-;2137:27;2147:4;2153:2;2157:6;2137:9;:27::i;:::-;2182:4;2175:11;;1979:215;;;;;:::o;4827:442::-;4906:4;484:9:3;:21;494:10;484:21;;;;;;;;;;;;;;;;;;;;;;;;;476:30;;;;;;4953:6:0::1;4931:18;4941:7;4931:9;:18::i;:::-;:28;;4923:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;5068:6;5042:13;:22;5056:7;5042:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;5123:6;5097:13;:22;5111:7;5097:22;;;;;;;;;;;;;;;;:32;;5089:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;5198:10;5193:33;;;5210:7;5219:6;5193:33;;;;;;;:::i;:::-;;;;;;;;5257:4;5250:11;;4827:442:::0;;;;:::o;998:531:3:-;1074:12;1254:10:2;1243:21;;:7;:5;:7::i;:::-;:21;;;1235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1103:9:3::1;:15;1113:4;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;1099:423;;;1153:5;1135:9;:15;1145:4;1135:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1173:14;1190:10;:16;1201:4;1190:16;;;;;;;;;;;;;;;;1173:33;;1221:16;1240:8;1267:1;1249:8;:15;;;;:19;;;;:::i;:::-;1240:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1221:48;;1307:9;1284:10;:20;1295:8;1284:20;;;;;;;;;;;;;;;:32;;;;1338:10;:16;1349:4;1338:16;;;;;;;;;;;;;;;1331:23;;;1391:8;1369;1378:9;1369:19;;;;;;;;:::i;:::-;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1414:8;:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1450:31;1476:4;1450:31;;;;;;:::i;:::-;;;;;;;;1506:4;1496:14;;1120:402;;1099:423;998:531:::0;;;:::o;338:35:0:-;371:2;338:35;:::o;3963:442::-;4043:4;4060:24;4087:30;4097:10;4109:7;4087:9;:30::i;:::-;4060:57;;4153:20;4195:10;4176:16;:29;4153:52;;4244:16;4228:12;:32;;4220:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;4319:43;4328:10;4340:7;4349:12;4319:8;:43::i;:::-;4128:246;4393:4;4386:11;;;3963:442;;;;:::o;972:119::-;1038:7;1065:9;:18;1075:7;1065:18;;;;;;;;;;;;;;;;1058:25;;972:119;;;:::o;1672:103:2:-;1254:10;1243:21;;:7;:5;:7::i;:::-;:21;;;1235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1737:30:::1;1764:1;1737:18;:30::i;:::-;1672:103::o:0;653:337:3:-;724:12;1254:10:2;1243:21;;:7;:5;:7::i;:::-;:21;;;1235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;754:9:3::1;:15;764:4;754:15;;;;;;;;;;;;;;;;;;;;;;;;;749:234;;804:4;786:9:::0;:15:::1;796:4;786:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;842:8;:15;;;;823:10;:16;834:4;823:16;;;;;;;;;;;;;;;:34;;;;872:8;886:4;872:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:29;937:4;913:29;;;;;;:::i;:::-;;;;;;;;967:4;957:14;;749:234;653:337:::0;;;:::o;5277:351:0:-;5358:4;484:9:3;:21;494:10;484:21;;;;;;;;;;;;;;;;;;;;;;;;;476:30;;;;;;5409:6:0::1;5383:13;:22;5397:7;5383:22;;;;;;;;;;;;;;;;:32;;5375:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5522:6;5496:13;:22;5510:7;5496:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;5557:10;5550:35;;;5569:7;5578:6;5550:35;;;;;;;:::i;:::-;;;;;;;;5616:4;5609:11;;5277:351:::0;;;;:::o;1326:119::-;1388:7;1415:13;:22;1429:7;1415:22;;;;;;;;;;;;;;;;1408:29;;1326:119;;;:::o;1023:87:2:-;1069:7;1096:6;;;;;;;;;;;1089:13;;1023:87;:::o;302:29:0:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4413:406::-;4498:4;4515:24;4542:30;4552:10;4564:7;4542:9;:30::i;:::-;4515:57;;4611:15;4591:16;:35;;4583:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;4711:65;4720:10;4732:7;4760:15;4741:16;:34;4711:8;:65::i;:::-;4807:4;4800:11;;;4413:406;;;;:::o;1453:151::-;1524:4;1541:33;1551:10;1563:2;1567:6;1541:9;:33::i;:::-;1592:4;1585:11;;1453:151;;;;:::o;1658:136:3:-;1725:20;1254:10:2;1243:21;;:7;:5;:7::i;:::-;:21;;;1235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1773:8:3::1;1782:3;1773:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1758:28;;1658:136:::0;;;:::o;5636:195:0:-;5722:4;484:9:3;:21;494:10;484:21;;;;;;;;;;;;;;;;;;;;;;;;;476:30;;;;;;5739:33:0::1;5749:10;5761:2;5765:6;5739:9;:33::i;:::-;5783:16;5788:2;5792:6;5783:4;:16::i;:::-;;5819:4;5812:11;;5636:195:::0;;;;:::o;534:111:3:-;590:12;622:9;:15;632:4;622:15;;;;;;;;;;;;;;;;;;;;;;;;;615:22;;534:111;;;:::o;1537:113::-;1596:10;1254::2;1243:21;;:7;:5;:7::i;:::-;:21;;;1235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1627:8:3::1;:15;;;;1619:23;;1537:113:::0;:::o;1099:143:0:-;1180:7;1207:11;:18;1219:5;1207:18;;;;;;;;;;;;;;;:27;1226:7;1207:27;;;;;;;;;;;;;;;;1200:34;;1099:143;;;;:::o;1930:201:2:-;1254:10;1243:21;;:7;:5;:7::i;:::-;:21;;;1235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2039:1:::1;2019:22;;:8;:22;;;;2011:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2095:28;2114:8;2095:18;:28::i;:::-;1930:201:::0;:::o;3056:356:0:-;3167:1;3150:19;;:5;:19;;;;3142:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3254:1;3235:21;;:7;:21;;;;3227:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;3348:6;3318:11;:18;3330:5;3318:18;;;;;;;;;;;;;;;:27;3337:7;3318:27;;;;;;;;;;;;;;;:36;;;;3388:7;3372:32;;3381:5;3372:32;;;3397:6;3372:32;;;;;;:::i;:::-;;;;;;;;3056:356;;;:::o;3541:414::-;3634:24;3661:25;3671:5;3678:7;3661:9;:25::i;:::-;3634:52;;3725:6;3705:16;:26;;3697:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3807:17;3787:16;:37;3783:165;;3870:51;3879:5;3886:7;3914:6;3895:16;:25;3870:8;:51::i;:::-;3783:165;3623:332;3541:414;;;:::o;2202:846::-;2307:1;2291:18;;:4;:18;;;;2283:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2389:1;2375:16;;:2;:16;;;;2367:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;2449:22;2474:15;2484:4;2474:9;:15::i;:::-;2449:40;;2500:20;2523;2538:4;2523:14;:20::i;:::-;2500:43;;2554:23;2616:12;2598:14;:30;;2590:39;;;;;;2687:12;2670:14;:29;2652:47;;2739:6;2720:15;:25;;2712:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2850:6;2831:9;:15;2841:4;2831:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;2888:6;2871:9;:13;2881:2;2871:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;2934:6;2917:9;:13;2927:2;2917:13;;;;;;;;;;;;;;;;:23;;2909:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;3029:2;3014:26;;3023:4;3014:26;;;3033:6;3014:26;;;;;;:::i;:::-;;;;;;;;2272:776;;;2202:846;;;:::o;2291:191:2:-;2365:16;2384:6;;;;;;;;;;;2365:25;;2410:8;2401:6;;:17;;;;;;;;;;;;;;;;;;2465:8;2434:40;;2455:8;2434:40;;;;;;;;;;;;2354:128;2291:191;:::o;7:99:4:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:114::-;3913:6;3947:5;3941:12;3931:22;;3846:114;;;:::o;3966:184::-;4065:11;4099:6;4094:3;4087:19;4139:4;4134:3;4130:14;4115:29;;3966:184;;;;:::o;4156:132::-;4223:4;4246:3;4238:11;;4276:4;4271:3;4267:14;4259:22;;4156:132;;;:::o;4294:108::-;4371:24;4389:5;4371:24;:::i;:::-;4366:3;4359:37;4294:108;;:::o;4408:179::-;4477:10;4498:46;4540:3;4532:6;4498:46;:::i;:::-;4576:4;4571:3;4567:14;4553:28;;4408:179;;;;:::o;4593:113::-;4663:4;4695;4690:3;4686:14;4678:22;;4593:113;;;:::o;4742:732::-;4861:3;4890:54;4938:5;4890:54;:::i;:::-;4960:86;5039:6;5034:3;4960:86;:::i;:::-;4953:93;;5070:56;5120:5;5070:56;:::i;:::-;5149:7;5180:1;5165:284;5190:6;5187:1;5184:13;5165:284;;;5266:6;5260:13;5293:63;5352:3;5337:13;5293:63;:::i;:::-;5286:70;;5379:60;5432:6;5379:60;:::i;:::-;5369:70;;5225:224;5212:1;5209;5205:9;5200:14;;5165:284;;;5169:14;5465:3;5458:10;;4866:608;;;4742:732;;;;:::o;5480:373::-;5623:4;5661:2;5650:9;5646:18;5638:26;;5710:9;5704:4;5700:20;5696:1;5685:9;5681:17;5674:47;5738:108;5841:4;5832:6;5738:108;:::i;:::-;5730:116;;5480:373;;;;:::o;5859:619::-;5936:6;5944;5952;6001:2;5989:9;5980:7;5976:23;5972:32;5969:119;;;6007:79;;:::i;:::-;5969:119;6127:1;6152:53;6197:7;6188:6;6177:9;6173:22;6152:53;:::i;:::-;6142:63;;6098:117;6254:2;6280:53;6325:7;6316:6;6305:9;6301:22;6280:53;:::i;:::-;6270:63;;6225:118;6382:2;6408:53;6453:7;6444:6;6433:9;6429:22;6408:53;:::i;:::-;6398:63;;6353:118;5859:619;;;;;:::o;6484:329::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:53;6788:7;6779:6;6768:9;6764:22;6743:53;:::i;:::-;6733:63;;6689:117;6484:329;;;;:::o;6819:86::-;6854:7;6894:4;6887:5;6883:16;6872:27;;6819:86;;;:::o;6911:112::-;6994:22;7010:5;6994:22;:::i;:::-;6989:3;6982:35;6911:112;;:::o;7029:214::-;7118:4;7156:2;7145:9;7141:18;7133:26;;7169:67;7233:1;7222:9;7218:17;7209:6;7169:67;:::i;:::-;7029:214;;;;:::o;7249:118::-;7336:24;7354:5;7336:24;:::i;:::-;7331:3;7324:37;7249:118;;:::o;7373:222::-;7466:4;7504:2;7493:9;7489:18;7481:26;;7517:71;7585:1;7574:9;7570:17;7561:6;7517:71;:::i;:::-;7373:222;;;;:::o;7601:329::-;7660:6;7709:2;7697:9;7688:7;7684:23;7680:32;7677:119;;;7715:79;;:::i;:::-;7677:119;7835:1;7860:53;7905:7;7896:6;7885:9;7881:22;7860:53;:::i;:::-;7850:63;;7806:117;7601:329;;;;:::o;7936:474::-;8004:6;8012;8061:2;8049:9;8040:7;8036:23;8032:32;8029:119;;;8067:79;;:::i;:::-;8029:119;8187:1;8212:53;8257:7;8248:6;8237:9;8233:22;8212:53;:::i;:::-;8202:63;;8158:117;8314:2;8340:53;8385:7;8376:6;8365:9;8361:22;8340:53;:::i;:::-;8330:63;;8285:118;7936:474;;;;;:::o;8416:180::-;8464:77;8461:1;8454:88;8561:4;8558:1;8551:15;8585:4;8582:1;8575:15;8602:320;8646:6;8683:1;8677:4;8673:12;8663:22;;8730:1;8724:4;8720:12;8751:18;8741:81;;8807:4;8799:6;8795:17;8785:27;;8741:81;8869:2;8861:6;8858:14;8838:18;8835:38;8832:84;;;8888:18;;:::i;:::-;8832:84;8653:269;8602:320;;;:::o;8928:182::-;9068:34;9064:1;9056:6;9052:14;9045:58;8928:182;:::o;9116:366::-;9258:3;9279:67;9343:2;9338:3;9279:67;:::i;:::-;9272:74;;9355:93;9444:3;9355:93;:::i;:::-;9473:2;9468:3;9464:12;9457:19;;9116:366;;;:::o;9488:419::-;9654:4;9692:2;9681:9;9677:18;9669:26;;9741:9;9735:4;9731:20;9727:1;9716:9;9712:17;9705:47;9769:131;9895:4;9769:131;:::i;:::-;9761:139;;9488:419;;;:::o;9913:227::-;10053:34;10049:1;10041:6;10037:14;10030:58;10122:10;10117:2;10109:6;10105:15;10098:35;9913:227;:::o;10146:366::-;10288:3;10309:67;10373:2;10368:3;10309:67;:::i;:::-;10302:74;;10385:93;10474:3;10385:93;:::i;:::-;10503:2;10498:3;10494:12;10487:19;;10146:366;;;:::o;10518:419::-;10684:4;10722:2;10711:9;10707:18;10699:26;;10771:9;10765:4;10761:20;10757:1;10746:9;10742:17;10735:47;10799:131;10925:4;10799:131;:::i;:::-;10791:139;;10518:419;;;:::o;10943:224::-;11083:34;11079:1;11071:6;11067:14;11060:58;11152:7;11147:2;11139:6;11135:15;11128:32;10943:224;:::o;11173:366::-;11315:3;11336:67;11400:2;11395:3;11336:67;:::i;:::-;11329:74;;11412:93;11501:3;11412:93;:::i;:::-;11530:2;11525:3;11521:12;11514:19;;11173:366;;;:::o;11545:419::-;11711:4;11749:2;11738:9;11734:18;11726:26;;11798:9;11792:4;11788:20;11784:1;11773:9;11769:17;11762:47;11826:131;11952:4;11826:131;:::i;:::-;11818:139;;11545:419;;;:::o;11970:332::-;12091:4;12129:2;12118:9;12114:18;12106:26;;12142:71;12210:1;12199:9;12195:17;12186:6;12142:71;:::i;:::-;12223:72;12291:2;12280:9;12276:18;12267:6;12223:72;:::i;:::-;11970:332;;;;;:::o;12308:180::-;12356:77;12353:1;12346:88;12453:4;12450:1;12443:15;12477:4;12474:1;12467:15;12494:191;12534:4;12554:20;12572:1;12554:20;:::i;:::-;12549:25;;12588:20;12606:1;12588:20;:::i;:::-;12583:25;;12627:1;12624;12621:8;12618:34;;;12632:18;;:::i;:::-;12618:34;12677:1;12674;12670:9;12662:17;;12494:191;;;;:::o;12691:180::-;12739:77;12736:1;12729:88;12836:4;12833:1;12826:15;12860:4;12857:1;12850:15;12877:180;12925:77;12922:1;12915:88;13022:4;13019:1;13012:15;13046:4;13043:1;13036:15;13063:224;13203:34;13199:1;13191:6;13187:14;13180:58;13272:7;13267:2;13259:6;13255:15;13248:32;13063:224;:::o;13293:366::-;13435:3;13456:67;13520:2;13515:3;13456:67;:::i;:::-;13449:74;;13532:93;13621:3;13532:93;:::i;:::-;13650:2;13645:3;13641:12;13634:19;;13293:366;;;:::o;13665:419::-;13831:4;13869:2;13858:9;13854:18;13846:26;;13918:9;13912:4;13908:20;13904:1;13893:9;13889:17;13882:47;13946:131;14072:4;13946:131;:::i;:::-;13938:139;;13665:419;;;:::o;14090:225::-;14230:34;14226:1;14218:6;14214:14;14207:58;14299:8;14294:2;14286:6;14282:15;14275:33;14090:225;:::o;14321:366::-;14463:3;14484:67;14548:2;14543:3;14484:67;:::i;:::-;14477:74;;14560:93;14649:3;14560:93;:::i;:::-;14678:2;14673:3;14669:12;14662:19;;14321:366;;;:::o;14693:419::-;14859:4;14897:2;14886:9;14882:18;14874:26;;14946:9;14940:4;14936:20;14932:1;14921:9;14917:17;14910:47;14974:131;15100:4;14974:131;:::i;:::-;14966:139;;14693:419;;;:::o;15118:229::-;15258:34;15254:1;15246:6;15242:14;15235:58;15327:12;15322:2;15314:6;15310:15;15303:37;15118:229;:::o;15353:366::-;15495:3;15516:67;15580:2;15575:3;15516:67;:::i;:::-;15509:74;;15592:93;15681:3;15592:93;:::i;:::-;15710:2;15705:3;15701:12;15694:19;;15353:366;;;:::o;15725:419::-;15891:4;15929:2;15918:9;15914:18;15906:26;;15978:9;15972:4;15968:20;15964:1;15953:9;15949:17;15942:47;16006:131;16132:4;16006:131;:::i;:::-;15998:139;;15725:419;;;:::o;16150:225::-;16290:34;16286:1;16278:6;16274:14;16267:58;16359:8;16354:2;16346:6;16342:15;16335:33;16150:225;:::o;16381:366::-;16523:3;16544:67;16608:2;16603:3;16544:67;:::i;:::-;16537:74;;16620:93;16709:3;16620:93;:::i;:::-;16738:2;16733:3;16729:12;16722:19;;16381:366;;;:::o;16753:419::-;16919:4;16957:2;16946:9;16942:18;16934:26;;17006:9;17000:4;16996:20;16992:1;16981:9;16977:17;16970:47;17034:131;17160:4;17034:131;:::i;:::-;17026:139;;16753:419;;;:::o;17178:229::-;17318:34;17314:1;17306:6;17302:14;17295:58;17387:12;17382:2;17374:6;17370:15;17363:37;17178:229;:::o;17413:366::-;17555:3;17576:67;17640:2;17635:3;17576:67;:::i;:::-;17569:74;;17652:93;17741:3;17652:93;:::i;:::-;17770:2;17765:3;17761:12;17754:19;;17413:366;;;:::o;17785:419::-;17951:4;17989:2;17978:9;17974:18;17966:26;;18038:9;18032:4;18028:20;18024:1;18013:9;18009:17;18002:47;18066:131;18192:4;18066:131;:::i;:::-;18058:139;;17785:419;;;:::o;18210:231::-;18350:34;18346:1;18338:6;18334:14;18327:58;18419:14;18414:2;18406:6;18402:15;18395:39;18210:231;:::o;18447:366::-;18589:3;18610:67;18674:2;18669:3;18610:67;:::i;:::-;18603:74;;18686:93;18775:3;18686:93;:::i;:::-;18804:2;18799:3;18795:12;18788:19;;18447:366;;;:::o;18819:419::-;18985:4;19023:2;19012:9;19008:18;19000:26;;19072:9;19066:4;19062:20;19058:1;19047:9;19043:17;19036:47;19100:131;19226:4;19100:131;:::i;:::-;19092:139;;18819:419;;;:::o;19244:221::-;19384:34;19380:1;19372:6;19368:14;19361:58;19453:4;19448:2;19440:6;19436:15;19429:29;19244:221;:::o;19471:366::-;19613:3;19634:67;19698:2;19693:3;19634:67;:::i;:::-;19627:74;;19710:93;19799:3;19710:93;:::i;:::-;19828:2;19823:3;19819:12;19812:19;;19471:366;;;:::o;19843:419::-;20009:4;20047:2;20036:9;20032:18;20024:26;;20096:9;20090:4;20086:20;20082:1;20071:9;20067:17;20060:47;20124:131;20250:4;20124:131;:::i;:::-;20116:139;;19843:419;;;:::o;20268:229::-;20408:34;20404:1;20396:6;20392:14;20385:58;20477:12;20472:2;20464:6;20460:15;20453:37;20268:229;:::o;20503:366::-;20645:3;20666:67;20730:2;20725:3;20666:67;:::i;:::-;20659:74;;20742:93;20831:3;20742:93;:::i;:::-;20860:2;20855:3;20851:12;20844:19;;20503:366;;;:::o;20875:419::-;21041:4;21079:2;21068:9;21064:18;21056:26;;21128:9;21122:4;21118:20;21114:1;21103:9;21099:17;21092:47;21156:131;21282:4;21156:131;:::i;:::-;21148:139;;20875:419;;;:::o;21300:227::-;21440:34;21436:1;21428:6;21424:14;21417:58;21509:10;21504:2;21496:6;21492:15;21485:35;21300:227;:::o;21533:366::-;21675:3;21696:67;21760:2;21755:3;21696:67;:::i;:::-;21689:74;;21772:93;21861:3;21772:93;:::i;:::-;21890:2;21885:3;21881:12;21874:19;;21533:366;;;:::o;21905:419::-;22071:4;22109:2;22098:9;22094:18;22086:26;;22158:9;22152:4;22148:20;22144:1;22133:9;22129:17;22122:47;22186:131;22312:4;22186:131;:::i;:::-;22178:139;;21905:419;;;:::o;22330:230::-;22470:34;22466:1;22458:6;22454:14;22447:58;22539:13;22534:2;22526:6;22522:15;22515:38;22330:230;:::o;22566:366::-;22708:3;22729:67;22793:2;22788:3;22729:67;:::i;:::-;22722:74;;22805:93;22894:3;22805:93;:::i;:::-;22923:2;22918:3;22914:12;22907:19;;22566:366;;;:::o;22938:419::-;23104:4;23142:2;23131:9;23127:18;23119:26;;23191:9;23185:4;23181:20;23177:1;23166:9;23162:17;23155:47;23219:131;23345:4;23219:131;:::i;:::-;23211:139;;22938:419;;;:::o;23363:227::-;23503:34;23499:1;23491:6;23487:14;23480:58;23572:10;23567:2;23559:6;23555:15;23548:35;23363:227;:::o;23596:366::-;23738:3;23759:67;23823:2;23818:3;23759:67;:::i;:::-;23752:74;;23835:93;23924:3;23835:93;:::i;:::-;23953:2;23948:3;23944:12;23937:19;;23596:366;;;:::o;23968:419::-;24134:4;24172:2;24161:9;24157:18;24149:26;;24221:9;24215:4;24211:20;24207:1;24196:9;24192:17;24185:47;24249:131;24375:4;24249:131;:::i;:::-;24241:139;;23968:419;;;:::o

Swarm Source

ipfs://65bb83c54363946c5c548df84ad5ddd29f271228f710b5ecd09be7931ad9a45d
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.