ETH Price: $3,673.02 (-1.80%)

Token

ACHIVX (ACHIVX)

Overview

Max Total Supply

200,000,000,000 ACHIVX

Holders

291,979 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0.0002 ACHIVX

Value
$0.00
0xeedbc4ccd0f25ed0ebbaf43e364a6a2ca74b7bbc
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

ACHIVX - open solutions in digital rewards, incentive and loyalty systems, enriched with gamification and achievement elements. These solutions for authors, players, users, customers and employees.

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 2 of 2: Token.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.26;

import "./ManagedToken.sol";

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
abstract contract Ownable is ERC173 {
    address public owner;

    /**
     * @param initialOwner the initial owner of the contract
     */
    constructor(address initialOwner) {
        require(initialOwner != address(0), "owner is zero");
        owner = initialOwner;
    }

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

    function transferOwnership(address newOwner) external override onlyOwner {
        require(newOwner != address(0), "new owner is zero");
        owner = newOwner;
        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface ERC20Basic {
    function totalSupply() external view returns (uint);
    function balanceOf(address who) external view returns (uint);
    function transfer(address to, uint value) external returns (bool success);
    event Transfer(address indexed from, address indexed to, uint value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface ERC20 is ERC20Basic {
    function allowance(
        address owner,
        address spender
    ) external view returns (uint);
    function transferFrom(
        address from,
        address to,
        uint value
    ) external returns (bool success);
    function approve(
        address spender,
        uint value
    ) external returns (bool success);
    event Approval(address indexed owner, address indexed spender, uint value);
}

/**
 * @title ERC20 interface with extension functions
 */
interface ERC20Extended is ERC20 {
    /**
     * Transfer tokens to multiple accounts
     *
     * @param tos addresses to send tokens to
     * @param values amounts of tokens to send (length must match length of @param tos)
     */
    function batchTransfer(
        address[] calldata tos,
        uint[] calldata values
    ) external;
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
abstract contract BasicToken is Ownable, ERC20Basic {
    uint internal _totalSupply;

    mapping(address => uint) public balances;

    constructor(uint initialSupply, address supplier) {
        _totalSupply = initialSupply;
        balances[supplier] = initialSupply;
        emit Transfer(address(0), supplier, initialSupply);
    }

    /**
     * @dev transfer token for a specified address
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function transfer(
        address to,
        uint value
    ) public virtual override returns (bool success) {
        balances[msg.sender] -= value;
        balances[to] += value;
        emit Transfer(msg.sender, to, value);
        success = true;
    }

    /**
     * @dev Gets the balance of the specified address.
     * @param owner The address to query the the balance of.
     * @return balance An uint representing the amount owned by the passed address.
     */
    function balanceOf(
        address owner
    ) public view virtual override returns (uint balance) {
        return balances[owner];
    }
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 */
abstract contract StandardToken is BasicToken, ERC20 {
    mapping(address => mapping(address => uint)) public allowed;

    uint public constant MAX_UINT = 2 ** 256 - 1;

    /**
     * @dev Transfer tokens from one address to another
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint the amount of tokens to be transferred
     */
    function transferFrom(
        address from,
        address to,
        uint value
    ) public virtual override returns (bool success) {
        uint allowance_ = allowed[from][msg.sender];

        if (allowance_ < MAX_UINT) {
            allowed[from][msg.sender] = allowance_ - value;
        }
        balances[from] -= value;
        balances[to] += value;
        emit Transfer(from, to, value);
        success = true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(
        address spender,
        uint value
    ) public virtual override returns (bool success) {
        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require(
            value == 0 || allowed[msg.sender][spender] == 0,
            "cannot change allowance from non-zero value to non-zero value"
        );

        allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        success = true;
    }

    /**
     * @dev Function to check the amount of tokens than an owner allowed to a spender.
     * @param owner address The address which owns the funds.
     * @param spender address The address which will spend the funds.
     * @return remaining A uint specifying the amount of tokens still available for the spender.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint remaining) {
        return allowed[owner][spender];
    }
}

/**
 * @title Extended ERC20 token implementation mixin
 * @dev Implements a batch transfer method
 */
abstract contract ExtendedToken is StandardToken, ERC20Extended {
    /**
     * @notice transfer tokens to multiple addresses
     * @param tos addresses to transfer tokens to
     * @param values amounts of tokens to transfer to each address
     */
    function batchTransfer(
        address[] calldata tos,
        uint[] calldata values
    ) public virtual override {
        require(
            tos.length == values.length,
            "destination addresses count does not match transfer amounts count"
        );
        uint senderBalance = balances[msg.sender];

        for (uint i = 0; i < tos.length; ++i) {
            address to = tos[i];
            require(to != address(0), "cannot transfer to zero address");
            uint amount = values[i];
            require(amount <= senderBalance, "not enough funds");

            if (to != msg.sender) {
                senderBalance -= amount;
                balances[to] += amount;
            }

            emit Transfer(msg.sender, to, amount);
        }

        balances[msg.sender] = senderBalance;
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
abstract contract Pausable is Ownable, IPausable {
    bool public paused = false;

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!paused, "contract paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(paused, "contract not paused");
        _;
    }

    /**
     * @inheritdoc IPausable
     */
    function pause() external onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    /**
     * @inheritdoc IPausable
     */
    function unpause() external onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }
}

/**
 * @title Token with account blacklist mixin
 * @notice Maintains a blacklist of addresses.
 * Blacklist can be modified by contract owner.
 * Tokens owned by blacklisted addresses can be burned by contract owner.
 */
abstract contract BlackList is Ownable, BasicToken, IBlackList {
    mapping(address => bool) public isBlackListed;

    /**
     * @dev Requires a given address to not be blacklisted
     * @param account the address to check
     */
    modifier whenNotBlackListed(address account) {
        require(!isBlackListed[account], "account blacklisted");
        _;
    }

    /**
     * @inheritdoc IBlackList
     */
    function addBlackList(address evilUser) external onlyOwner {
        isBlackListed[evilUser] = true;
        emit AddedBlackList(evilUser);
    }

    /**
     * @inheritdoc IBlackList
     */
    function removeBlackList(address clearedUser) external onlyOwner {
        isBlackListed[clearedUser] = false;
        emit RemovedBlackList(clearedUser);
    }

    /**
     * @inheritdoc IBlackList
     */
    function destroyBlackFunds(address blackListedUser) external onlyOwner {
        require(isBlackListed[blackListedUser], "account not blacklisted");
        uint dirtyFunds = balanceOf(blackListedUser);
        balances[blackListedUser] = 0;
        _totalSupply -= dirtyFunds;
        emit DestroyedBlackFunds(blackListedUser, dirtyFunds);
        emit Transfer(blackListedUser, address(0), dirtyFunds);
    }
}

/**
 * @title Interface for upgraded version of ERC20 token contract
 * @dev The methods defined in this interface should be only callable by the legacy contract
 */
interface UpgradedStandardToken is ERC20 {
    /**
     * @notice Method called by legacy contract when its `transfer` method is called
     * @param from address to transfer from; `msg.sender` of original transaction
     * @param to address to transfer tokens to
     * @param value amount of tokens to transfer
     */
    function transferByLegacy(
        address from,
        address to,
        uint value
    ) external returns (bool success);

    /**
     * @notice Method called by legacy contract when its `transferFrom` method is called
     * @param sender `msg.sender` of original transaction that may be allowed to spend tokens of `from`
     * @param from address to transfer from
     * @param to address to transfer tokens to
     * @param value amount of tokens to transfer
     */
    function transferFromByLegacy(
        address sender,
        address from,
        address to,
        uint value
    ) external returns (bool success);

    /**
     * @notice Method called by legacy contract when its `approve` method is called
     * @param from the address that approves token spending; `msg.sender` of original transaction
     * @param spender the address that receives allowance from `from`
     * @param value the new allowance value
     */
    function approveByLegacy(
        address from,
        address spender,
        uint value
    ) external returns (bool success);

    /**
     * @notice Method called by legacy contract when its `batchTransfer` extension method is called
     * @param from the address to transfer tokens from; `msg.sender` of original transaction
     * @param tos addresses to send tokens to
     * @param values amounts of tokens to send
     */
    function batchTransferByLegacy(
        address from,
        address[] calldata tos,
        uint[] calldata values
    ) external;
}

/**
 * @title Deprecatable/upgradable contract mixin
 * @dev Contract owner may declare this contract deprecated and set an address of the new implementation.
 * It's responsibility of concrete contract to delegate method calls to the new implementation.
 */
abstract contract Deprecateable is Ownable, IDeprecatable {
    address public upgradedAddress;
    bool public deprecated;

    constructor() {
        deprecated = false;
    }

    /** Emitted when contract is deprecated */
    event Deprecate(address newAddress);

    /**
     * @inheritdoc IDeprecatable
     */
    function deprecate(address upgradedAddress_) external onlyOwner {
        require(
            upgradedAddress_ != address(0),
            "upgrade contract address is zero"
        );
        deprecated = true;
        upgradedAddress = upgradedAddress_;
        emit Deprecate(upgradedAddress_);
    }

    /**
     * @dev Allow a method to be called by upgraded version of the token contract only.
     */
    modifier onlyUpgraded() {
        require(deprecated, "contract not deprecated");
        require(
            upgradedAddress == msg.sender,
            "can only be called from upgraded contract"
        );
        _;
    }

    /**
     * @dev Disallow a method from being called when the contract is deprecated.
     */
    modifier whenNotDeprecated() {
        require(!deprecated, "contract is deprecated");
        _;
    }
}

/**
 * @title A deprecatable ERC20 token interface
 * @dev Contains methods of deprecatable ERC20 token that can be used by it's upgraded version.
 */
interface LegacyToken is ERC20, IDeprecatable {
    /**
     * @notice Read balance of given account before contract deprecation.
     * @dev The balanceOf method is expected to be delegated to the upgraded contract, so a separate method is
     * necessary to let the upgraded contract fetch initial balances of accounts.
     * @param addr the address
     * @return balance balance of the address before contract upgrade
     */
    function legacyBalance(address addr) external view returns (uint balance);

    /**
     * @notice Read allowance from before the contract was deprecated.
     * @dev The allowance() method is expected to be delegated to the upgraded contract, so a separate method is
     * necessary to let the upgraded contract fetch initial allowances.
     * @param from address to spend tokens from
     * @param to address that is allowed to spend tokens
     * @return remaining remaining allowance
     */
    function legacyAllowance(
        address from,
        address to
    ) external view returns (uint remaining);

    /**
     * @notice Emit Transfer event from upgrade contract.
     * @dev Should only be callable by the upgrade contract.
     * Makes transfers performed through the upgrade contract be reflected in the legacy contract.
     * @param from the address tokens were transferred from
     * @param to the address tokens were sent to
     * @param value amount of tokens transferred
     */
    function emitTransfer(address from, address to, uint value) external;

    /**
     * @notice Emit Approval event from upgrade contract.
     * @dev Should only be callable from upgrade contract.
     * @param owner owner of the wallet
     * @param spender the address allowed to spend tokens
     * @param value new allowance value
     */
    function emitApproval(address owner, address spender, uint value) external;
}

/**
 * @title An upgradeable ERC20 token contract.
 * @notice Based on Tether USD (USDT) contract.
 */
contract Token is
    Deprecateable,
    LegacyToken,
    Pausable,
    ExtendedToken,
    BlackList,
    ManagedToken
{
    string public name;
    string public symbol;
    uint public immutable decimals;

    /**
     * @param owner Initial owner of the contract
     * @param initialSupply Initial supply of the contract
     * @param supplier The wallet that receives initial supply of tokens
     * @param name_ Token Name
     * @param symbol_ Token symbol
     * @param decimals_ Token decimals
     */
    constructor(
        address owner,
        uint initialSupply,
        address supplier,
        string memory name_,
        string memory symbol_,
        uint decimals_
    ) Ownable(owner) BasicToken(initialSupply, supplier) {
        name = name_;
        symbol = symbol_;
        decimals = decimals_;
    }

    /**
     * @inheritdoc ERC165
     */
    function supportsInterface(
        bytes4 interfaceID
    ) external pure returns (bool) {
        return
            (interfaceID == 0x01ffc9a7) || // ERC165
            (interfaceID == 0x7f5828d0) || // ERC173
            (interfaceID == 0x36372b07) || // ERC20
            false;
    }

    /**
     * @inheritdoc ERC20Basic
     */
    function transfer(
        address to,
        uint value
    )
        public
        override(BasicToken, ERC20Basic)
        whenNotPaused
        whenNotBlackListed(msg.sender)
        returns (bool success)
    {
        if (deprecated) {
            return
                UpgradedStandardToken(upgradedAddress).transferByLegacy(
                    msg.sender,
                    to,
                    value
                );
        } else {
            return super.transfer(to, value);
        }
    }

    /**
     * @inheritdoc ERC20
     */
    function transferFrom(
        address from,
        address to,
        uint value
    )
        public
        override(ERC20, StandardToken)
        whenNotPaused
        whenNotBlackListed(from)
        returns (bool success)
    {
        if (deprecated) {
            return
                UpgradedStandardToken(upgradedAddress).transferFromByLegacy(
                    msg.sender,
                    from,
                    to,
                    value
                );
        } else {
            return super.transferFrom(from, to, value);
        }
    }

    /**
     * @inheritdoc ERC20Basic
     */
    function balanceOf(
        address who
    ) public view override(BasicToken, ERC20Basic) returns (uint) {
        if (deprecated) {
            return UpgradedStandardToken(upgradedAddress).balanceOf(who);
        } else {
            return super.balanceOf(who);
        }
    }

    /**
     * @inheritdoc ERC20
     */
    function approve(
        address spender,
        uint value
    ) public override(ERC20, StandardToken) returns (bool success) {
        if (deprecated) {
            return
                UpgradedStandardToken(upgradedAddress).approveByLegacy(
                    msg.sender,
                    spender,
                    value
                );
        } else {
            return super.approve(spender, value);
        }
    }

    /**
     * @inheritdoc ERC20
     */
    function allowance(
        address owner,
        address spender
    ) public view override(ERC20, StandardToken) returns (uint remaining) {
        if (deprecated) {
            return StandardToken(upgradedAddress).allowance(owner, spender);
        } else {
            return super.allowance(owner, spender);
        }
    }

    /**
     * @inheritdoc ERC20Extended
     */
    function batchTransfer(
        address[] calldata tos,
        uint[] calldata values
    ) public override whenNotPaused whenNotBlackListed(msg.sender) {
        if (deprecated) {
            return
                UpgradedStandardToken(upgradedAddress).batchTransferByLegacy(
                    msg.sender,
                    tos,
                    values
                );
        } else {
            return super.batchTransfer(tos, values);
        }
    }

    /**
     * @inheritdoc ERC20Basic
     */
    function totalSupply() public view returns (uint) {
        if (deprecated) {
            return StandardToken(upgradedAddress).totalSupply();
        } else {
            return _totalSupply;
        }
    }

    /**
     * @inheritdoc LegacyToken
     */
    function legacyBalance(
        address addr
    ) external view onlyUpgraded returns (uint balance) {
        balance = balances[addr];
    }

    /**
     * @inheritdoc LegacyToken
     */
    function legacyAllowance(
        address from,
        address to
    ) external view onlyUpgraded returns (uint remaining) {
        remaining = allowed[from][to];
    }

    /**
     * @inheritdoc LegacyToken
     */
    function emitTransfer(
        address from,
        address to,
        uint value
    ) external onlyUpgraded {
        emit Transfer(from, to, value);
    }

    /**
     * @inheritdoc LegacyToken
     */
    function emitApproval(
        address owner,
        address spender,
        uint value
    ) external onlyUpgraded {
        emit Approval(owner, spender, value);
    }

    /**
     * @inheritdoc ISupply
     */
    function issue(
        uint amount,
        address to
    ) external onlyOwner whenNotDeprecated {
        balances[to] += amount;
        _totalSupply += amount;
        emit Issue(amount, to);
        emit Transfer(address(0), to, amount);
    }

    /**
     * @inheritdoc ISupply
     */
    function redeem(uint amount) external onlyOwner whenNotDeprecated {
        require(
            balances[owner] >= amount,
            "not enough funds on owner account to burn"
        );

        _totalSupply -= amount;
        balances[owner] -= amount;
        emit Redeem(amount);
        emit Transfer(owner, address(0), amount);
    }
}

File 1 of 2: ManagedToken.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.26;

interface ERC165 {
    /**
     * @notice Query if a contract implements an interface
     * @param interfaceID The interface identifier, as specified in ERC-165
     * @dev Interface identification is specified in ERC-165.
     * @return `true` if the contract implements `interfaceID` and
     *  `interfaceID` is not 0xffffffff, `false` otherwise
     */
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

/**
 * @title ERC-173 Contract Ownership Standard
 * @dev Note: the ERC-165 identifier for this interface is 0x7f5828d0
 */
interface ERC173 is ERC165 {
    /**
     * @dev This emits when ownership of a contract changes.
     */
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @notice Get the address of the owner
     * @return The address of the owner.
     */
    function owner() external view returns (address);

    /**
     * @notice Set the address of the new owner of the contract
     * @dev Set _newOwner to address(0) to renounce any ownership.
     * @param _newOwner The address of the new owner of the contract
     */
    function transferOwnership(address _newOwner) external;
}

/**
 * @title Interface for a contract that may have some of it's operations be paused
 */
interface IPausable {
    /**
     * @notice Pause operations of this contract
     * @dev This method must fail if called by unauthorized user
     */
    function pause() external;

    /**
     * @notice Resume paused operations of this contract
     * @dev This method must fail if called by unauthorized user
     */
    function unpause() external;

    /**
     * @notice Emitted when the contract gets paused
     */
    event Pause();

    /**
     * @notice Emitted when the contract gets unpaused
     */
    event Unpause();
}

/**
 * @title Interface for token contracts with blacklist management functionality
 */
interface IBlackList {
    /**
     * @notice Add given address to blacklist.
     * @param _evilUser the address to add to blacklist
     */
    function addBlackList(address _evilUser) external;

    /**
     * @notice Remove given address from blacklist.
     * @param _clearedUser the address to remove from blacklist
     */
    function removeBlackList(address _clearedUser) external;

    /**
     * @dev Destroy tokens owned by a blacklisted account.
     * @param _blackListedUser the blacklisted address
     */
    function destroyBlackFunds(address _blackListedUser) external;

    /**
     * Emitted when tokens owned by a blacklisted address are destroyed.
     * @param _blackListedUser the blacklisted account
     * @param _balance amount of tokens previously owned by the account
     */
    event DestroyedBlackFunds(address _blackListedUser, uint _balance);

    /**
     * Emitted when an address is added to the blacklist
     * @param _user the address added to the blacklist
     */
    event AddedBlackList(address _user);

    /**
     * Emitted when an address is removed from blacklist
     * @param _user the address removed from the blacklist
     */
    event RemovedBlackList(address _user);
}

interface IDeprecatable {
    /**
     * @notice Mark this contract as deprecated and start delegating some operations to a different contract
     * @param _upgradedAddress address of new contract to delegate calls to
     */
    function deprecate(address _upgradedAddress) external;
}

/**
 * @title Methods for token supply management (token emission and destruction)
 */
interface ISupply {
    /**
     * @notice Create new tokens and send them to given address
     * @param amount Number of tokens to be issued
     * @param to Address to send tokens to
     */
    function issue(uint amount, address to) external;

    /**
     * @notice Redeem (burn) tokens.
     * The tokens are withdrawn from the owner address.
     * The balance must be enough to cover the redeem or the call will fail.
     * @param amount Number of tokens to be redeemed
     */
    function redeem(uint amount) external;

    /** Emitted when new token are issued */
    event Issue(uint amount, address to);

    /** Emitted when tokens are redeemed */
    event Redeem(uint amount);
}

/**
 * @title Interface for token contracts manageable by `MultisigManager` contract.
 */
interface ManagedToken is
    ERC173,
    IPausable,
    IBlackList,
    IDeprecatable,
    ISupply
{}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"supplier","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"decimals_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"}],"name":"AddedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAddress","type":"address"}],"name":"Deprecate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_blackListedUser","type":"address"},{"indexed":false,"internalType":"uint256","name":"_balance","type":"uint256"}],"name":"DestroyedBlackFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Issue","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":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"}],"name":"RemovedBlackList","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":[],"name":"Unpause","type":"event"},{"inputs":[],"name":"MAX_UINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"evilUser","type":"address"}],"name":"addBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tos","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"batchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"upgradedAddress_","type":"address"}],"name":"deprecate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deprecated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"blackListedUser","type":"address"}],"name":"destroyBlackFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"emitApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"emitTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"issue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"legacyAllowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"legacyBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a06040526000600360156101000a81548160ff02191690831515021790555034801561002b57600080fd5b506040516146ed3803806146ed833981810160405281019061004d919061040a565b848487600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b69061052c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508160018190555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516101a9919061055b565b60405180910390a350506000600360146101000a81548160ff02191690831515021790555082600690816101dd919061078d565b5081600790816101ed919061078d565b50806080818152505050505050505061085f565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061024082610215565b9050919050565b61025081610235565b811461025b57600080fd5b50565b60008151905061026d81610247565b92915050565b6000819050919050565b61028681610273565b811461029157600080fd5b50565b6000815190506102a38161027d565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6102fc826102b3565b810181811067ffffffffffffffff8211171561031b5761031a6102c4565b5b80604052505050565b600061032e610201565b905061033a82826102f3565b919050565b600067ffffffffffffffff82111561035a576103596102c4565b5b610363826102b3565b9050602081019050919050565b60005b8381101561038e578082015181840152602081019050610373565b60008484015250505050565b60006103ad6103a88461033f565b610324565b9050828152602081018484840111156103c9576103c86102ae565b5b6103d4848285610370565b509392505050565b600082601f8301126103f1576103f06102a9565b5b815161040184826020860161039a565b91505092915050565b60008060008060008060c087890312156104275761042661020b565b5b600061043589828a0161025e565b965050602061044689828a01610294565b955050604061045789828a0161025e565b945050606087015167ffffffffffffffff81111561047857610477610210565b5b61048489828a016103dc565b935050608087015167ffffffffffffffff8111156104a5576104a4610210565b5b6104b189828a016103dc565b92505060a06104c289828a01610294565b9150509295509295509295565b600082825260208201905092915050565b7f6f776e6572206973207a65726f00000000000000000000000000000000000000600082015250565b6000610516600d836104cf565b9150610521826104e0565b602082019050919050565b6000602082019050818103600083015261054581610509565b9050919050565b61055581610273565b82525050565b6000602082019050610570600083018461054c565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806105c857607f821691505b6020821081036105db576105da610581565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610606565b61064d8683610606565b95508019841693508086168417925050509392505050565b6000819050919050565b600061068a61068561068084610273565b610665565b610273565b9050919050565b6000819050919050565b6106a48361066f565b6106b86106b082610691565b848454610613565b825550505050565b600090565b6106cd6106c0565b6106d881848461069b565b505050565b5b818110156106fc576106f16000826106c5565b6001810190506106de565b5050565b601f82111561074157610712816105e1565b61071b846105f6565b8101602085101561072a578190505b61073e610736856105f6565b8301826106dd565b50505b505050565b600082821c905092915050565b600061076460001984600802610746565b1980831691505092915050565b600061077d8383610753565b9150826002028217905092915050565b61079682610576565b67ffffffffffffffff8111156107af576107ae6102c4565b5b6107b982546105b0565b6107c4828285610700565b600060209050601f8311600181146107f757600084156107e5578287015190505b6107ef8582610771565b865550610857565b601f198416610805866105e1565b60005b8281101561082d57848901518255600182019150602085019450602081019050610808565b8683101561084a5784890151610846601f891682610753565b8355505b6001600288020188555050505b505050505050565b608051613e7361087a6000396000610ef80152613e736000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80635c975abb1161010f578063b696a6ad116100a2578063e4997dc511610071578063e4997dc5146105cd578063e5b5019a146105e9578063f2fde38b14610607578063f3bdc22814610623576101f0565b8063b696a6ad14610535578063db006a7514610551578063dd62ed3e1461056d578063e47d60601461059d576101f0565b80638da5cb5b116100de5780638da5cb5b1461049957806395d89b41146104b757806397c0b856146104d5578063a9059cbb14610505576101f0565b80635c975abb1461042557806370a08231146104435780638456cb591461047357806388d695b21461047d576101f0565b806323de6651116101875780633f4ba83a116101565780633f4ba83a1461039f5780635687f2b8146103a9578063582442dc146103c55780635c658165146103f5576101f0565b806323de66511461031757806326976e3f1461033357806327e235e314610351578063313ce56714610381576101f0565b80630e136b19116101c35780630e136b191461028f5780630ecb93c0146102ad57806318160ddd146102c957806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde03146102255780630753c30c14610243578063095ea7b31461025f575b600080fd5b61020f600480360381019061020a9190612e46565b61063f565b60405161021c9190612e8e565b60405180910390f35b61022d6106da565b60405161023a9190612f39565b60405180910390f35b61025d60048036038101906102589190612fb9565b610768565b005b6102796004803603810190610274919061301c565b6108fb565b6040516102869190612e8e565b60405180910390f35b6102976109ce565b6040516102a49190612e8e565b60405180910390f35b6102c760048036038101906102c29190612fb9565b6109e1565b005b6102d1610b01565b6040516102de919061306b565b60405180910390f35b61030160048036038101906102fc9190613086565b610bb9565b60405161030e9190612e8e565b60405180910390f35b610331600480360381019061032c9190613086565b610d6f565b005b61033b610eb8565b60405161034891906130e8565b60405180910390f35b61036b60048036038101906103669190612fb9565b610ede565b604051610378919061306b565b60405180910390f35b610389610ef6565b604051610396919061306b565b60405180910390f35b6103a7610f1a565b005b6103c360048036038101906103be9190613086565b611040565b005b6103df60048036038101906103da9190613103565b611189565b6040516103ec919061306b565b60405180910390f35b61040f600480360381019061040a9190613103565b6112ef565b60405161041c919061306b565b60405180910390f35b61042d611314565b60405161043a9190612e8e565b60405180910390f35b61045d60048036038101906104589190612fb9565b611327565b60405161046a919061306b565b60405180910390f35b61047b6113f2565b005b610497600480360381019061049291906131fe565b611519565b005b6104a16116ba565b6040516104ae91906130e8565b60405180910390f35b6104bf6116de565b6040516104cc9190612f39565b60405180910390f35b6104ef60048036038101906104ea9190612fb9565b61176c565b6040516104fc919061306b565b60405180910390f35b61051f600480360381019061051a919061301c565b611894565b60405161052c9190612e8e565b60405180910390f35b61054f600480360381019061054a919061327f565b611a46565b005b61056b600480360381019061056691906132bf565b611c36565b005b61058760048036038101906105829190613103565b611f07565b604051610594919061306b565b60405180910390f35b6105b760048036038101906105b29190612fb9565b611fd6565b6040516105c49190612e8e565b60405180910390f35b6105e760048036038101906105e29190612fb9565b611ff6565b005b6105f1612116565b6040516105fe919061306b565b60405180910390f35b610621600480360381019061061c9190612fb9565b61213a565b005b61063d60048036038101906106389190612fb9565b6122d4565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061069a5750637f5828d060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106ca57506336372b0760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106d3575060005b9050919050565b600680546106e79061331b565b80601f01602080910402602001604051908101604052809291908181526020018280546107139061331b565b80156107605780601f1061073557610100808354040283529160200191610760565b820191906000526020600020905b81548152906001019060200180831161074357829003601f168201915b505050505081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ed90613398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90613404565b60405180910390fd5b6001600360146101000a81548160ff02191690831515021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e816040516108f091906130e8565b60405180910390a150565b6000600360149054906101000a900460ff16156109bb57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aee92d333385856040518463ffffffff1660e01b815260040161097193929190613424565b6020604051808303816000875af1158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b49190613487565b90506109c8565b6109c583836124fc565b90505b92915050565b600360149054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690613398565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc81604051610af691906130e8565b60405180910390a150565b6000600360149054906101000a900460ff1615610bb057600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906134c9565b9050610bb6565b60015490505b90565b6000600360159054906101000a900460ff1615610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0290613542565b60405180910390fd5b83600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c90906135ae565b60405180910390fd5b600360149054906101000a900460ff1615610d5957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b477adb338787876040518563ffffffff1660e01b8152600401610d0f94939291906135ce565b6020604051808303816000875af1158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190613487565b9150610d67565b610d648585856126b7565b91505b509392505050565b600360149054906101000a900460ff16610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db59061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e45906136f1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eab919061306b565b60405180910390a3505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613398565b60405180910390fd5b600360159054906101000a900460ff16610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee9061375d565b60405180910390fd5b6000600360156101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600360149054906101000a900460ff1661108f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110869061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611116906136f1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161117c919061306b565b60405180910390a3505050565b6000600360149054906101000a900460ff166111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d19061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611261906136f1565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6004602052816000526040600020602052806000526040600020600091509150505481565b600360159054906101000a900460ff1681565b6000600360149054906101000a900460ff16156113e157600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161139991906130e8565b602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906134c9565b90506113ed565b6113ea8261290b565b90505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613398565b60405180910390fd5b600360159054906101000a900460ff16156114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613542565b60405180910390fd5b6001600360156101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360159054906101000a900460ff1615611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613542565b60405180910390fd5b33600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906135ae565b60405180910390fd5b600360149054906101000a900460ff16156116a657600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e21c67c533878787876040518663ffffffff1660e01b815260040161166f9594939291906138bb565b600060405180830381600087803b15801561168957600080fd5b505af115801561169d573d6000803e3d6000fd5b505050506116b3565b6116b285858585612954565b5b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600780546116eb9061331b565b80601f01602080910402602001604051908101604052809291908181526020018280546117179061331b565b80156117645780601f1061173957610100808354040283529160200191611764565b820191906000526020600020905b81548152906001019060200180831161174757829003601f168201915b505050505081565b6000600360149054906101000a900460ff166117bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b49061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906136f1565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360159054906101000a900460ff16156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613542565b60405180910390fd5b33600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906135ae565b60405180910390fd5b600360149054906101000a900460ff1615611a3257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e18980a3386866040518463ffffffff1660e01b81526004016119e893929190613424565b6020604051808303816000875af1158015611a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2b9190613487565b9150611a3f565b611a3c8484612c40565b91505b5092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90613398565b60405180910390fd5b600360149054906101000a900460ff1615611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b90613950565b60405180910390fd5b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b73919061399f565b925050819055508160016000828254611b8c919061399f565b925050819055507fc790a174b576e850809e673168b703c3f5480d1c662f57ea2c08f08a17d509c68282604051611bc49291906139d3565b60405180910390a18073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c2a919061306b565b60405180910390a35050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb90613398565b60405180910390fd5b600360149054906101000a900460ff1615611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b90613950565b60405180910390fd5b80600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90613a6e565b60405180910390fd5b8060016000828254611dc99190613a8e565b9250508190555080600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e409190613a8e565b925050819055507f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a4481604051611e76919061306b565b60405180910390a1600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611efc919061306b565b60405180910390a350565b6000600360149054906101000a900460ff1615611fc357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401611f7b929190613ac2565b602060405180830381865afa158015611f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbc91906134c9565b9050611fd0565b611fcd8383612d5d565b90505b92915050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90613398565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c8160405161210b91906130e8565b60405180910390a150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90613398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e90613b37565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235990613398565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e590613ba3565b60405180910390fd5b60006123f982611327565b90506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008282546124529190613a8e565b925050819055507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c6828260405161248a929190613bc3565b60405180910390a1600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124f0919061306b565b60405180910390a35050565b60008082148061258857506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be90613c5e565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516126a5919061306b565b60405180910390a36001905092915050565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156127ee57828161276d9190613a8e565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461283d9190613a8e565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612893919061399f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128f7919061306b565b60405180910390a360019150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b81819050848490501461299c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299390613d16565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b85859050811015612bf4576000868683818110612a0357612a02613d36565b5b9050602002016020810190612a189190612fb9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8090613db1565b60405180910390fd5b6000858584818110612a9e57612a9d613d36565b5b90506020020135905083811115612aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae190613e1d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612b82578084612b299190613a8e565b935080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b7a919061399f565b925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bdf919061306b565b60405180910390a350508060010190506129e3565b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c919190613a8e565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ce7919061399f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d4b919061306b565b60405180910390a36001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612e2381612dee565b8114612e2e57600080fd5b50565b600081359050612e4081612e1a565b92915050565b600060208284031215612e5c57612e5b612de4565b5b6000612e6a84828501612e31565b91505092915050565b60008115159050919050565b612e8881612e73565b82525050565b6000602082019050612ea36000830184612e7f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee3578082015181840152602081019050612ec8565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0b82612ea9565b612f158185612eb4565b9350612f25818560208601612ec5565b612f2e81612eef565b840191505092915050565b60006020820190508181036000830152612f538184612f00565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8682612f5b565b9050919050565b612f9681612f7b565b8114612fa157600080fd5b50565b600081359050612fb381612f8d565b92915050565b600060208284031215612fcf57612fce612de4565b5b6000612fdd84828501612fa4565b91505092915050565b6000819050919050565b612ff981612fe6565b811461300457600080fd5b50565b60008135905061301681612ff0565b92915050565b6000806040838503121561303357613032612de4565b5b600061304185828601612fa4565b925050602061305285828601613007565b9150509250929050565b61306581612fe6565b82525050565b6000602082019050613080600083018461305c565b92915050565b60008060006060848603121561309f5761309e612de4565b5b60006130ad86828701612fa4565b93505060206130be86828701612fa4565b92505060406130cf86828701613007565b9150509250925092565b6130e281612f7b565b82525050565b60006020820190506130fd60008301846130d9565b92915050565b6000806040838503121561311a57613119612de4565b5b600061312885828601612fa4565b925050602061313985828601612fa4565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261316857613167613143565b5b8235905067ffffffffffffffff81111561318557613184613148565b5b6020830191508360208202830111156131a1576131a061314d565b5b9250929050565b60008083601f8401126131be576131bd613143565b5b8235905067ffffffffffffffff8111156131db576131da613148565b5b6020830191508360208202830111156131f7576131f661314d565b5b9250929050565b6000806000806040858703121561321857613217612de4565b5b600085013567ffffffffffffffff81111561323657613235612de9565b5b61324287828801613152565b9450945050602085013567ffffffffffffffff81111561326557613264612de9565b5b613271878288016131a8565b925092505092959194509250565b6000806040838503121561329657613295612de4565b5b60006132a485828601613007565b92505060206132b585828601612fa4565b9150509250929050565b6000602082840312156132d5576132d4612de4565b5b60006132e384828501613007565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333357607f821691505b602082108103613346576133456132ec565b5b50919050565b7f6e6f7420616e206f776e65720000000000000000000000000000000000000000600082015250565b6000613382600c83612eb4565b915061338d8261334c565b602082019050919050565b600060208201905081810360008301526133b181613375565b9050919050565b7f7570677261646520636f6e74726163742061646472657373206973207a65726f600082015250565b60006133ee602083612eb4565b91506133f9826133b8565b602082019050919050565b6000602082019050818103600083015261341d816133e1565b9050919050565b600060608201905061343960008301866130d9565b61344660208301856130d9565b613453604083018461305c565b949350505050565b61346481612e73565b811461346f57600080fd5b50565b6000815190506134818161345b565b92915050565b60006020828403121561349d5761349c612de4565b5b60006134ab84828501613472565b91505092915050565b6000815190506134c381612ff0565b92915050565b6000602082840312156134df576134de612de4565b5b60006134ed848285016134b4565b91505092915050565b7f636f6e7472616374207061757365640000000000000000000000000000000000600082015250565b600061352c600f83612eb4565b9150613537826134f6565b602082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b7f6163636f756e7420626c61636b6c697374656400000000000000000000000000600082015250565b6000613598601383612eb4565b91506135a382613562565b602082019050919050565b600060208201905081810360008301526135c78161358b565b9050919050565b60006080820190506135e360008301876130d9565b6135f060208301866130d9565b6135fd60408301856130d9565b61360a606083018461305c565b95945050505050565b7f636f6e7472616374206e6f742064657072656361746564000000000000000000600082015250565b6000613649601783612eb4565b915061365482613613565b602082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f63616e206f6e6c792062652063616c6c65642066726f6d20757067726164656460008201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b60006136db602983612eb4565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f636f6e7472616374206e6f742070617573656400000000000000000000000000600082015250565b6000613747601383612eb4565b915061375282613711565b602082019050919050565b600060208201905081810360008301526137768161373a565b9050919050565b600082825260208201905092915050565b6000819050919050565b6137a181612f7b565b82525050565b60006137b38383613798565b60208301905092915050565b60006137ce6020840184612fa4565b905092915050565b6000602082019050919050565b60006137ef838561377d565b93506137fa8261378e565b8060005b858110156138335761381082846137bf565b61381a88826137a7565b9750613825836137d6565b9250506001810190506137fe565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b82818337505050565b600061386b8385613840565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561389e5761389d613851565b5b6020830292506138af838584613856565b82840190509392505050565b60006060820190506138d060008301886130d9565b81810360208301526138e38186886137e3565b905081810360408301526138f881848661385f565b90509695505050505050565b7f636f6e7472616374206973206465707265636174656400000000000000000000600082015250565b600061393a601683612eb4565b915061394582613904565b602082019050919050565b600060208201905081810360008301526139698161392d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139aa82612fe6565b91506139b583612fe6565b92508282019050808211156139cd576139cc613970565b5b92915050565b60006040820190506139e8600083018561305c565b6139f560208301846130d9565b9392505050565b7f6e6f7420656e6f7567682066756e6473206f6e206f776e6572206163636f756e60008201527f7420746f206275726e0000000000000000000000000000000000000000000000602082015250565b6000613a58602983612eb4565b9150613a63826139fc565b604082019050919050565b60006020820190508181036000830152613a8781613a4b565b9050919050565b6000613a9982612fe6565b9150613aa483612fe6565b9250828203905081811115613abc57613abb613970565b5b92915050565b6000604082019050613ad760008301856130d9565b613ae460208301846130d9565b9392505050565b7f6e6577206f776e6572206973207a65726f000000000000000000000000000000600082015250565b6000613b21601183612eb4565b9150613b2c82613aeb565b602082019050919050565b60006020820190508181036000830152613b5081613b14565b9050919050565b7f6163636f756e74206e6f7420626c61636b6c6973746564000000000000000000600082015250565b6000613b8d601783612eb4565b9150613b9882613b57565b602082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b6000604082019050613bd860008301856130d9565b613be5602083018461305c565b9392505050565b7f63616e6e6f74206368616e676520616c6c6f77616e63652066726f6d206e6f6e60008201527f2d7a65726f2076616c756520746f206e6f6e2d7a65726f2076616c7565000000602082015250565b6000613c48603d83612eb4565b9150613c5382613bec565b604082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b7f64657374696e6174696f6e2061646472657373657320636f756e7420646f657360008201527f206e6f74206d61746368207472616e7366657220616d6f756e747320636f756e60208201527f7400000000000000000000000000000000000000000000000000000000000000604082015250565b6000613d00604183612eb4565b9150613d0b82613c7e565b606082019050919050565b60006020820190508181036000830152613d2f81613cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f63616e6e6f74207472616e7366657220746f207a65726f206164647265737300600082015250565b6000613d9b601f83612eb4565b9150613da682613d65565b602082019050919050565b60006020820190508181036000830152613dca81613d8e565b9050919050565b7f6e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b6000613e07601083612eb4565b9150613e1282613dd1565b602082019050919050565b60006020820190508181036000830152613e3681613dfa565b905091905056fea264697066735822122031eb55880420777ba0d4ec5a74ed9b287c5ebb7b45e2b1dcb9f184dde24b992f64736f6c634300081a0033000000000000000000000000ee64930027a31f8a2ce9f71ec4925e21dd7cec430000000000000000000000000000000000000000000000000000000000000001000000000000000000000000521b9c41e7fe2c6b8e52730787d8cd8181441d8c00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006414348495658000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064143484956580000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80635c975abb1161010f578063b696a6ad116100a2578063e4997dc511610071578063e4997dc5146105cd578063e5b5019a146105e9578063f2fde38b14610607578063f3bdc22814610623576101f0565b8063b696a6ad14610535578063db006a7514610551578063dd62ed3e1461056d578063e47d60601461059d576101f0565b80638da5cb5b116100de5780638da5cb5b1461049957806395d89b41146104b757806397c0b856146104d5578063a9059cbb14610505576101f0565b80635c975abb1461042557806370a08231146104435780638456cb591461047357806388d695b21461047d576101f0565b806323de6651116101875780633f4ba83a116101565780633f4ba83a1461039f5780635687f2b8146103a9578063582442dc146103c55780635c658165146103f5576101f0565b806323de66511461031757806326976e3f1461033357806327e235e314610351578063313ce56714610381576101f0565b80630e136b19116101c35780630e136b191461028f5780630ecb93c0146102ad57806318160ddd146102c957806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde03146102255780630753c30c14610243578063095ea7b31461025f575b600080fd5b61020f600480360381019061020a9190612e46565b61063f565b60405161021c9190612e8e565b60405180910390f35b61022d6106da565b60405161023a9190612f39565b60405180910390f35b61025d60048036038101906102589190612fb9565b610768565b005b6102796004803603810190610274919061301c565b6108fb565b6040516102869190612e8e565b60405180910390f35b6102976109ce565b6040516102a49190612e8e565b60405180910390f35b6102c760048036038101906102c29190612fb9565b6109e1565b005b6102d1610b01565b6040516102de919061306b565b60405180910390f35b61030160048036038101906102fc9190613086565b610bb9565b60405161030e9190612e8e565b60405180910390f35b610331600480360381019061032c9190613086565b610d6f565b005b61033b610eb8565b60405161034891906130e8565b60405180910390f35b61036b60048036038101906103669190612fb9565b610ede565b604051610378919061306b565b60405180910390f35b610389610ef6565b604051610396919061306b565b60405180910390f35b6103a7610f1a565b005b6103c360048036038101906103be9190613086565b611040565b005b6103df60048036038101906103da9190613103565b611189565b6040516103ec919061306b565b60405180910390f35b61040f600480360381019061040a9190613103565b6112ef565b60405161041c919061306b565b60405180910390f35b61042d611314565b60405161043a9190612e8e565b60405180910390f35b61045d60048036038101906104589190612fb9565b611327565b60405161046a919061306b565b60405180910390f35b61047b6113f2565b005b610497600480360381019061049291906131fe565b611519565b005b6104a16116ba565b6040516104ae91906130e8565b60405180910390f35b6104bf6116de565b6040516104cc9190612f39565b60405180910390f35b6104ef60048036038101906104ea9190612fb9565b61176c565b6040516104fc919061306b565b60405180910390f35b61051f600480360381019061051a919061301c565b611894565b60405161052c9190612e8e565b60405180910390f35b61054f600480360381019061054a919061327f565b611a46565b005b61056b600480360381019061056691906132bf565b611c36565b005b61058760048036038101906105829190613103565b611f07565b604051610594919061306b565b60405180910390f35b6105b760048036038101906105b29190612fb9565b611fd6565b6040516105c49190612e8e565b60405180910390f35b6105e760048036038101906105e29190612fb9565b611ff6565b005b6105f1612116565b6040516105fe919061306b565b60405180910390f35b610621600480360381019061061c9190612fb9565b61213a565b005b61063d60048036038101906106389190612fb9565b6122d4565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061069a5750637f5828d060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106ca57506336372b0760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106d3575060005b9050919050565b600680546106e79061331b565b80601f01602080910402602001604051908101604052809291908181526020018280546107139061331b565b80156107605780601f1061073557610100808354040283529160200191610760565b820191906000526020600020905b81548152906001019060200180831161074357829003601f168201915b505050505081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ed90613398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90613404565b60405180910390fd5b6001600360146101000a81548160ff02191690831515021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e816040516108f091906130e8565b60405180910390a150565b6000600360149054906101000a900460ff16156109bb57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aee92d333385856040518463ffffffff1660e01b815260040161097193929190613424565b6020604051808303816000875af1158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b49190613487565b90506109c8565b6109c583836124fc565b90505b92915050565b600360149054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690613398565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc81604051610af691906130e8565b60405180910390a150565b6000600360149054906101000a900460ff1615610bb057600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906134c9565b9050610bb6565b60015490505b90565b6000600360159054906101000a900460ff1615610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0290613542565b60405180910390fd5b83600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c90906135ae565b60405180910390fd5b600360149054906101000a900460ff1615610d5957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b477adb338787876040518563ffffffff1660e01b8152600401610d0f94939291906135ce565b6020604051808303816000875af1158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190613487565b9150610d67565b610d648585856126b7565b91505b509392505050565b600360149054906101000a900460ff16610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db59061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e45906136f1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610eab919061306b565b60405180910390a3505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613398565b60405180910390fd5b600360159054906101000a900460ff16610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee9061375d565b60405180910390fd5b6000600360156101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600360149054906101000a900460ff1661108f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110869061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611116906136f1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161117c919061306b565b60405180910390a3505050565b6000600360149054906101000a900460ff166111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d19061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611261906136f1565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6004602052816000526040600020602052806000526040600020600091509150505481565b600360159054906101000a900460ff1681565b6000600360149054906101000a900460ff16156113e157600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161139991906130e8565b602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906134c9565b90506113ed565b6113ea8261290b565b90505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613398565b60405180910390fd5b600360159054906101000a900460ff16156114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613542565b60405180910390fd5b6001600360156101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360159054906101000a900460ff1615611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613542565b60405180910390fd5b33600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906135ae565b60405180910390fd5b600360149054906101000a900460ff16156116a657600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e21c67c533878787876040518663ffffffff1660e01b815260040161166f9594939291906138bb565b600060405180830381600087803b15801561168957600080fd5b505af115801561169d573d6000803e3d6000fd5b505050506116b3565b6116b285858585612954565b5b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600780546116eb9061331b565b80601f01602080910402602001604051908101604052809291908181526020018280546117179061331b565b80156117645780601f1061173957610100808354040283529160200191611764565b820191906000526020600020905b81548152906001019060200180831161174757829003601f168201915b505050505081565b6000600360149054906101000a900460ff166117bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b49061365f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906136f1565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360159054906101000a900460ff16156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613542565b60405180910390fd5b33600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906135ae565b60405180910390fd5b600360149054906101000a900460ff1615611a3257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e18980a3386866040518463ffffffff1660e01b81526004016119e893929190613424565b6020604051808303816000875af1158015611a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2b9190613487565b9150611a3f565b611a3c8484612c40565b91505b5092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90613398565b60405180910390fd5b600360149054906101000a900460ff1615611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b90613950565b60405180910390fd5b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b73919061399f565b925050819055508160016000828254611b8c919061399f565b925050819055507fc790a174b576e850809e673168b703c3f5480d1c662f57ea2c08f08a17d509c68282604051611bc49291906139d3565b60405180910390a18073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c2a919061306b565b60405180910390a35050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb90613398565b60405180910390fd5b600360149054906101000a900460ff1615611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b90613950565b60405180910390fd5b80600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90613a6e565b60405180910390fd5b8060016000828254611dc99190613a8e565b9250508190555080600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e409190613a8e565b925050819055507f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a4481604051611e76919061306b565b60405180910390a1600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611efc919061306b565b60405180910390a350565b6000600360149054906101000a900460ff1615611fc357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401611f7b929190613ac2565b602060405180830381865afa158015611f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbc91906134c9565b9050611fd0565b611fcd8383612d5d565b90505b92915050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90613398565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c8160405161210b91906130e8565b60405180910390a150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90613398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e90613b37565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235990613398565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e590613ba3565b60405180910390fd5b60006123f982611327565b90506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008282546124529190613a8e565b925050819055507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c6828260405161248a929190613bc3565b60405180910390a1600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124f0919061306b565b60405180910390a35050565b60008082148061258857506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be90613c5e565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516126a5919061306b565b60405180910390a36001905092915050565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156127ee57828161276d9190613a8e565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461283d9190613a8e565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612893919061399f565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128f7919061306b565b60405180910390a360019150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b81819050848490501461299c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299390613d16565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b85859050811015612bf4576000868683818110612a0357612a02613d36565b5b9050602002016020810190612a189190612fb9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8090613db1565b60405180910390fd5b6000858584818110612a9e57612a9d613d36565b5b90506020020135905083811115612aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae190613e1d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612b82578084612b299190613a8e565b935080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b7a919061399f565b925050819055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bdf919061306b565b60405180910390a350508060010190506129e3565b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c919190613a8e565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ce7919061399f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d4b919061306b565b60405180910390a36001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612e2381612dee565b8114612e2e57600080fd5b50565b600081359050612e4081612e1a565b92915050565b600060208284031215612e5c57612e5b612de4565b5b6000612e6a84828501612e31565b91505092915050565b60008115159050919050565b612e8881612e73565b82525050565b6000602082019050612ea36000830184612e7f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee3578082015181840152602081019050612ec8565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0b82612ea9565b612f158185612eb4565b9350612f25818560208601612ec5565b612f2e81612eef565b840191505092915050565b60006020820190508181036000830152612f538184612f00565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8682612f5b565b9050919050565b612f9681612f7b565b8114612fa157600080fd5b50565b600081359050612fb381612f8d565b92915050565b600060208284031215612fcf57612fce612de4565b5b6000612fdd84828501612fa4565b91505092915050565b6000819050919050565b612ff981612fe6565b811461300457600080fd5b50565b60008135905061301681612ff0565b92915050565b6000806040838503121561303357613032612de4565b5b600061304185828601612fa4565b925050602061305285828601613007565b9150509250929050565b61306581612fe6565b82525050565b6000602082019050613080600083018461305c565b92915050565b60008060006060848603121561309f5761309e612de4565b5b60006130ad86828701612fa4565b93505060206130be86828701612fa4565b92505060406130cf86828701613007565b9150509250925092565b6130e281612f7b565b82525050565b60006020820190506130fd60008301846130d9565b92915050565b6000806040838503121561311a57613119612de4565b5b600061312885828601612fa4565b925050602061313985828601612fa4565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261316857613167613143565b5b8235905067ffffffffffffffff81111561318557613184613148565b5b6020830191508360208202830111156131a1576131a061314d565b5b9250929050565b60008083601f8401126131be576131bd613143565b5b8235905067ffffffffffffffff8111156131db576131da613148565b5b6020830191508360208202830111156131f7576131f661314d565b5b9250929050565b6000806000806040858703121561321857613217612de4565b5b600085013567ffffffffffffffff81111561323657613235612de9565b5b61324287828801613152565b9450945050602085013567ffffffffffffffff81111561326557613264612de9565b5b613271878288016131a8565b925092505092959194509250565b6000806040838503121561329657613295612de4565b5b60006132a485828601613007565b92505060206132b585828601612fa4565b9150509250929050565b6000602082840312156132d5576132d4612de4565b5b60006132e384828501613007565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333357607f821691505b602082108103613346576133456132ec565b5b50919050565b7f6e6f7420616e206f776e65720000000000000000000000000000000000000000600082015250565b6000613382600c83612eb4565b915061338d8261334c565b602082019050919050565b600060208201905081810360008301526133b181613375565b9050919050565b7f7570677261646520636f6e74726163742061646472657373206973207a65726f600082015250565b60006133ee602083612eb4565b91506133f9826133b8565b602082019050919050565b6000602082019050818103600083015261341d816133e1565b9050919050565b600060608201905061343960008301866130d9565b61344660208301856130d9565b613453604083018461305c565b949350505050565b61346481612e73565b811461346f57600080fd5b50565b6000815190506134818161345b565b92915050565b60006020828403121561349d5761349c612de4565b5b60006134ab84828501613472565b91505092915050565b6000815190506134c381612ff0565b92915050565b6000602082840312156134df576134de612de4565b5b60006134ed848285016134b4565b91505092915050565b7f636f6e7472616374207061757365640000000000000000000000000000000000600082015250565b600061352c600f83612eb4565b9150613537826134f6565b602082019050919050565b6000602082019050818103600083015261355b8161351f565b9050919050565b7f6163636f756e7420626c61636b6c697374656400000000000000000000000000600082015250565b6000613598601383612eb4565b91506135a382613562565b602082019050919050565b600060208201905081810360008301526135c78161358b565b9050919050565b60006080820190506135e360008301876130d9565b6135f060208301866130d9565b6135fd60408301856130d9565b61360a606083018461305c565b95945050505050565b7f636f6e7472616374206e6f742064657072656361746564000000000000000000600082015250565b6000613649601783612eb4565b915061365482613613565b602082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f63616e206f6e6c792062652063616c6c65642066726f6d20757067726164656460008201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b60006136db602983612eb4565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f636f6e7472616374206e6f742070617573656400000000000000000000000000600082015250565b6000613747601383612eb4565b915061375282613711565b602082019050919050565b600060208201905081810360008301526137768161373a565b9050919050565b600082825260208201905092915050565b6000819050919050565b6137a181612f7b565b82525050565b60006137b38383613798565b60208301905092915050565b60006137ce6020840184612fa4565b905092915050565b6000602082019050919050565b60006137ef838561377d565b93506137fa8261378e565b8060005b858110156138335761381082846137bf565b61381a88826137a7565b9750613825836137d6565b9250506001810190506137fe565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b82818337505050565b600061386b8385613840565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561389e5761389d613851565b5b6020830292506138af838584613856565b82840190509392505050565b60006060820190506138d060008301886130d9565b81810360208301526138e38186886137e3565b905081810360408301526138f881848661385f565b90509695505050505050565b7f636f6e7472616374206973206465707265636174656400000000000000000000600082015250565b600061393a601683612eb4565b915061394582613904565b602082019050919050565b600060208201905081810360008301526139698161392d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139aa82612fe6565b91506139b583612fe6565b92508282019050808211156139cd576139cc613970565b5b92915050565b60006040820190506139e8600083018561305c565b6139f560208301846130d9565b9392505050565b7f6e6f7420656e6f7567682066756e6473206f6e206f776e6572206163636f756e60008201527f7420746f206275726e0000000000000000000000000000000000000000000000602082015250565b6000613a58602983612eb4565b9150613a63826139fc565b604082019050919050565b60006020820190508181036000830152613a8781613a4b565b9050919050565b6000613a9982612fe6565b9150613aa483612fe6565b9250828203905081811115613abc57613abb613970565b5b92915050565b6000604082019050613ad760008301856130d9565b613ae460208301846130d9565b9392505050565b7f6e6577206f776e6572206973207a65726f000000000000000000000000000000600082015250565b6000613b21601183612eb4565b9150613b2c82613aeb565b602082019050919050565b60006020820190508181036000830152613b5081613b14565b9050919050565b7f6163636f756e74206e6f7420626c61636b6c6973746564000000000000000000600082015250565b6000613b8d601783612eb4565b9150613b9882613b57565b602082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b6000604082019050613bd860008301856130d9565b613be5602083018461305c565b9392505050565b7f63616e6e6f74206368616e676520616c6c6f77616e63652066726f6d206e6f6e60008201527f2d7a65726f2076616c756520746f206e6f6e2d7a65726f2076616c7565000000602082015250565b6000613c48603d83612eb4565b9150613c5382613bec565b604082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b7f64657374696e6174696f6e2061646472657373657320636f756e7420646f657360008201527f206e6f74206d61746368207472616e7366657220616d6f756e747320636f756e60208201527f7400000000000000000000000000000000000000000000000000000000000000604082015250565b6000613d00604183612eb4565b9150613d0b82613c7e565b606082019050919050565b60006020820190508181036000830152613d2f81613cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f63616e6e6f74207472616e7366657220746f207a65726f206164647265737300600082015250565b6000613d9b601f83612eb4565b9150613da682613d65565b602082019050919050565b60006020820190508181036000830152613dca81613d8e565b9050919050565b7f6e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b6000613e07601083612eb4565b9150613e1282613dd1565b602082019050919050565b60006020820190508181036000830152613e3681613dfa565b905091905056fea264697066735822122031eb55880420777ba0d4ec5a74ed9b287c5ebb7b45e2b1dcb9f184dde24b992f64736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ee64930027a31f8a2ce9f71ec4925e21dd7cec430000000000000000000000000000000000000000000000000000000000000001000000000000000000000000521b9c41e7fe2c6b8e52730787d8cd8181441d8c00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006414348495658000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064143484956580000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : owner (address): 0xEe64930027a31F8a2Ce9F71eC4925E21Dd7CEc43
Arg [1] : initialSupply (uint256): 1
Arg [2] : supplier (address): 0x521b9c41E7fE2C6b8e52730787D8cd8181441d8c
Arg [3] : name_ (string): ACHIVX
Arg [4] : symbol_ (string): ACHIVX
Arg [5] : decimals_ (uint256): 6

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000ee64930027a31f8a2ce9f71ec4925e21dd7cec43
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 000000000000000000000000521b9c41e7fe2c6b8e52730787d8cd8181441d8c
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [7] : 4143484956580000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [9] : 4143484956580000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

15198:5876:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16076:289;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15323:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12223:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17932:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12001:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8800:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19319:208;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16979:573;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19999:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11965:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2537:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15373:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8051:104;;;:::i;:::-;;20211:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19775;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3778:59;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7430:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17604:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7898:102;;;:::i;:::-;;18800:467;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;326:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15347;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19580:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16417:515;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20431:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20729:343;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18415:330;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8450:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8997:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3844:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;750:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9209:410;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16076:289;16160:4;16211:10;16196:25;;:11;:25;;;;16195:80;;;;16264:10;16249:25;;:11;:25;;;;16195:80;:133;;;;16317:10;16302:25;;:11;:25;;;;16195:133;:163;;;;16353:5;16195:163;16176:182;;16076:289;;;:::o;15323:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12223:303::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12346:1:::1;12318:30;;:16;:30;;::::0;12297:109:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12429:4;12416:10;;:17;;;;;;;;;;;;;;;;;;12461:16;12443:15;;:34;;;;;;;;;;;;;;;;;;12492:27;12502:16;12492:27;;;;;;:::i;:::-;;;;;;;;12223:303:::0;:::o;17932:436::-;18047:12;18075:10;;;;;;;;;;;18071:291;;;18146:15;;;;;;;;;;;18124:54;;;18200:10;18232:7;18261:5;18124:160;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18101:183;;;;18071:291;18322:29;18336:7;18345:5;18322:13;:29::i;:::-;18315:36;;17932:436;;;;;:::o;12001:22::-;;;;;;;;;;;;;:::o;8800:145::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8895:4:::1;8869:13;:23;8883:8;8869:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;8914:24;8929:8;8914:24;;;;;;:::i;:::-;;;;;;;;8800:145:::0;:::o;19319:208::-;19363:4;19383:10;;;;;;;;;;;19379:142;;;19430:15;;;;;;;;;;;19416:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19409:51;;;;19379:142;19498:12;;19491:19;;19319:208;;:::o;16979:573::-;17195:12;7610:6;;;;;;;;;;;7609:7;7601:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;17172:4:::1;8684:13;:22;8698:7;8684:22;;;;;;;;;;;;;;;;;;;;;;;;;8683:23;8675:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17227:10:::2;;;;;;;;;;;17223:323;;;17298:15;;;;;;;;;;;17276:59;;;17357:10;17389:4;17415:2;17439:5;17276:186;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17253:209;;;;17223:323;17500:35;17519:4;17525:2;17529:5;17500:18;:35::i;:::-;17493:42;;8740:1;7646::::1;16979:573:::0;;;;;:::o;19999:159::-;12678:10;;;;;;;;;;;12670:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12766:10;12747:29;;:15;;;;;;;;;;;:29;;;12726:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;20141:2:::1;20126:25;;20135:4;20126:25;;;20145:5;20126:25;;;;;;:::i;:::-;;;;;;;;19999:159:::0;;;:::o;11965:30::-;;;;;;;;;;;;;:::o;2537:40::-;;;;;;;;;;;;;;;;;:::o;15373:30::-;;;:::o;8051:104::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7799:6:::1;;;;;;;;;;;7791:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8119:5:::2;8110:6;;:14;;;;;;;;;;;;;;;;;;8139:9;;;;;;;;;;8051:104::o:0;20211:171::-;12678:10;;;;;;;;;;;12670:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12766:10;12747:29;;:15;;;;;;;;;;;:29;;;12726:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;20360:7:::1;20344:31;;20353:5;20344:31;;;20369:5;20344:31;;;;;;:::i;:::-;;;;;;;;20211:171:::0;;;:::o;19775:::-;19884:14;12678:10;;;;;;;;;;;12670:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12766:10;12747:29;;:15;;;;;;;;;;;:29;;;12726:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19922:7:::1;:13;19930:4;19922:13;;;;;;;;;;;;;;;:17;19936:2;19922:17;;;;;;;;;;;;;;;;19910:29;;19775:171:::0;;;;:::o;3778:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7430:26::-;;;;;;;;;;;;;:::o;17604:281::-;17704:4;17724:10;;;;;;;;;;;17720:159;;;17779:15;;;;;;;;;;;17757:48;;;17806:3;17757:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17750:60;;;;17720:159;17848:20;17864:3;17848:15;:20::i;:::-;17841:27;;17604:281;;;;:::o;7898:102::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7610:6:::1;;;;;;;;;;;7609:7;7601:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;7967:4:::2;7958:6;;:13;;;;;;;;;;;;;;;;;;7986:7;;;;;;;;;;7898:102::o:0;18800:467::-;7610:6;;;;;;;;;;;7609:7;7601:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;18942:10:::1;8684:13;:22;8698:7;8684:22;;;;;;;;;;;;;;;;;;;;;;;;;8683:23;8675:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18968:10:::2;;;;;;;;;;;18964:297;;;19039:15;;;;;;;;;;;19017:60;;;19099:10;19131:3;;19156:6;;19017:163;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;18994:186;;18964:297;19218:32;19238:3;;19243:6;;19218:19;:32::i;:::-;8740:1;7646::::1;18800:467:::0;;;;:::o;326:20::-;;;;;;;;;;;;:::o;15347:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19580:142::-;19667:12;12678:10;;;;;;;;;;;12670:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12766:10;12747:29;;:15;;;;;;;;;;;:29;;;12726:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19701:8:::1;:14;19710:4;19701:14;;;;;;;;;;;;;;;;19691:24;;19580:142:::0;;;:::o;16417:515::-;16615:12;7610:6;;;;;;;;;;;7609:7;7601:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;16586:10:::1;8684:13;:22;8698:7;8684:22;;;;;;;;;;;;;;;;;;;;;;;;;8683:23;8675:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16647:10:::2;;;;;;;;;;;16643:283;;;16718:15;;;;;;;;;;;16696:55;;;16773:10;16805:2;16829:5;16696:156;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16673:179;;;;16643:283;16890:25;16905:2;16909:5;16890:14;:25::i;:::-;16883:32;;8740:1;7646::::1;16417:515:::0;;;;:::o;20431:249::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13012:10:::1;;;;;;;;;;;13011:11;13003:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20556:6:::2;20540:8;:12;20549:2;20540:12;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;20588:6;20572:12;;:22;;;;;;;:::i;:::-;;;;;;;;20609:17;20615:6;20623:2;20609:17;;;;;;;:::i;:::-;;;;;;;;20662:2;20641:32;;20658:1;20641:32;;;20666:6;20641:32;;;;;;:::i;:::-;;;;;;;;20431:249:::0;;:::o;20729:343::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13012:10:::1;;;;;;;;;;;13011:11;13003:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20845:6:::2;20826:8;:15;20835:5:::0;::::2;;;;;;;;;;20826:15;;;;;;;;;;;;;;;;:25;;20805:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;20945:6;20929:12;;:22;;;;;;;:::i;:::-;;;;;;;;20980:6;20961:8;:15;20970:5:::0;::::2;;;;;;;;;;20961:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;21001:14;21008:6;21001:14;;;;;;:::i;:::-;;;;;;;;21054:1;21030:35;;21039:5;::::0;::::2;;;;;;;;21030:35;;;21058:6;21030:35;;;;;;:::i;:::-;;;;;;;;20729:343:::0;:::o;18415:330::-;18540:14;18570:10;;;;;;;;;;;18566:173;;;18617:15;;;;;;;;;;;18603:40;;;18644:5;18651:7;18603:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18596:63;;;;18566:173;18697:31;18713:5;18720:7;18697:15;:31::i;:::-;18690:38;;18415:330;;;;;:::o;8450:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;8997:160::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9101:5:::1;9072:13;:26;9086:11;9072:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9121:29;9138:11;9121:29;;;;;;:::i;:::-;;;;;;;;8997:160:::0;:::o;3844:44::-;3876:12;3844:44;:::o;750:225::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;861:1:::1;841:22;;:8;:22;;::::0;833:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;903:8;895:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;959:8;926:42;;947:10;926:42;;;;;;;;;;;;750:225:::0;:::o;9209:410::-;704:5;;;;;;;;;;690:19;;:10;:19;;;682:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9298:13:::1;:30;9312:15;9298:30;;;;;;;;;;;;;;;;;;;;;;;;;9290:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9366:15;9384:26;9394:15;9384:9;:26::i;:::-;9366:44;;9448:1;9420:8;:25;9429:15;9420:25;;;;;;;;;;;;;;;:29;;;;9475:10;9459:12;;:26;;;;;;;:::i;:::-;;;;;;;;9500:48;9520:15;9537:10;9500:48;;;;;;;:::i;:::-;;;;;;;;9597:1;9563:49;;9572:15;9563:49;;;9601:10;9563:49;;;;;;:::i;:::-;;;;;;;;9280:339;9209:410:::0;:::o;4847:712::-;4948:12;5305:1;5296:5;:10;:47;;;;5342:1;5310:7;:19;5318:10;5310:19;;;;;;;;;;;;;;;:28;5330:7;5310:28;;;;;;;;;;;;;;;;:33;5296:47;5275:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;5472:5;5441:7;:19;5449:10;5441:19;;;;;;;;;;;;;;;:28;5461:7;5441:28;;;;;;;;;;;;;;;:36;;;;5513:7;5492:36;;5501:10;5492:36;;;5522:5;5492:36;;;;;;:::i;:::-;;;;;;;;5548:4;5538:14;;4847:712;;;;:::o;4172:433::-;4295:12;4319:15;4337:7;:13;4345:4;4337:13;;;;;;;;;;;;;;;:25;4351:10;4337:25;;;;;;;;;;;;;;;;4319:43;;3876:12;4377:10;:21;4373:98;;;4455:5;4442:10;:18;;;;:::i;:::-;4414:7;:13;4422:4;4414:13;;;;;;;;;;;;;;;:25;4428:10;4414:25;;;;;;;;;;;;;;;:46;;;;4373:98;4498:5;4480:8;:14;4489:4;4480:14;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4529:5;4513:8;:12;4522:2;4513:12;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;4564:2;4549:25;;4558:4;4549:25;;;4568:5;4549:25;;;;;;:::i;:::-;;;;;;;;4594:4;4584:14;;4309:296;4172:433;;;;;:::o;3431:139::-;3517:12;3548:8;:15;3557:5;3548:15;;;;;;;;;;;;;;;;3541:22;;3431:139;;;:::o;6434:824::-;6596:6;;:13;;6582:3;;:10;;:27;6561:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;6710:18;6731:8;:20;6740:10;6731:20;;;;;;;;;;;;;;;;6710:41;;6767:6;6762:443;6783:3;;:10;;6779:1;:14;6762:443;;;6814:10;6827:3;;6831:1;6827:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6814:19;;6869:1;6855:16;;:2;:16;;;6847:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6921:11;6935:6;;6942:1;6935:9;;;;;;;:::i;:::-;;;;;;;;6921:23;;6976:13;6966:6;:23;;6958:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7035:10;7029:16;;:2;:16;;;7025:118;;7082:6;7065:23;;;;;:::i;:::-;;;7122:6;7106:8;:12;7115:2;7106:12;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;7025:118;7183:2;7162:32;;7171:10;7162:32;;;7187:6;7162:32;;;;;;:::i;:::-;;;;;;;;6800:405;;6795:3;;;;;6762:443;;;;7238:13;7215:8;:20;7224:10;7215:20;;;;;;;;;;;;;;;:36;;;;6551:707;6434:824;;;;:::o;2951:258::-;3048:12;3096:5;3072:8;:20;3081:10;3072:20;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;3127:5;3111:8;:12;3120:2;3111:12;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;3168:2;3147:31;;3156:10;3147:31;;;3172:5;3147:31;;;;;;:::i;:::-;;;;;;;;3198:4;3188:14;;2951:258;;;;:::o;5897:174::-;6008:14;6041:7;:14;6049:5;6041:14;;;;;;;;;;;;;;;:23;6056:7;6041:23;;;;;;;;;;;;;;;;6034:30;;5897:174;;;;:::o;88:117:2:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:248::-;1880:1;1890:113;1904:6;1901:1;1898:13;1890:113;;;1989:1;1984:3;1980:11;1974:18;1970:1;1965:3;1961:11;1954:39;1926:2;1923:1;1919:10;1914:15;;1890:113;;;2037:1;2028:6;2023:3;2019:16;2012:27;1860:186;1798:248;;;:::o;2052:102::-;2093:6;2144:2;2140:7;2135:2;2128:5;2124:14;2120:28;2110:38;;2052:102;;;:::o;2160:377::-;2248:3;2276:39;2309:5;2276:39;:::i;:::-;2331:71;2395:6;2390:3;2331:71;:::i;:::-;2324:78;;2411:65;2469:6;2464:3;2457:4;2450:5;2446:16;2411:65;:::i;:::-;2501:29;2523:6;2501:29;:::i;:::-;2496:3;2492:39;2485:46;;2252:285;2160:377;;;;:::o;2543:313::-;2656:4;2694:2;2683:9;2679:18;2671:26;;2743:9;2737:4;2733:20;2729:1;2718:9;2714:17;2707:47;2771:78;2844:4;2835:6;2771:78;:::i;:::-;2763:86;;2543:313;;;;:::o;2862:126::-;2899:7;2939:42;2932:5;2928:54;2917:65;;2862:126;;;:::o;2994:96::-;3031:7;3060:24;3078:5;3060:24;:::i;:::-;3049:35;;2994:96;;;:::o;3096:122::-;3169:24;3187:5;3169:24;:::i;:::-;3162:5;3159:35;3149:63;;3208:1;3205;3198:12;3149:63;3096:122;:::o;3224:139::-;3270:5;3308:6;3295:20;3286:29;;3324:33;3351:5;3324:33;:::i;:::-;3224:139;;;;:::o;3369:329::-;3428:6;3477:2;3465:9;3456:7;3452:23;3448:32;3445:119;;;3483:79;;:::i;:::-;3445:119;3603:1;3628:53;3673:7;3664:6;3653:9;3649:22;3628:53;:::i;:::-;3618:63;;3574:117;3369:329;;;;:::o;3704:77::-;3741:7;3770:5;3759:16;;3704:77;;;:::o;3787:122::-;3860:24;3878:5;3860:24;:::i;:::-;3853:5;3850:35;3840:63;;3899:1;3896;3889:12;3840:63;3787:122;:::o;3915:139::-;3961:5;3999:6;3986:20;3977:29;;4015:33;4042:5;4015:33;:::i;:::-;3915:139;;;;:::o;4060:474::-;4128:6;4136;4185:2;4173:9;4164:7;4160:23;4156:32;4153:119;;;4191:79;;:::i;:::-;4153:119;4311:1;4336:53;4381:7;4372:6;4361:9;4357:22;4336:53;:::i;:::-;4326:63;;4282:117;4438:2;4464:53;4509:7;4500:6;4489:9;4485:22;4464:53;:::i;:::-;4454:63;;4409:118;4060:474;;;;;:::o;4540:118::-;4627:24;4645:5;4627:24;:::i;:::-;4622:3;4615:37;4540:118;;:::o;4664:222::-;4757:4;4795:2;4784:9;4780:18;4772:26;;4808:71;4876:1;4865:9;4861:17;4852:6;4808:71;:::i;:::-;4664:222;;;;:::o;4892:619::-;4969:6;4977;4985;5034:2;5022:9;5013:7;5009:23;5005:32;5002:119;;;5040:79;;:::i;:::-;5002:119;5160:1;5185:53;5230:7;5221:6;5210:9;5206:22;5185:53;:::i;:::-;5175:63;;5131:117;5287:2;5313:53;5358:7;5349:6;5338:9;5334:22;5313:53;:::i;:::-;5303:63;;5258:118;5415:2;5441:53;5486:7;5477:6;5466:9;5462:22;5441:53;:::i;:::-;5431:63;;5386:118;4892:619;;;;;:::o;5517:118::-;5604:24;5622:5;5604:24;:::i;:::-;5599:3;5592:37;5517:118;;:::o;5641:222::-;5734:4;5772:2;5761:9;5757:18;5749:26;;5785:71;5853:1;5842:9;5838:17;5829:6;5785:71;:::i;:::-;5641:222;;;;:::o;5869:474::-;5937:6;5945;5994:2;5982:9;5973:7;5969:23;5965:32;5962:119;;;6000:79;;:::i;:::-;5962:119;6120:1;6145:53;6190:7;6181:6;6170:9;6166:22;6145:53;:::i;:::-;6135:63;;6091:117;6247:2;6273:53;6318:7;6309:6;6298:9;6294:22;6273:53;:::i;:::-;6263:63;;6218:118;5869:474;;;;;:::o;6349:117::-;6458:1;6455;6448:12;6472:117;6581:1;6578;6571:12;6595:117;6704:1;6701;6694:12;6735:568;6808:8;6818:6;6868:3;6861:4;6853:6;6849:17;6845:27;6835:122;;6876:79;;:::i;:::-;6835:122;6989:6;6976:20;6966:30;;7019:18;7011:6;7008:30;7005:117;;;7041:79;;:::i;:::-;7005:117;7155:4;7147:6;7143:17;7131:29;;7209:3;7201:4;7193:6;7189:17;7179:8;7175:32;7172:41;7169:128;;;7216:79;;:::i;:::-;7169:128;6735:568;;;;;:::o;7326:::-;7399:8;7409:6;7459:3;7452:4;7444:6;7440:17;7436:27;7426:122;;7467:79;;:::i;:::-;7426:122;7580:6;7567:20;7557:30;;7610:18;7602:6;7599:30;7596:117;;;7632:79;;:::i;:::-;7596:117;7746:4;7738:6;7734:17;7722:29;;7800:3;7792:4;7784:6;7780:17;7770:8;7766:32;7763:41;7760:128;;;7807:79;;:::i;:::-;7760:128;7326:568;;;;;:::o;7900:934::-;8022:6;8030;8038;8046;8095:2;8083:9;8074:7;8070:23;8066:32;8063:119;;;8101:79;;:::i;:::-;8063:119;8249:1;8238:9;8234:17;8221:31;8279:18;8271:6;8268:30;8265:117;;;8301:79;;:::i;:::-;8265:117;8414:80;8486:7;8477:6;8466:9;8462:22;8414:80;:::i;:::-;8396:98;;;;8192:312;8571:2;8560:9;8556:18;8543:32;8602:18;8594:6;8591:30;8588:117;;;8624:79;;:::i;:::-;8588:117;8737:80;8809:7;8800:6;8789:9;8785:22;8737:80;:::i;:::-;8719:98;;;;8514:313;7900:934;;;;;;;:::o;8840:474::-;8908:6;8916;8965:2;8953:9;8944:7;8940:23;8936:32;8933:119;;;8971:79;;:::i;:::-;8933:119;9091:1;9116:53;9161:7;9152:6;9141:9;9137:22;9116:53;:::i;:::-;9106:63;;9062:117;9218:2;9244:53;9289:7;9280:6;9269:9;9265:22;9244:53;:::i;:::-;9234:63;;9189:118;8840:474;;;;;:::o;9320:329::-;9379:6;9428:2;9416:9;9407:7;9403:23;9399:32;9396:119;;;9434:79;;:::i;:::-;9396:119;9554:1;9579:53;9624:7;9615:6;9604:9;9600:22;9579:53;:::i;:::-;9569:63;;9525:117;9320:329;;;;:::o;9655:180::-;9703:77;9700:1;9693:88;9800:4;9797:1;9790:15;9824:4;9821:1;9814:15;9841:320;9885:6;9922:1;9916:4;9912:12;9902:22;;9969:1;9963:4;9959:12;9990:18;9980:81;;10046:4;10038:6;10034:17;10024:27;;9980:81;10108:2;10100:6;10097:14;10077:18;10074:38;10071:84;;10127:18;;:::i;:::-;10071:84;9892:269;9841:320;;;:::o;10167:162::-;10307:14;10303:1;10295:6;10291:14;10284:38;10167:162;:::o;10335:366::-;10477:3;10498:67;10562:2;10557:3;10498:67;:::i;:::-;10491:74;;10574:93;10663:3;10574:93;:::i;:::-;10692:2;10687:3;10683:12;10676:19;;10335:366;;;:::o;10707:419::-;10873:4;10911:2;10900:9;10896:18;10888:26;;10960:9;10954:4;10950:20;10946:1;10935:9;10931:17;10924:47;10988:131;11114:4;10988:131;:::i;:::-;10980:139;;10707:419;;;:::o;11132:182::-;11272:34;11268:1;11260:6;11256:14;11249:58;11132:182;:::o;11320:366::-;11462:3;11483:67;11547:2;11542:3;11483:67;:::i;:::-;11476:74;;11559:93;11648:3;11559:93;:::i;:::-;11677:2;11672:3;11668:12;11661:19;;11320:366;;;:::o;11692:419::-;11858:4;11896:2;11885:9;11881:18;11873:26;;11945:9;11939:4;11935:20;11931:1;11920:9;11916:17;11909:47;11973:131;12099:4;11973:131;:::i;:::-;11965:139;;11692:419;;;:::o;12117:442::-;12266:4;12304:2;12293:9;12289:18;12281:26;;12317:71;12385:1;12374:9;12370:17;12361:6;12317:71;:::i;:::-;12398:72;12466:2;12455:9;12451:18;12442:6;12398:72;:::i;:::-;12480;12548:2;12537:9;12533:18;12524:6;12480:72;:::i;:::-;12117:442;;;;;;:::o;12565:116::-;12635:21;12650:5;12635:21;:::i;:::-;12628:5;12625:32;12615:60;;12671:1;12668;12661:12;12615:60;12565:116;:::o;12687:137::-;12741:5;12772:6;12766:13;12757:22;;12788:30;12812:5;12788:30;:::i;:::-;12687:137;;;;:::o;12830:345::-;12897:6;12946:2;12934:9;12925:7;12921:23;12917:32;12914:119;;;12952:79;;:::i;:::-;12914:119;13072:1;13097:61;13150:7;13141:6;13130:9;13126:22;13097:61;:::i;:::-;13087:71;;13043:125;12830:345;;;;:::o;13181:143::-;13238:5;13269:6;13263:13;13254:22;;13285:33;13312:5;13285:33;:::i;:::-;13181:143;;;;:::o;13330:351::-;13400:6;13449:2;13437:9;13428:7;13424:23;13420:32;13417:119;;;13455:79;;:::i;:::-;13417:119;13575:1;13600:64;13656:7;13647:6;13636:9;13632:22;13600:64;:::i;:::-;13590:74;;13546:128;13330:351;;;;:::o;13687:165::-;13827:17;13823:1;13815:6;13811:14;13804:41;13687:165;:::o;13858:366::-;14000:3;14021:67;14085:2;14080:3;14021:67;:::i;:::-;14014:74;;14097:93;14186:3;14097:93;:::i;:::-;14215:2;14210:3;14206:12;14199:19;;13858:366;;;:::o;14230:419::-;14396:4;14434:2;14423:9;14419:18;14411:26;;14483:9;14477:4;14473:20;14469:1;14458:9;14454:17;14447:47;14511:131;14637:4;14511:131;:::i;:::-;14503:139;;14230:419;;;:::o;14655:169::-;14795:21;14791:1;14783:6;14779:14;14772:45;14655:169;:::o;14830:366::-;14972:3;14993:67;15057:2;15052:3;14993:67;:::i;:::-;14986:74;;15069:93;15158:3;15069:93;:::i;:::-;15187:2;15182:3;15178:12;15171:19;;14830:366;;;:::o;15202:419::-;15368:4;15406:2;15395:9;15391:18;15383:26;;15455:9;15449:4;15445:20;15441:1;15430:9;15426:17;15419:47;15483:131;15609:4;15483:131;:::i;:::-;15475:139;;15202:419;;;:::o;15627:553::-;15804:4;15842:3;15831:9;15827:19;15819:27;;15856:71;15924:1;15913:9;15909:17;15900:6;15856:71;:::i;:::-;15937:72;16005:2;15994:9;15990:18;15981:6;15937:72;:::i;:::-;16019;16087:2;16076:9;16072:18;16063:6;16019:72;:::i;:::-;16101;16169:2;16158:9;16154:18;16145:6;16101:72;:::i;:::-;15627:553;;;;;;;:::o;16186:173::-;16326:25;16322:1;16314:6;16310:14;16303:49;16186:173;:::o;16365:366::-;16507:3;16528:67;16592:2;16587:3;16528:67;:::i;:::-;16521:74;;16604:93;16693:3;16604:93;:::i;:::-;16722:2;16717:3;16713:12;16706:19;;16365:366;;;:::o;16737:419::-;16903:4;16941:2;16930:9;16926:18;16918:26;;16990:9;16984:4;16980:20;16976:1;16965:9;16961:17;16954:47;17018:131;17144:4;17018:131;:::i;:::-;17010:139;;16737:419;;;:::o;17162:228::-;17302:34;17298:1;17290:6;17286:14;17279:58;17371:11;17366:2;17358:6;17354:15;17347:36;17162:228;:::o;17396:366::-;17538:3;17559:67;17623:2;17618:3;17559:67;:::i;:::-;17552:74;;17635:93;17724:3;17635:93;:::i;:::-;17753:2;17748:3;17744:12;17737:19;;17396:366;;;:::o;17768:419::-;17934:4;17972:2;17961:9;17957:18;17949:26;;18021:9;18015:4;18011:20;18007:1;17996:9;17992:17;17985:47;18049:131;18175:4;18049:131;:::i;:::-;18041:139;;17768:419;;;:::o;18193:169::-;18333:21;18329:1;18321:6;18317:14;18310:45;18193:169;:::o;18368:366::-;18510:3;18531:67;18595:2;18590:3;18531:67;:::i;:::-;18524:74;;18607:93;18696:3;18607:93;:::i;:::-;18725:2;18720:3;18716:12;18709:19;;18368:366;;;:::o;18740:419::-;18906:4;18944:2;18933:9;18929:18;18921:26;;18993:9;18987:4;18983:20;18979:1;18968:9;18964:17;18957:47;19021:131;19147:4;19021:131;:::i;:::-;19013:139;;18740:419;;;:::o;19165:184::-;19264:11;19298:6;19293:3;19286:19;19338:4;19333:3;19329:14;19314:29;;19165:184;;;;:::o;19355:102::-;19424:4;19447:3;19439:11;;19355:102;;;:::o;19463:108::-;19540:24;19558:5;19540:24;:::i;:::-;19535:3;19528:37;19463:108;;:::o;19577:179::-;19646:10;19667:46;19709:3;19701:6;19667:46;:::i;:::-;19745:4;19740:3;19736:14;19722:28;;19577:179;;;;:::o;19762:122::-;19814:5;19839:39;19874:2;19869:3;19865:12;19860:3;19839:39;:::i;:::-;19830:48;;19762:122;;;;:::o;19890:115::-;19962:4;19994;19989:3;19985:14;19977:22;;19890:115;;;:::o;20041:699::-;20170:3;20193:86;20272:6;20267:3;20193:86;:::i;:::-;20186:93;;20303:58;20355:5;20303:58;:::i;:::-;20384:7;20415:1;20400:315;20425:6;20422:1;20419:13;20400:315;;;20495:42;20530:6;20521:7;20495:42;:::i;:::-;20557:63;20616:3;20601:13;20557:63;:::i;:::-;20550:70;;20643:62;20698:6;20643:62;:::i;:::-;20633:72;;20460:255;20447:1;20444;20440:9;20435:14;;20400:315;;;20404:14;20731:3;20724:10;;20175:565;;20041:699;;;;;:::o;20746:184::-;20845:11;20879:6;20874:3;20867:19;20919:4;20914:3;20910:14;20895:29;;20746:184;;;;:::o;20936:117::-;21045:1;21042;21035:12;21059:99;21144:6;21139:3;21134;21121:30;21059:99;;;:::o;21194:537::-;21322:3;21343:86;21422:6;21417:3;21343:86;:::i;:::-;21336:93;;21453:66;21445:6;21442:78;21439:165;;;21523:79;;:::i;:::-;21439:165;21635:4;21627:6;21623:17;21613:27;;21650:43;21686:6;21681:3;21674:5;21650:43;:::i;:::-;21718:6;21713:3;21709:16;21702:23;;21194:537;;;;;:::o;21737:784::-;22006:4;22044:2;22033:9;22029:18;22021:26;;22057:71;22125:1;22114:9;22110:17;22101:6;22057:71;:::i;:::-;22175:9;22169:4;22165:20;22160:2;22149:9;22145:18;22138:48;22203:118;22316:4;22307:6;22299;22203:118;:::i;:::-;22195:126;;22368:9;22362:4;22358:20;22353:2;22342:9;22338:18;22331:48;22396:118;22509:4;22500:6;22492;22396:118;:::i;:::-;22388:126;;21737:784;;;;;;;;:::o;22527:172::-;22667:24;22663:1;22655:6;22651:14;22644:48;22527:172;:::o;22705:366::-;22847:3;22868:67;22932:2;22927:3;22868:67;:::i;:::-;22861:74;;22944:93;23033:3;22944:93;:::i;:::-;23062:2;23057:3;23053:12;23046:19;;22705:366;;;:::o;23077:419::-;23243:4;23281:2;23270:9;23266:18;23258:26;;23330:9;23324:4;23320:20;23316:1;23305:9;23301:17;23294:47;23358:131;23484:4;23358:131;:::i;:::-;23350:139;;23077:419;;;:::o;23502:180::-;23550:77;23547:1;23540:88;23647:4;23644:1;23637:15;23671:4;23668:1;23661:15;23688:191;23728:3;23747:20;23765:1;23747:20;:::i;:::-;23742:25;;23781:20;23799:1;23781:20;:::i;:::-;23776:25;;23824:1;23821;23817:9;23810:16;;23845:3;23842:1;23839:10;23836:36;;;23852:18;;:::i;:::-;23836:36;23688:191;;;;:::o;23885:332::-;24006:4;24044:2;24033:9;24029:18;24021:26;;24057:71;24125:1;24114:9;24110:17;24101:6;24057:71;:::i;:::-;24138:72;24206:2;24195:9;24191:18;24182:6;24138:72;:::i;:::-;23885:332;;;;;:::o;24223:228::-;24363:34;24359:1;24351:6;24347:14;24340:58;24432:11;24427:2;24419:6;24415:15;24408:36;24223:228;:::o;24457:366::-;24599:3;24620:67;24684:2;24679:3;24620:67;:::i;:::-;24613:74;;24696:93;24785:3;24696:93;:::i;:::-;24814:2;24809:3;24805:12;24798:19;;24457:366;;;:::o;24829:419::-;24995:4;25033:2;25022:9;25018:18;25010:26;;25082:9;25076:4;25072:20;25068:1;25057:9;25053:17;25046:47;25110:131;25236:4;25110:131;:::i;:::-;25102:139;;24829:419;;;:::o;25254:194::-;25294:4;25314:20;25332:1;25314:20;:::i;:::-;25309:25;;25348:20;25366:1;25348:20;:::i;:::-;25343:25;;25392:1;25389;25385:9;25377:17;;25416:1;25410:4;25407:11;25404:37;;;25421:18;;:::i;:::-;25404:37;25254:194;;;;:::o;25454:332::-;25575:4;25613:2;25602:9;25598:18;25590:26;;25626:71;25694:1;25683:9;25679:17;25670:6;25626:71;:::i;:::-;25707:72;25775:2;25764:9;25760:18;25751:6;25707:72;:::i;:::-;25454:332;;;;;:::o;25792:167::-;25932:19;25928:1;25920:6;25916:14;25909:43;25792:167;:::o;25965:366::-;26107:3;26128:67;26192:2;26187:3;26128:67;:::i;:::-;26121:74;;26204:93;26293:3;26204:93;:::i;:::-;26322:2;26317:3;26313:12;26306:19;;25965:366;;;:::o;26337:419::-;26503:4;26541:2;26530:9;26526:18;26518:26;;26590:9;26584:4;26580:20;26576:1;26565:9;26561:17;26554:47;26618:131;26744:4;26618:131;:::i;:::-;26610:139;;26337:419;;;:::o;26762:173::-;26902:25;26898:1;26890:6;26886:14;26879:49;26762:173;:::o;26941:366::-;27083:3;27104:67;27168:2;27163:3;27104:67;:::i;:::-;27097:74;;27180:93;27269:3;27180:93;:::i;:::-;27298:2;27293:3;27289:12;27282:19;;26941:366;;;:::o;27313:419::-;27479:4;27517:2;27506:9;27502:18;27494:26;;27566:9;27560:4;27556:20;27552:1;27541:9;27537:17;27530:47;27594:131;27720:4;27594:131;:::i;:::-;27586:139;;27313:419;;;:::o;27738:332::-;27859:4;27897:2;27886:9;27882:18;27874:26;;27910:71;27978:1;27967:9;27963:17;27954:6;27910:71;:::i;:::-;27991:72;28059:2;28048:9;28044:18;28035:6;27991:72;:::i;:::-;27738:332;;;;;:::o;28076:248::-;28216:34;28212:1;28204:6;28200:14;28193:58;28285:31;28280:2;28272:6;28268:15;28261:56;28076:248;:::o;28330:366::-;28472:3;28493:67;28557:2;28552:3;28493:67;:::i;:::-;28486:74;;28569:93;28658:3;28569:93;:::i;:::-;28687:2;28682:3;28678:12;28671:19;;28330:366;;;:::o;28702:419::-;28868:4;28906:2;28895:9;28891:18;28883:26;;28955:9;28949:4;28945:20;28941:1;28930:9;28926:17;28919:47;28983:131;29109:4;28983:131;:::i;:::-;28975:139;;28702:419;;;:::o;29127:289::-;29267:34;29263:1;29255:6;29251:14;29244:58;29336:34;29331:2;29323:6;29319:15;29312:59;29405:3;29400:2;29392:6;29388:15;29381:28;29127:289;:::o;29422:366::-;29564:3;29585:67;29649:2;29644:3;29585:67;:::i;:::-;29578:74;;29661:93;29750:3;29661:93;:::i;:::-;29779:2;29774:3;29770:12;29763:19;;29422:366;;;:::o;29794:419::-;29960:4;29998:2;29987:9;29983:18;29975:26;;30047:9;30041:4;30037:20;30033:1;30022:9;30018:17;30011:47;30075:131;30201:4;30075:131;:::i;:::-;30067:139;;29794:419;;;:::o;30219:180::-;30267:77;30264:1;30257:88;30364:4;30361:1;30354:15;30388:4;30385:1;30378:15;30405:181;30545:33;30541:1;30533:6;30529:14;30522:57;30405:181;:::o;30592:366::-;30734:3;30755:67;30819:2;30814:3;30755:67;:::i;:::-;30748:74;;30831:93;30920:3;30831:93;:::i;:::-;30949:2;30944:3;30940:12;30933:19;;30592:366;;;:::o;30964:419::-;31130:4;31168:2;31157:9;31153:18;31145:26;;31217:9;31211:4;31207:20;31203:1;31192:9;31188:17;31181:47;31245:131;31371:4;31245:131;:::i;:::-;31237:139;;30964:419;;;:::o;31389:166::-;31529:18;31525:1;31517:6;31513:14;31506:42;31389:166;:::o;31561:366::-;31703:3;31724:67;31788:2;31783:3;31724:67;:::i;:::-;31717:74;;31800:93;31889:3;31800:93;:::i;:::-;31918:2;31913:3;31909:12;31902:19;;31561:366;;;:::o;31933:419::-;32099:4;32137:2;32126:9;32122:18;32114:26;;32186:9;32180:4;32176:20;32172:1;32161:9;32157:17;32150:47;32214:131;32340:4;32214:131;:::i;:::-;32206:139;;31933:419;;;:::o

Swarm Source

ipfs://31eb55880420777ba0d4ec5a74ed9b287c5ebb7b45e2b1dcb9f184dde24b992f
[ 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.