S Price: $0.809041 (-5.65%)
    /

    Token

    Overview

    Max Total Supply

    345,550.882321093826886491

    Holders

    67

    Market

    Price

    $0.00 @ 0.000000 S

    Onchain Market Cap

    $0.00

    Circulating Supply Market Cap

    -

    Other Info

    Token Contract (WITH 18 Decimals)

    Balance
    0

    Value
    $0.00
    0x3021338c74f10cef1ece6404ac1498c2559f7a5c
    Loading...
    Loading
    Loading...
    Loading
    Loading...
    Loading

    Click here to update the token information / general information

    Contract Source Code Verified (Exact Match)

    Contract Name:
    Pair

    Compiler Version
    v0.8.28+commit.7893614a

    Optimization Enabled:
    Yes with 1633 runs

    Other Settings:
    cancun EvmVersion
    File 1 of 16 : Pair.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.26;
    import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
    import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
    import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
    import {IERC20Extended} from "./interfaces/IERC20Extended.sol";
    import {UQ112x112} from "./libraries/UQ112x112.sol";
    import {IPairCallee} from "./interfaces/IPairCallee.sol";
    import {IPairFactory} from "./interfaces/IPairFactory.sol";
    import {IPair} from "./interfaces/IPair.sol";
    contract Pair is IPair, ERC20, ReentrancyGuard {
    using UQ112x112 for uint224;
    /// @dev Structure to capture time period obervations every 30 minutes, used for local oracles
    struct Observation {
    uint256 timestamp;
    uint256 reserve0Cumulative;
    uint256 reserve1Cumulative;
    }
    Observation[] public observations;
    uint256 internal _unlocked;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 16 : ERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)
    pragma solidity ^0.8.20;
    import {IERC20} from "./IERC20.sol";
    import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
    import {Context} from "../../utils/Context.sol";
    import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Implementation of the {IERC20} interface.
    *
    * This implementation is agnostic to the way tokens are created. This means
    * that a supply mechanism has to be added in a derived contract using {_mint}.
    *
    * TIP: For a detailed writeup see our guide
    * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
    * to implement supply mechanisms].
    *
    * The default value of {decimals} is 18. To change this, you should override
    * this function so it returns a different value.
    *
    * We have followed general OpenZeppelin Contracts guidelines: functions revert
    * instead returning `false` on failure. This behavior is nonetheless
    * conventional and does not conflict with the expectations of ERC-20
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 16 : ReentrancyGuard.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Contract module that helps prevent reentrant calls to a function.
    *
    * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
    * available, which can be applied to functions to make sure there are no nested
    * (reentrant) calls to them.
    *
    * Note that because there is a single `nonReentrant` guard, functions marked as
    * `nonReentrant` may not call one another. This can be worked around by making
    * those functions `private`, and then adding `external` `nonReentrant` entry
    * points to them.
    *
    * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,
    * consider using {ReentrancyGuardTransient} instead.
    *
    * TIP: If you would like to learn more about reentrancy and alternative ways
    * to protect against it, check out our blog post
    * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
    */
    abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 16 : Math.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)
    pragma solidity ^0.8.20;
    import {Panic} from "../Panic.sol";
    import {SafeCast} from "./SafeCast.sol";
    /**
    * @dev Standard math utilities missing in the Solidity language.
    */
    library Math {
    enum Rounding {
    Floor, // Toward negative infinity
    Ceil, // Toward positive infinity
    Trunc, // Toward zero
    Expand // Away from zero
    }
    /**
    * @dev Returns the addition of two unsigned integers, with an success flag (no overflow).
    */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {
    unchecked {
    uint256 c = a + b;
    if (c < a) return (false, 0);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 16 : IERC20Extended.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.26;
    import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
    import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
    import {IERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol";
    interface IERC20Extended is IERC20, IERC20Metadata, IERC20Permit {
    function mint(address account, uint256 amount) external;
    function burn(uint256 amount) external;
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(
    address from,
    address to,
    uint256 value
    ) external returns (bool);
    function burnFrom(address account, uint256 value) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 16 : UQ112x112.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.26;
    // a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))
    // range: [0, 2**112 - 1]
    // resolution: 1 / 2**112
    library UQ112x112 {
    uint224 constant Q112 = 2 ** 112;
    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
    unchecked {
    z = uint224(y) * Q112; // never overflows
    }
    }
    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
    unchecked {
    z = x / uint224(y);
    }
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 16 : IPairCallee.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.26;
    interface IPairCallee {
    function hook(
    address sender,
    uint256 amount0,
    uint256 amount1,
    bytes calldata data
    ) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 16 : IPairFactory.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: GPL-2.0-or-later
    pragma solidity ^0.8.26;
    interface IPairFactory {
    error FEE_TOO_HIGH();
    error ZERO_FEE();
    /// @dev invalid assortment
    error IA();
    /// @dev zero address
    error ZA();
    /// @dev pair exists
    error PE();
    error NOT_AUTHORIZED();
    error INVALID_FEE_SPLIT();
    event PairCreated(
    address indexed token0,
    address indexed token1,
    address pair,
    uint256
    );
    event SetFee(uint256 indexed fee);
    event SetPairFee(address indexed pair, uint256 indexed fee);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 16 : IPair.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: GPL-2.0-or-later
    pragma solidity ^0.8.26;
    interface IPair {
    error NOT_AUTHORIZED();
    error UNSTABLE_RATIO();
    /// @dev safe transfer failed
    error STF();
    error OVERFLOW();
    /// @dev skim disabled
    error SD();
    /// @dev insufficient liquidity minted
    error ILM();
    /// @dev insufficient liquidity burned
    error ILB();
    /// @dev insufficient output amount
    error IOA();
    /// @dev insufficient input amount
    error IIA();
    error IL();
    error IT();
    error K();
    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
    address indexed sender,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 16 : IERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Interface of the ERC-20 standard as defined in the ERC.
    */
    interface IERC20 {
    /**
    * @dev Emitted when `value` tokens are moved from one account (`from`) to
    * another (`to`).
    *
    * Note that `value` may be zero.
    */
    event Transfer(address indexed from, address indexed to, uint256 value);
    /**
    * @dev Emitted when the allowance of a `spender` for an `owner` is set by
    * a call to {approve}. `value` is the new allowance.
    */
    event Approval(address indexed owner, address indexed spender, uint256 value);
    /**
    * @dev Returns the value of tokens in existence.
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 16 : IERC20Metadata.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
    pragma solidity ^0.8.20;
    import {IERC20} from "../IERC20.sol";
    /**
    * @dev Interface for the optional metadata functions from the ERC-20 standard.
    */
    interface IERC20Metadata is IERC20 {
    /**
    * @dev Returns the name of the token.
    */
    function name() external view returns (string memory);
    /**
    * @dev Returns the symbol of the token.
    */
    function symbol() external view returns (string memory);
    /**
    * @dev Returns the decimals places of the token.
    */
    function decimals() external view returns (uint8);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 16 : Context.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Provides information about the current execution context, including the
    * sender of the transaction and its data. While these are generally available
    * via msg.sender and msg.data, they should not be accessed in such a direct
    * manner, since when dealing with meta-transactions the account sending and
    * paying for execution may not be the actual sender (as far as an application
    * is concerned).
    *
    * This contract is only required for intermediate, library-like contracts.
    */
    abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
    return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
    return msg.data;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
    return 0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 16 : draft-IERC6093.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Standard ERC-20 Errors
    * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
    */
    interface IERC20Errors {
    /**
    * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param balance Current balance for the interacting account.
    * @param needed Minimum amount required to perform a transfer.
    */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
    error ERC20InvalidSender(address sender);
    /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 16 : Panic.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Helper library for emitting standardized panic codes.
    *
    * ```solidity
    * contract Example {
    * using Panic for uint256;
    *
    * // Use any of the declared internal constants
    * function foo() { Panic.GENERIC.panic(); }
    *
    * // Alternatively
    * function foo() { Panic.panic(Panic.GENERIC); }
    * }
    * ```
    *
    * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].
    *
    * _Available since v5.1._
    */
    // slither-disable-next-line unused-state
    library Panic {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 16 : SafeCast.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)
    // This file was procedurally generated from scripts/generate/templates/SafeCast.js.
    pragma solidity ^0.8.20;
    /**
    * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow
    * checks.
    *
    * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
    * easily result in undesired exploitation or bugs, since developers usually
    * assume that overflows raise errors. `SafeCast` restores this intuition by
    * reverting the transaction when such an operation overflows.
    *
    * Using this library instead of the unchecked operations eliminates an entire
    * class of bugs, so it's recommended to use it always.
    */
    library SafeCast {
    /**
    * @dev Value doesn't fit in an uint of `bits` size.
    */
    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);
    /**
    * @dev An int value doesn't fit in an uint of `bits` size.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 16 of 16 : IERC20Permit.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Permit.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Interface of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in
    * https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].
    *
    * Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by
    * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
    * need to send a transaction, and thus is not required to hold Ether at all.
    *
    * ==== Security Considerations
    *
    * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature
    * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be
    * considered as an intention to spend the allowance in any specific way. The second is that because permits have
    * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should
    * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be
    * generally recommended is:
    *
    * ```solidity
    * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
    * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}
    * doThing(..., value);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    {
    "remappings": [
    "@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/",
    "@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
    "@forge-std-1.9.4/=dependencies/forge-std-1.9.4/",
    "@layerzerolabs/=node_modules/@layerzerolabs/",
    "@layerzerolabs/lz-evm-protocol-v2/=node_modules/@layerzerolabs/lz-evm-protocol-v2/",
    "@openzeppelin-contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
    "@openzeppelin-contracts/contracts/=dependencies/@openzeppelin-contracts-5.1.0/",
    "@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/",
    "erc4626-tests/=dependencies/erc4626-property-tests-1.0/",
    "forge-std/=dependencies/forge-std-1.9.4/src/",
    "permit2/=lib/permit2/",
    "@openzeppelin-3.4.2/=node_modules/@openzeppelin-3.4.2/",
    "@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/",
    "@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
    "@uniswap/=node_modules/@uniswap/",
    "base64-sol/=node_modules/base64-sol/",
    "ds-test/=node_modules/ds-test/",
    "erc4626-property-tests-1.0/=dependencies/erc4626-property-tests-1.0/",
    "eth-gas-reporter/=node_modules/eth-gas-reporter/",
    "forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/",
    "hardhat/=node_modules/hardhat/",
    "solidity-bytes-utils/=node_modules/solidity-bytes-utils/",
    "solmate/=node_modules/solmate/"
    ],
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract Security Audit

    Contract ABI

    [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"IIA","type":"error"},{"inputs":[],"name":"IL","type":"error"},{"inputs":[],"name":"ILB","type":"error"},{"inputs":[],"name":"ILM","type":"error"},{"inputs":[],"name":"IOA","type":"error"},{"inputs":[],"name":"IT","type":"error"},{"inputs":[],"name":"K","type":"error"},{"inputs":[],"name":"NOT_AUTHORIZED","type":"error"},{"inputs":[],"name":"OVERFLOW","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"SD","type":"error"},{"inputs":[],"name":"STF","type":"error"},{"inputs":[],"name":"UNSTABLE_RATIO","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"current","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentCumulativePrices","outputs":[{"internalType":"uint256","name":"reserve0Cumulative","type":"uint256"},{"internalType":"uint256","name":"reserve1Cumulative","type":"uint256"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"bool","name":"_stable","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastObservation","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"reserve0Cumulative","type":"uint256"},{"internalType":"uint256","name":"reserve1Cumulative","type":"uint256"}],"internalType":"struct Pair.Observation","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadata","outputs":[{"internalType":"uint256","name":"_decimals0","type":"uint256"},{"internalType":"uint256","name":"_decimals1","type":"uint256"},{"internalType":"uint256","name":"_reserve0","type":"uint256"},{"internalType":"uint256","name":"_reserve1","type":"uint256"},{"internalType":"bool","name":"_stable","type":"bool"},{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"observationLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"reserve0Cumulative","type":"uint256"},{"internalType":"uint256","name":"reserve1Cumulative","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"prices","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"granularity","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"name":"sample","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeRecipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeSplit","type":"uint256"}],"name":"setFeeSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"","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":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

    60a0604052346102f9576100116102fd565b6100196102fd565b81516001600160401b03811161020c57600354600181811c911680156102ef575b60208210146101ee57601f811161028c575b50602092601f821160011461022b57928192935f92610220575b50508160011b915f199060031b1c1916176003555b80516001600160401b03811161020c57600454600181811c91168015610202575b60208210146101ee57601f811161018b575b50602091601f821160011461012b579181925f92610120575b50508160011b915f199060031b1c1916176004555b6001600555336080526040516135cb908161032082396080518181816103d30152818161046e01528181610d6f01528181610dcd01528181610e8b015261197a0152f35b015190505f806100c7565b601f1982169260045f52805f20915f5b8581106101735750836001951061015b575b505050811b016004556100dc565b01515f1960f88460031b161c191690555f808061014d565b9192602060018192868501518155019401920161013b565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810191602084106101e4575b601f0160051c01905b8181106101d957506100ae565b5f81556001016101cc565b90915081906101c3565b634e487b7160e01b5f52602260045260245ffd5b90607f169061009c565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610066565b601f1982169360035f52805f20915f5b868110610274575083600195961061025c575b505050811b0160035561007b565b01515f1960f88460031b161c191690555f808061024e565b9192602060018192868501518155019401920161023b565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106102e5575b601f0160051c01905b8181106102da575061004c565b5f81556001016102cd565b90915081906102c4565b90607f169061003a565b5f80fd5b60405190602082016001600160401b0381118382101761020c576040525f825256fe60806040526004361015610011575f80fd5b5f5f3560e01c8063022c0d9f146120a057806306fdde0314611ff95780630902f1ac14611f9b578063095ea7b314611ef25780630dfe168114611ecb57806313345fe114611d9057806313966db514611d3957806318160ddd14611d1b5780631df8c71714611ce257806322be3de114611cbf57806323b872dd14611bbe578063252c09d714611b65578063313ce56714611b49578063392f37e914611ad65780634690484014611aaf578063517b3f82146119ee5780635881c475146119c75780636373ea69146119a957806369fe0e2d1461195e5780636a627842146115fc57806370a08231146115c55780637464fc3d146115a757806389afcb44146111fe5780638a7b8cf2146111c757806395d89b41146110e85780639e8cc04b1461108e578063a9059cbb1461105c578063ba9a7a561461103f578063bc25cf7714610e2d578063bf944dbc14610e0f578063c245febc14610df1578063c45a015514610dad578063cd962a0614610d53578063d21220a714610d2c578063dd62ed3e14610cde578063ddca3f4314610cc0578063e4bbb5a814610432578063e74b981b146103af578063ebeb31db14610391578063f140a35a146103115763fff6cae9146101dd575f80fd5b3461030e578060031936011261030e576101f56129fb565b602460206001600160a01b0360085416604051928380926370a0823160e01b82523060048301525afa80156103035782906102d0575b6024915060206001600160a01b0360095416604051938480926370a0823160e01b82523060048301525afa9081156102c557839161028b575b6102839250600b54916001600160701b03808460701c16931691612bde565b600160055580f35b90506020823d6020116102bd575b816102a66020938361261c565b810103126102b957610283915190610264565b5f80fd5b3d9150610299565b6040513d85823e3d90fd5b506020813d6020116102fb575b816102ea6020938361261c565b810103126102b9576024905161022b565b3d91506102dd565b6040513d84823e3d90fd5b80fd5b503461030e57604036600319011261030e57610366600435610331612519565b90600b54916103616001600160701b03808560701c16941692620f424061035a6010548361263e565b0490612683565b612d5c565b5f1981019190821161037d57602082604051908152f35b80634e487b7160e01b602492526011600452fd5b503461030e578060031936011261030e576020600654604051908152f35b503461030e57602036600319011261030e576103c9612503565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610423576001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19600a541617600a5580f35b600482633d83866f60e01b8152fd5b503461030e57606036600319011261030e5761044c612503565b90610455612519565b9160443580151591828203610cbc576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610cad576001600160a01b03809116948573ffffffffffffffffffffffffffffffffffffffff19600854161760085516918273ffffffffffffffffffffffffffffffffffffffff19600954161760095560ff8019601354169116176013555f14610ac8576040516395d89b4160e01b81528281600481875afa9081156102c5578391610aae575b506040516395d89b4160e01b81528381600481865afa908115610aa3576105ae600160049460336020899681968891610a89575b506040519687947f4c656761637920436f7272656c617465642d2000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101603483015e010185838201520301601f19810183528261261c565b94604051928380926395d89b4160e01b82525afa9081156102c55783908192610a6c575b5060049192604051928380926395d89b4160e01b82525afa9081156102c557602092602584610668946001948891610a4a575b506040519687947f63414d4d2d000000000000000000000000000000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101602683015e010185838201520301601f19810183528261261c565b905b825167ffffffffffffffff811161090a57610686601454612690565b601f81116109a9575b506020601f82116001146109295782939482939261091e575b50508160011b915f199060031b1c1916176014555b815167ffffffffffffffff811161090a576106d9601554612690565b601f8111610869575b50602092601f82116001146107ea579282938293926107df575b50508160011b915f199060031b1c1916176015555b610734604051610720816125ec565b428152826020820152826040820152612968565b600460206001600160a01b03600854166040519283809263313ce56760e01b82525afa80156103035761076e9183916107b0575b506129ea565b601155600460206001600160a01b03600954166040519283809263313ce56760e01b82525afa8015610303576107aa9183916107b057506129ea565b60125580f35b6107d2915060203d6020116107d8575b6107ca818361261c565b8101906129d1565b5f610768565b503d6107c0565b015190505f806106fc565b60158352601f198216937f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47591845b8681106108515750836001959610610839575b505050811b01601555610711565b01515f1960f88460031b161c191690555f808061082b565b91926020600181928685015181550194019201610818565b60158352601f820160051c7f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750190602083106108e2575b601f0160051c7f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47501905b8181106108d757506106e2565b8381556001016108ca565b7f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47591506108a0565b602482634e487b7160e01b81526041600452fd5b015190505f806106a8565b601483527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec90601f198316845b81811061099157509583600195969710610979575b505050811b016014556106bd565b01515f1960f88460031b161c191690555f808061096b565b9192602060018192868b015181550194019201610956565b60148352601f820160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec019060208310610a22575b601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01905b818110610a17575061068f565b838155600101610a0a565b7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec91506109e0565b610a6691503d808a833e610a5e818361261c565b810190612905565b5f610605565b60049250610a83903d8084833e610a5e818361261c565b916105d2565b610a9d91503d808a833e610a5e818361261c565b5f61054b565b6040513d86823e3d90fd5b610ac291503d8085833e610a5e818361261c565b5f610517565b6040516395d89b4160e01b81528281600481875afa9081156102c5578391610c93575b506040516395d89b4160e01b81528381600481865afa908115610aa357610b82600160049460316020899681968891610c79575b506040519687947f4c656761637920566f6c6174696c652d20000000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101603283015e010185838201520301601f19810183528261261c565b94604051928380926395d89b4160e01b82525afa9081156102c55783908192610c5c575b5060049192604051928380926395d89b4160e01b82525afa9081156102c557602092602584610c3c946001948891610c42575b506040519687947f76414d4d2d000000000000000000000000000000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101602683015e010185838201520301601f19810183528261261c565b9061066a565b610c5691503d808a833e610a5e818361261c565b5f610bd9565b60049250610c73903d8084833e610a5e818361261c565b91610ba6565b610c8d91503d808a833e610a5e818361261c565b5f610b1f565b610ca791503d8085833e610a5e818361261c565b5f610aeb565b600484633d83866f60e01b8152fd5b8380fd5b503461030e578060031936011261030e576020601054604051908152f35b503461030e57604036600319011261030e576001600160a01b036040610d02612503565b9282610d0c612519565b9416815260016020522091165f52602052602060405f2054604051908152f35b503461030e578060031936011261030e5760206001600160a01b0360095416604051908152f35b503461030e57602036600319011261030e576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610d9e57600435600f5580f35b80633d83866f60e01b60049252fd5b503461030e578060031936011261030e5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461030e578060031936011261030e576020600d54604051908152f35b503461030e578060031936011261030e576020600c54604051908152f35b503461030e57602036600319011261030e57610e47612503565b610e4f6129fb565b6040517fd2b663840000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102c5578391611010575b5015610fe8576001600160a01b03600854166001600160a01b036009541690604051906370a0823160e01b8252306004830152602082602481845afa918215610fdd5784908693610fa5575b50610f21610f27936001600160701b03600b541690612683565b91612a34565b604051916370a0823160e01b8352306004840152602083602481855afa928315610aa3578493610f6f575b50610f21610283936001600160701b03600b5460701c1690612683565b92506020833d602011610f9d575b81610f8a6020938361261c565b810103126102b957915191610f21610f52565b3d9150610f7d565b9250506020823d602011610fd5575b81610fc16020938361261c565b810103126102b95790519083610f21610f07565b3d9150610fb4565b6040513d87823e3d90fd5b6004827f384002a2000000000000000000000000000000000000000000000000000000008152fd5b611032915060203d602011611038575b61102a818361261c565b8101906128d1565b5f610ebb565b503d611020565b503461030e578060031936011261030e5760206040516103e88152f35b503461030e57604036600319011261030e57611083611079612503565b60243590336130cc565b602060405160018152f35b503461030e576110aa6110a0366125c2565b9291908391612701565b825b81518410156110d4576110cc6001916110c586856126ed565b51906126e0565b9301926110ac565b6110e083602092612665565b604051908152f35b503461030e578060031936011261030e5760405190806004549061110b82612690565b80855291600181169081156111a05750600114611143575b61113f846111338186038261261c565b6040519182918261252f565b0390f35b600481527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106111865750909150810160200161113382611123565b91926001816020925483858801015201910190929161116d565b60ff191660208087019190915292151560051b850190920192506111339150839050611123565b503461030e578060031936011261030e5760606111e261289b565b6040805191805183526020810151602084015201516040820152f35b503461030e57602036600319011261030e57611218612503565b6112206129fb565b611245600b546001600160701b038116916001600160701b038260701c169160e01c90565b509290916001600160a01b0360085416916001600160a01b036009541694604051916370a0823160e01b8352306004840152602083602481885afa92831561159a578193611566575b50604051966370a0823160e01b8852306004890152602088602481845afa95861561030357879883989761152f575b50308352826020526112f96112ed6112ed6112f26112e08860408920549c612ee9565b986002549384918d61263e565b612665565b9a8a61263e565b9688151580611526575b156114fe5730156114eb573084528360205260408420548181106114d2579184826020936024969530845283865203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843092a36113758a8983612a34565b611380898985612a34565b604051938480926370a0823160e01b82523060048301525afa9182156102c557839261149d575b506020602491604051928380926370a0823160e01b82523060048301525afa9283156114915792611456575b50966113e29291604098612bde565b611433575b6001600160a01b0384519184835283602084015216907fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496853392a3600160055582519182526020820152f35b61144e600b546001600160701b03808260701c169116612b29565b600e556113e7565b929150966020833d602011611489575b816114736020938361261c565b810103126102b9579151919690919060406113d3565b3d9150611466565b604051903d90823e3d90fd5b9091506020813d6020116114ca575b816114b96020938361261c565b810103126102b957519060206113a7565b3d91506114ac565b63391434e360e21b855230600452602452604452606483fd5b602484634b637e8f60e11b815280600452fd5b6004847f42a0889c000000000000000000000000000000000000000000000000000000008152fd5b50871515611303565b965096506020863d60201161155e575b8161154c6020938361261c565b810103126102b957879551965f6112bd565b3d915061153f565b9092506020813d602011611592575b816115826020938361261c565b810103126102b95751915f61128e565b3d9150611575565b50604051903d90823e3d90fd5b503461030e578060031936011261030e576020600e54604051908152f35b503461030e57602036600319011261030e5760406020916001600160a01b036115ec612503565b1681528083522054604051908152f35b503461030e57602036600319011261030e57602490611619612503565b6116216129fb565b611646600b546001600160701b038116916001600160701b038260701c169160e01c90565b5093909160206001600160a01b0360085416604051938480926370a0823160e01b82523060048301525afa918215610aa3578492611929575b506024919260206001600160a01b0360095416604051948580926370a0823160e01b82523060048301525afa928315610fdd5785936118f5575b506001600160701b038116926116cf8486612683565b946001600160701b038816936116e58584612683565b95876116f18b87612ee9565b966002549283155f146118cb57505061171491508761170f9161263e565b6131a2565b6103e71981019081116118b757976117306103e861dead6134e7565b60ff601354166117e7575b88156117bf57509161175a93916117558960209b956132db565b612bde565b61179c575b604051918252838201527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f60403392a26001600555604051908152f35b6117b7600b546001600160701b03808260701c169116612b29565b600e5561175f565b807fad69186f0000000000000000000000000000000000000000000000000000000060049252fd5b633b9aca006117f6888a612b29565b106118a857670de0b6b3a76400008802888104670de0b6b3a764000014891517156118945760115461182791612665565b670de0b6b3a76400008802888104670de0b6b3a764000014891517156118805760125461185391612665565b1461173b57807fde5011e80000000000000000000000000000000000000000000000000000000060049252fd5b602483634e487b7160e01b81526011600452fd5b602482634e487b7160e01b81526011600452fd5b8063a932492f60e01b60049252fd5b602489634e487b7160e01b81526011600452fd5b6118df6112ed916112ed866118e69661263e565b938a61263e565b9081808210911802189761173b565b9092506020813d602011611921575b816119116020938361261c565b810103126102b95751915f6116b9565b3d9150611904565b91506020823d602011611956575b816119446020938361261c565b810103126102b957602491519161167f565b3d9150611937565b503461030e57602036600319011261030e576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610d9e5760043560105580f35b503461030e578060031936011261030e576020600f54604051908152f35b503461030e5761113f6119e26119dc366125c2565b91612701565b60405191829182612559565b503461030e57604036600319011261030e57611a08612503565b90611a1161289b565b90611a1a6127ed565b509183514214611a66575b60206110e08686611a5d6112ed6112ed896040611a548b611a47885142612683565b9586918c8a015190612683565b95015190612683565b91602435612d5c565b600654919350600119820191821161037d575091611a5d6112ed6112ed602096946040611a54611aa1611a9b6110e09a612592565b50612873565b985050509496505050611a25565b503461030e578060031936011261030e5760206001600160a01b03600a5416604051908152f35b503461030e578060031936011261030e5760e0601154601254600b5460ff601354166001600160701b036001600160a01b0360085416926001600160a01b0360095416946040519687526020870152818116604087015260701c1660608501521515608084015260a083015260c0820152f35b503461030e578060031936011261030e57602060405160128152f35b503461030e57602036600319011261030e57600435600654811015611bba57611b8d90612592565b50805461113f60026001840154930154604051938493846040919493926060820195825260208201520152565b5080fd5b503461030e57606036600319011261030e57611bd8612503565b611be0612519565b604435916001600160a01b0381168085526001602052604085206001600160a01b0333165f5260205260405f2054905f198203611c24575b505061108393506130cc565b848210611c8b578015611c78573315611c65578560409161108397526001602052206001600160a01b0333165f526020528360405f20910390555f80611c18565b602486634a1406b160e11b815280600452fd5b60248663e602df0560e01b815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b503461030e578060031936011261030e57602060ff601354166040519015158152f35b503461030e578060031936011261030e5761113f611cfe6127ed565b604080519384526020840192909252908201529081906060820190565b503461030e578060031936011261030e576020600254604051908152f35b503461030e578060031936011261030e57611d526129fb565b600b546001600160701b038082169160701c16611d6f8183612ee9565b611d7d575b82600160055580f35b611d8691612b29565b600e555f80611d74565b503461030e57608036600319011261030e57611daa612503565b9060643590604435602435611dbe826126c8565b94611dcc604051968761261c565b828652601f19611ddb846126c8565b013660208801376006545f19810193908411611eb757611e0186611e079296959661263e565b85612683565b925b848410611e1e576040518061113f8982612559565b856001611eb192611e9f611e3284896126e0565b611e97611e54611e4183612592565b5054611e4c8c612592565b505490612683565b6112ed8b6002611e7f81611e8e611e88876112ed8e611e728d612592565b5001548f611e7f8a612592565b50015490612683565b98612592565b50015492612592565b908789612d5c565b611ea9828c6126ed565b5201946126e0565b92611e09565b602485634e487b7160e01b81526011600452fd5b503461030e578060031936011261030e5760206001600160a01b0360085416604051908152f35b503461030e57604036600319011261030e57611f0c612503565b602435903315611f88576001600160a01b0316918215611f7557604090338152600160205220825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b80634a1406b160e11b6024925280600452fd5b60248363e602df0560e01b815280600452fd5b503461030e578060031936011261030e5760606001600160701b0363ffffffff611fe0600b546001600160701b038116916001600160701b038260701c169160e01c90565b9193908160405195168552166020840152166040820152f35b503461030e578060031936011261030e5760405190806003549061201c82612690565b80855291600181169081156111a057506001146120435761113f846111338186038261261c565b600381527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106120865750909150810160200161113382611123565b91926001816020925483858801015201910190929161206d565b50346102b95760803660031901126102b957604435906001600160a01b0382166024356004358285036102b95760643567ffffffffffffffff81116102b957366023820112156102b95780600401359067ffffffffffffffff82116102b95736602483830101116102b9576121136129fb565b821590811580926124fa575b156124d257612149600b546001600160701b038116916001600160701b038260701c169160e01c90565b509290916001600160701b03831694858710806124c0575b15612498576001600160a01b03600854169a6001600160a01b0360095416938c8b14158061248e575b156124665788828e92612455575b5050508880612444575b50508061239a575b505060206024979899604051988980926370a0823160e01b82523060048301525afa96871561235a578997612365575b506020602491604051928380926370a0823160e01b82523060048301525afa90811561235a578991612328575b5084840380881115612320578703965b6001600160701b0384169487860380841115612318578303955b891580159061230f575b156122e7576122849061227e8b612278620f424061227161226a82612263601054809761263e565b048a612683565b938d61263e565b0488612683565b90612b29565b92612b29565b116122d85790612295939291612bde565b6040519384526020840152604083015260608201527fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260803392a3600160055580f35b60048a63a932492f60e01b8152fd5b60048c7fba0b951e000000000000000000000000000000000000000000000000000000008152fd5b5086151561223b565b508a95612231565b508896612217565b90506020813d602011612352575b816123436020938361261c565b810103126102b957515f612207565b3d9150612336565b6040513d8b823e3d90fd5b9096506020813d602011612392575b816123816020938361261c565b810103126102b957519560206121da565b3d9150612374565b883b156102b9578760a488835f94602460405197889687957f9a7bff790000000000000000000000000000000000000000000000000000000087523360048801528387015260448601526080606486015282608486015201848401378181018301859052601f01601f19168101030181838c5af180156124395761241f575b806121aa565b60249798505f61242e9161261c565b60205f989750612419565b6040513d5f823e3d90fd5b61244e9185612a34565b5f886121a2565b61245e92612a34565b8b8882612198565b7fa8fa826d000000000000000000000000000000000000000000000000000000005f5260045ffd5b50848b141561218a565b7f083ff6a1000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160701b0385168810612161565b7fbfe3b102000000000000000000000000000000000000000000000000000000005f5260045ffd5b5084151561211f565b600435906001600160a01b03821682036102b957565b602435906001600160a01b03821682036102b957565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b81811061257c5750505090565b825184526020938401939092019160010161256f565b6006548110156125ae5760065f52600360205f20910201905f90565b634e487b7160e01b5f52603260045260245ffd5b60609060031901126102b9576004356001600160a01b03811681036102b957906024359060443590565b6060810190811067ffffffffffffffff82111761260857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761260857604052565b8181029291811591840414171561265157565b634e487b7160e01b5f52601160045260245ffd5b811561266f570490565b634e487b7160e01b5f52601260045260245ffd5b9190820391821161265157565b90600182811c921680156126be575b60208310146126aa57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161269f565b67ffffffffffffffff81116126085760051b60200190565b9190820180921161265157565b80518210156125ae5760209160051b010190565b61270a836126c8565b92612718604051948561261c565b808452601f19612727826126c8565b013660208601376006545f1981019190821161265157801581800460011417156126515761275790829492612683565b905f5b84831061276957505050505090565b6001830190818411612651576127cf826127c761279561278a600196612592565b5054611e4c89612592565b6112ed60026127b96127b3846112ed8d8c611e7f81611e8e8d612592565b95612592565b5001546002611e7f8b612592565b908786612d5c565b6127d982896126ed565b52019160018101809111612651579161275a565b4290600c5491600d549163ffffffff612821600b546001600160701b038116916001600160701b038260701c169160e01c90565b9092164263ffffffff16810361283657505050565b6001600160701b03612869612870959794986128636128639561285a859642612683565b9586911661263e565b906126e0565b971661263e565b91565b90604051612880816125ec565b60406002829480548452600181015460208501520154910152565b5f604080516128a9816125ec565b82815282602082015201526006545f19810190811161265157611a9b6128ce91612592565b90565b908160209103126102b9575180151581036102b95790565b67ffffffffffffffff811161260857601f01601f191660200190565b6020818303126102b95780519067ffffffffffffffff82116102b9570181601f820112156102b957805190612939826128e9565b92612947604051948561261c565b828452602083830101116102b957815f9260208093018386015e8301015290565b6006546801000000000000000081101561260857600181016006556006548110156125ae5760065f526003027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190604081600292518455602081015160018501550151910155565b908160209103126102b9575160ff811681036102b95790565b60ff16604d811161265157600a0a90565b600260055414612a0c576002600555565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b919091803b156102b9575f92838093604051906001600160a01b0360208301947fa9059cbb000000000000000000000000000000000000000000000000000000008652166024830152604482015260448152612a9160648261261c565b51925af13d15612b22573d612aa5816128e9565b90612ab3604051928361261c565b81523d5f602083013e5b81612af3575b5015612acb57565b7f817275ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b8051801592508215612b08575b50505f612ac3565b612b1b92506020809183010191016128d1565b5f80612b00565b6060612abd565b60135460ff1615612bd457670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561265157601154612b6191612665565b90670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561265157670de0b6b3a764000091612bca612ba0612bd09360125490612665565b84612bc381612bbb81612bb3868961263e565b04968061263e565b04928061263e565b04906126e0565b9061263e565b0490565b906128ce9161263e565b91926001600160701b0383111580612d4b575b15612d23576001600160701b0360409381927f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad196600b5460e01c918242039242141580612d18575b80612d0d575b612cef575b505050610708612c5c612c5561289b565b5142612683565b11612cc4575b1691827bffffffffffffffffffffffffffff00000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000004260e01b169260701b16171780600b55835192835260701c166020820152a1565b612cea600c54600d54875191612cd9836125ec565b428352602083015287820152612968565b612c62565b828580931602600c5401600c551602600d5401600d555f8080612c44565b508481161515612c3f565b508482161515612c39565b7f95a5c7f9000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160701b03821115612bf1565b9291909160ff601354165f14612ea557612d768183612b29565b91670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561265157612da56011548092612665565b92670de0b6b3a7640000830292808404670de0b6b3a7640000149015171561265157612dd46012548094612665565b946001600160a01b03806008541691161493845f14612ea057945b8415612e5d57670de0b6b3a7640000870296808804670de0b6b3a7640000149015171561265157612e4281612e4893612e3d612bd099612e3888670de0b6b3a76400009d612665565b6126e0565b6132f4565b90612683565b9215612e5557509061263e565b90509061263e565b670de0b6b3a7640000870296808804670de0b6b3a7640000149015171561265157612e4281612e4893612e3d612bd099612e3889670de0b6b3a76400009d612665565b612def565b9091926128ce936001600160a01b0380600854169116145f14612edc57612ed0612ed6925b8261263e565b926126e0565b90612665565b612ed0612ed69293612eca565b91906001600160a01b03600a541690600e549382151594855f146130a257600f549181612f19575b50505050505b565b60135460ff1615613016576001600160701b0380612f3b939495169116612b29565b90808211612f53575b505050505b5f80808080612f11565b612f7291612f6c612f6661170f936131a2565b916131a2565b9061341e565b670de0b6b3a76400000390670de0b6b3a7640000821161265157612f96828261263e565b91670de0b6b3a7640000830292808404670de0b6b3a7640000149015171561265157612fc19161263e565b69021e19e0c9bab2400000039069021e19e0c9bab2400000821161265157670de0b6b3a7640000916112ed612ff89260025461263e565b0480613006575b8080612f44565b61300f916132db565b5f80612fff565b61170f613033916001600160701b03806130399597169116612b29565b926131a2565b80831161304a575b50505050612f49565b61307c8161307761271061306e6130676112ed9661308599612683565b968761263e565b049485926126e0565b612683565b9160025461263e565b80613092575b8080613041565b61309b916132db565b5f8061308b565b925050506130ac57565b6130c7600b546001600160701b03808260701c169116612b29565b600e55565b6001600160a01b031690811561318f576001600160a01b031691821561316357815f525f60205260405f205481811061314a57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b60018111156128ce578060017001000000000000000000000000000000008310156132c5575b600482680100000000000000006132779410156132b8575b6401000000008110156132ab575b6201000081101561329e575b610100811015613292575b6010811015613286575b101561327e575b60030260011c6132268184612665565b0160011c6132348184612665565b0160011c6132428184612665565b0160011c6132508184612665565b0160011c61325e8184612665565b0160011c61326c8184612665565b0160011c8092612665565b8111900390565b60011b613216565b811c9160021b9161320f565b60081c91811b91613205565b60101c9160081b916131fa565b60201c9160101b916131ee565b60401c9160201b916131e0565b5050608081901c680100000000000000006131c8565b906001600160a01b0382161561316357612f17916134e7565b905f5b60ff81106133055750505090565b83613350670de0b6b3a76400006133328161332b8582613325828061263e565b0461263e565b048761263e565b04670de0b6b3a7640000612bc384826133258a82613325828061263e565b83808210156133da579061336391612683565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612651578161286361339892612ed660019589613554565b945b85818111156133c357906133ad91612683565b11156133bd576001905b016132f7565b50505090565b6133cc91612683565b11156133bd576001906133b7565b6133e391612683565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156126515781612e4261341892612ed660019589613554565b9461339a565b906ec097ce7bc90715b34b9f10000000008202905f196ec097ce7bc90715b34b9f10000000008409928280851094039380850394146134db57838211156134c3576ec097ce7bc90715b34b9f1000000000829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b50634e487b715f52156003026011186020526024601cfd5b50906128ce9250612665565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206001600160a01b035f93613520866002546126e0565b60025516938415841461353f5780600254036002555b604051908152a3565b84845283825260408420818154019055613536565b8060030260038104820361265157612bc3670de0b6b3a7640000613588819382613581886128ce9961263e565b049061263e565b049282613325828061263e56fea264697066735822122085f7e6129e4054acb7a9f7db9d22ada0f4dc074e356061eba1f6a8a7eee64eaf64736f6c634300081c0033

    Deployed Bytecode

    0x60806040526004361015610011575f80fd5b5f5f3560e01c8063022c0d9f146120a057806306fdde0314611ff95780630902f1ac14611f9b578063095ea7b314611ef25780630dfe168114611ecb57806313345fe114611d9057806313966db514611d3957806318160ddd14611d1b5780631df8c71714611ce257806322be3de114611cbf57806323b872dd14611bbe578063252c09d714611b65578063313ce56714611b49578063392f37e914611ad65780634690484014611aaf578063517b3f82146119ee5780635881c475146119c75780636373ea69146119a957806369fe0e2d1461195e5780636a627842146115fc57806370a08231146115c55780637464fc3d146115a757806389afcb44146111fe5780638a7b8cf2146111c757806395d89b41146110e85780639e8cc04b1461108e578063a9059cbb1461105c578063ba9a7a561461103f578063bc25cf7714610e2d578063bf944dbc14610e0f578063c245febc14610df1578063c45a015514610dad578063cd962a0614610d53578063d21220a714610d2c578063dd62ed3e14610cde578063ddca3f4314610cc0578063e4bbb5a814610432578063e74b981b146103af578063ebeb31db14610391578063f140a35a146103115763fff6cae9146101dd575f80fd5b3461030e578060031936011261030e576101f56129fb565b602460206001600160a01b0360085416604051928380926370a0823160e01b82523060048301525afa80156103035782906102d0575b6024915060206001600160a01b0360095416604051938480926370a0823160e01b82523060048301525afa9081156102c557839161028b575b6102839250600b54916001600160701b03808460701c16931691612bde565b600160055580f35b90506020823d6020116102bd575b816102a66020938361261c565b810103126102b957610283915190610264565b5f80fd5b3d9150610299565b6040513d85823e3d90fd5b506020813d6020116102fb575b816102ea6020938361261c565b810103126102b9576024905161022b565b3d91506102dd565b6040513d84823e3d90fd5b80fd5b503461030e57604036600319011261030e57610366600435610331612519565b90600b54916103616001600160701b03808560701c16941692620f424061035a6010548361263e565b0490612683565b612d5c565b5f1981019190821161037d57602082604051908152f35b80634e487b7160e01b602492526011600452fd5b503461030e578060031936011261030e576020600654604051908152f35b503461030e57602036600319011261030e576103c9612503565b6001600160a01b037f0000000000000000000000002da25e7446a70d7be65fd4c053948becaa6374c8163303610423576001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19600a541617600a5580f35b600482633d83866f60e01b8152fd5b503461030e57606036600319011261030e5761044c612503565b90610455612519565b9160443580151591828203610cbc576001600160a01b037f0000000000000000000000002da25e7446a70d7be65fd4c053948becaa6374c8163303610cad576001600160a01b03809116948573ffffffffffffffffffffffffffffffffffffffff19600854161760085516918273ffffffffffffffffffffffffffffffffffffffff19600954161760095560ff8019601354169116176013555f14610ac8576040516395d89b4160e01b81528281600481875afa9081156102c5578391610aae575b506040516395d89b4160e01b81528381600481865afa908115610aa3576105ae600160049460336020899681968891610a89575b506040519687947f4c656761637920436f7272656c617465642d2000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101603483015e010185838201520301601f19810183528261261c565b94604051928380926395d89b4160e01b82525afa9081156102c55783908192610a6c575b5060049192604051928380926395d89b4160e01b82525afa9081156102c557602092602584610668946001948891610a4a575b506040519687947f63414d4d2d000000000000000000000000000000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101602683015e010185838201520301601f19810183528261261c565b905b825167ffffffffffffffff811161090a57610686601454612690565b601f81116109a9575b506020601f82116001146109295782939482939261091e575b50508160011b915f199060031b1c1916176014555b815167ffffffffffffffff811161090a576106d9601554612690565b601f8111610869575b50602092601f82116001146107ea579282938293926107df575b50508160011b915f199060031b1c1916176015555b610734604051610720816125ec565b428152826020820152826040820152612968565b600460206001600160a01b03600854166040519283809263313ce56760e01b82525afa80156103035761076e9183916107b0575b506129ea565b601155600460206001600160a01b03600954166040519283809263313ce56760e01b82525afa8015610303576107aa9183916107b057506129ea565b60125580f35b6107d2915060203d6020116107d8575b6107ca818361261c565b8101906129d1565b5f610768565b503d6107c0565b015190505f806106fc565b60158352601f198216937f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47591845b8681106108515750836001959610610839575b505050811b01601555610711565b01515f1960f88460031b161c191690555f808061082b565b91926020600181928685015181550194019201610818565b60158352601f820160051c7f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750190602083106108e2575b601f0160051c7f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47501905b8181106108d757506106e2565b8381556001016108ca565b7f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47591506108a0565b602482634e487b7160e01b81526041600452fd5b015190505f806106a8565b601483527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec90601f198316845b81811061099157509583600195969710610979575b505050811b016014556106bd565b01515f1960f88460031b161c191690555f808061096b565b9192602060018192868b015181550194019201610956565b60148352601f820160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec019060208310610a22575b601f0160051c7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01905b818110610a17575061068f565b838155600101610a0a565b7fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec91506109e0565b610a6691503d808a833e610a5e818361261c565b810190612905565b5f610605565b60049250610a83903d8084833e610a5e818361261c565b916105d2565b610a9d91503d808a833e610a5e818361261c565b5f61054b565b6040513d86823e3d90fd5b610ac291503d8085833e610a5e818361261c565b5f610517565b6040516395d89b4160e01b81528281600481875afa9081156102c5578391610c93575b506040516395d89b4160e01b81528381600481865afa908115610aa357610b82600160049460316020899681968891610c79575b506040519687947f4c656761637920566f6c6174696c652d20000000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101603283015e010185838201520301601f19810183528261261c565b94604051928380926395d89b4160e01b82525afa9081156102c55783908192610c5c575b5060049192604051928380926395d89b4160e01b82525afa9081156102c557602092602584610c3c946001948891610c42575b506040519687947f76414d4d2d000000000000000000000000000000000000000000000000000000828701528051918291018587015e840190602f60f81b84830152805192839101602683015e010185838201520301601f19810183528261261c565b9061066a565b610c5691503d808a833e610a5e818361261c565b5f610bd9565b60049250610c73903d8084833e610a5e818361261c565b91610ba6565b610c8d91503d808a833e610a5e818361261c565b5f610b1f565b610ca791503d8085833e610a5e818361261c565b5f610aeb565b600484633d83866f60e01b8152fd5b8380fd5b503461030e578060031936011261030e576020601054604051908152f35b503461030e57604036600319011261030e576001600160a01b036040610d02612503565b9282610d0c612519565b9416815260016020522091165f52602052602060405f2054604051908152f35b503461030e578060031936011261030e5760206001600160a01b0360095416604051908152f35b503461030e57602036600319011261030e576001600160a01b037f0000000000000000000000002da25e7446a70d7be65fd4c053948becaa6374c8163303610d9e57600435600f5580f35b80633d83866f60e01b60049252fd5b503461030e578060031936011261030e5760206040516001600160a01b037f0000000000000000000000002da25e7446a70d7be65fd4c053948becaa6374c8168152f35b503461030e578060031936011261030e576020600d54604051908152f35b503461030e578060031936011261030e576020600c54604051908152f35b503461030e57602036600319011261030e57610e47612503565b610e4f6129fb565b6040517fd2b663840000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000002da25e7446a70d7be65fd4c053948becaa6374c8165afa9081156102c5578391611010575b5015610fe8576001600160a01b03600854166001600160a01b036009541690604051906370a0823160e01b8252306004830152602082602481845afa918215610fdd5784908693610fa5575b50610f21610f27936001600160701b03600b541690612683565b91612a34565b604051916370a0823160e01b8352306004840152602083602481855afa928315610aa3578493610f6f575b50610f21610283936001600160701b03600b5460701c1690612683565b92506020833d602011610f9d575b81610f8a6020938361261c565b810103126102b957915191610f21610f52565b3d9150610f7d565b9250506020823d602011610fd5575b81610fc16020938361261c565b810103126102b95790519083610f21610f07565b3d9150610fb4565b6040513d87823e3d90fd5b6004827f384002a2000000000000000000000000000000000000000000000000000000008152fd5b611032915060203d602011611038575b61102a818361261c565b8101906128d1565b5f610ebb565b503d611020565b503461030e578060031936011261030e5760206040516103e88152f35b503461030e57604036600319011261030e57611083611079612503565b60243590336130cc565b602060405160018152f35b503461030e576110aa6110a0366125c2565b9291908391612701565b825b81518410156110d4576110cc6001916110c586856126ed565b51906126e0565b9301926110ac565b6110e083602092612665565b604051908152f35b503461030e578060031936011261030e5760405190806004549061110b82612690565b80855291600181169081156111a05750600114611143575b61113f846111338186038261261c565b6040519182918261252f565b0390f35b600481527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106111865750909150810160200161113382611123565b91926001816020925483858801015201910190929161116d565b60ff191660208087019190915292151560051b850190920192506111339150839050611123565b503461030e578060031936011261030e5760606111e261289b565b6040805191805183526020810151602084015201516040820152f35b503461030e57602036600319011261030e57611218612503565b6112206129fb565b611245600b546001600160701b038116916001600160701b038260701c169160e01c90565b509290916001600160a01b0360085416916001600160a01b036009541694604051916370a0823160e01b8352306004840152602083602481885afa92831561159a578193611566575b50604051966370a0823160e01b8852306004890152602088602481845afa95861561030357879883989761152f575b50308352826020526112f96112ed6112ed6112f26112e08860408920549c612ee9565b986002549384918d61263e565b612665565b9a8a61263e565b9688151580611526575b156114fe5730156114eb573084528360205260408420548181106114d2579184826020936024969530845283865203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843092a36113758a8983612a34565b611380898985612a34565b604051938480926370a0823160e01b82523060048301525afa9182156102c557839261149d575b506020602491604051928380926370a0823160e01b82523060048301525afa9283156114915792611456575b50966113e29291604098612bde565b611433575b6001600160a01b0384519184835283602084015216907fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496853392a3600160055582519182526020820152f35b61144e600b546001600160701b03808260701c169116612b29565b600e556113e7565b929150966020833d602011611489575b816114736020938361261c565b810103126102b9579151919690919060406113d3565b3d9150611466565b604051903d90823e3d90fd5b9091506020813d6020116114ca575b816114b96020938361261c565b810103126102b957519060206113a7565b3d91506114ac565b63391434e360e21b855230600452602452604452606483fd5b602484634b637e8f60e11b815280600452fd5b6004847f42a0889c000000000000000000000000000000000000000000000000000000008152fd5b50871515611303565b965096506020863d60201161155e575b8161154c6020938361261c565b810103126102b957879551965f6112bd565b3d915061153f565b9092506020813d602011611592575b816115826020938361261c565b810103126102b95751915f61128e565b3d9150611575565b50604051903d90823e3d90fd5b503461030e578060031936011261030e576020600e54604051908152f35b503461030e57602036600319011261030e5760406020916001600160a01b036115ec612503565b1681528083522054604051908152f35b503461030e57602036600319011261030e57602490611619612503565b6116216129fb565b611646600b546001600160701b038116916001600160701b038260701c169160e01c90565b5093909160206001600160a01b0360085416604051938480926370a0823160e01b82523060048301525afa918215610aa3578492611929575b506024919260206001600160a01b0360095416604051948580926370a0823160e01b82523060048301525afa928315610fdd5785936118f5575b506001600160701b038116926116cf8486612683565b946001600160701b038816936116e58584612683565b95876116f18b87612ee9565b966002549283155f146118cb57505061171491508761170f9161263e565b6131a2565b6103e71981019081116118b757976117306103e861dead6134e7565b60ff601354166117e7575b88156117bf57509161175a93916117558960209b956132db565b612bde565b61179c575b604051918252838201527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f60403392a26001600555604051908152f35b6117b7600b546001600160701b03808260701c169116612b29565b600e5561175f565b807fad69186f0000000000000000000000000000000000000000000000000000000060049252fd5b633b9aca006117f6888a612b29565b106118a857670de0b6b3a76400008802888104670de0b6b3a764000014891517156118945760115461182791612665565b670de0b6b3a76400008802888104670de0b6b3a764000014891517156118805760125461185391612665565b1461173b57807fde5011e80000000000000000000000000000000000000000000000000000000060049252fd5b602483634e487b7160e01b81526011600452fd5b602482634e487b7160e01b81526011600452fd5b8063a932492f60e01b60049252fd5b602489634e487b7160e01b81526011600452fd5b6118df6112ed916112ed866118e69661263e565b938a61263e565b9081808210911802189761173b565b9092506020813d602011611921575b816119116020938361261c565b810103126102b95751915f6116b9565b3d9150611904565b91506020823d602011611956575b816119446020938361261c565b810103126102b957602491519161167f565b3d9150611937565b503461030e57602036600319011261030e576001600160a01b037f0000000000000000000000002da25e7446a70d7be65fd4c053948becaa6374c8163303610d9e5760043560105580f35b503461030e578060031936011261030e576020600f54604051908152f35b503461030e5761113f6119e26119dc366125c2565b91612701565b60405191829182612559565b503461030e57604036600319011261030e57611a08612503565b90611a1161289b565b90611a1a6127ed565b509183514214611a66575b60206110e08686611a5d6112ed6112ed896040611a548b611a47885142612683565b9586918c8a015190612683565b95015190612683565b91602435612d5c565b600654919350600119820191821161037d575091611a5d6112ed6112ed602096946040611a54611aa1611a9b6110e09a612592565b50612873565b985050509496505050611a25565b503461030e578060031936011261030e5760206001600160a01b03600a5416604051908152f35b503461030e578060031936011261030e5760e0601154601254600b5460ff601354166001600160701b036001600160a01b0360085416926001600160a01b0360095416946040519687526020870152818116604087015260701c1660608501521515608084015260a083015260c0820152f35b503461030e578060031936011261030e57602060405160128152f35b503461030e57602036600319011261030e57600435600654811015611bba57611b8d90612592565b50805461113f60026001840154930154604051938493846040919493926060820195825260208201520152565b5080fd5b503461030e57606036600319011261030e57611bd8612503565b611be0612519565b604435916001600160a01b0381168085526001602052604085206001600160a01b0333165f5260205260405f2054905f198203611c24575b505061108393506130cc565b848210611c8b578015611c78573315611c65578560409161108397526001602052206001600160a01b0333165f526020528360405f20910390555f80611c18565b602486634a1406b160e11b815280600452fd5b60248663e602df0560e01b815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b503461030e578060031936011261030e57602060ff601354166040519015158152f35b503461030e578060031936011261030e5761113f611cfe6127ed565b604080519384526020840192909252908201529081906060820190565b503461030e578060031936011261030e576020600254604051908152f35b503461030e578060031936011261030e57611d526129fb565b600b546001600160701b038082169160701c16611d6f8183612ee9565b611d7d575b82600160055580f35b611d8691612b29565b600e555f80611d74565b503461030e57608036600319011261030e57611daa612503565b9060643590604435602435611dbe826126c8565b94611dcc604051968761261c565b828652601f19611ddb846126c8565b013660208801376006545f19810193908411611eb757611e0186611e079296959661263e565b85612683565b925b848410611e1e576040518061113f8982612559565b856001611eb192611e9f611e3284896126e0565b611e97611e54611e4183612592565b5054611e4c8c612592565b505490612683565b6112ed8b6002611e7f81611e8e611e88876112ed8e611e728d612592565b5001548f611e7f8a612592565b50015490612683565b98612592565b50015492612592565b908789612d5c565b611ea9828c6126ed565b5201946126e0565b92611e09565b602485634e487b7160e01b81526011600452fd5b503461030e578060031936011261030e5760206001600160a01b0360085416604051908152f35b503461030e57604036600319011261030e57611f0c612503565b602435903315611f88576001600160a01b0316918215611f7557604090338152600160205220825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b80634a1406b160e11b6024925280600452fd5b60248363e602df0560e01b815280600452fd5b503461030e578060031936011261030e5760606001600160701b0363ffffffff611fe0600b546001600160701b038116916001600160701b038260701c169160e01c90565b9193908160405195168552166020840152166040820152f35b503461030e578060031936011261030e5760405190806003549061201c82612690565b80855291600181169081156111a057506001146120435761113f846111338186038261261c565b600381527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106120865750909150810160200161113382611123565b91926001816020925483858801015201910190929161206d565b50346102b95760803660031901126102b957604435906001600160a01b0382166024356004358285036102b95760643567ffffffffffffffff81116102b957366023820112156102b95780600401359067ffffffffffffffff82116102b95736602483830101116102b9576121136129fb565b821590811580926124fa575b156124d257612149600b546001600160701b038116916001600160701b038260701c169160e01c90565b509290916001600160701b03831694858710806124c0575b15612498576001600160a01b03600854169a6001600160a01b0360095416938c8b14158061248e575b156124665788828e92612455575b5050508880612444575b50508061239a575b505060206024979899604051988980926370a0823160e01b82523060048301525afa96871561235a578997612365575b506020602491604051928380926370a0823160e01b82523060048301525afa90811561235a578991612328575b5084840380881115612320578703965b6001600160701b0384169487860380841115612318578303955b891580159061230f575b156122e7576122849061227e8b612278620f424061227161226a82612263601054809761263e565b048a612683565b938d61263e565b0488612683565b90612b29565b92612b29565b116122d85790612295939291612bde565b6040519384526020840152604083015260608201527fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260803392a3600160055580f35b60048a63a932492f60e01b8152fd5b60048c7fba0b951e000000000000000000000000000000000000000000000000000000008152fd5b5086151561223b565b508a95612231565b508896612217565b90506020813d602011612352575b816123436020938361261c565b810103126102b957515f612207565b3d9150612336565b6040513d8b823e3d90fd5b9096506020813d602011612392575b816123816020938361261c565b810103126102b957519560206121da565b3d9150612374565b883b156102b9578760a488835f94602460405197889687957f9a7bff790000000000000000000000000000000000000000000000000000000087523360048801528387015260448601526080606486015282608486015201848401378181018301859052601f01601f19168101030181838c5af180156124395761241f575b806121aa565b60249798505f61242e9161261c565b60205f989750612419565b6040513d5f823e3d90fd5b61244e9185612a34565b5f886121a2565b61245e92612a34565b8b8882612198565b7fa8fa826d000000000000000000000000000000000000000000000000000000005f5260045ffd5b50848b141561218a565b7f083ff6a1000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160701b0385168810612161565b7fbfe3b102000000000000000000000000000000000000000000000000000000005f5260045ffd5b5084151561211f565b600435906001600160a01b03821682036102b957565b602435906001600160a01b03821682036102b957565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b81811061257c5750505090565b825184526020938401939092019160010161256f565b6006548110156125ae5760065f52600360205f20910201905f90565b634e487b7160e01b5f52603260045260245ffd5b60609060031901126102b9576004356001600160a01b03811681036102b957906024359060443590565b6060810190811067ffffffffffffffff82111761260857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761260857604052565b8181029291811591840414171561265157565b634e487b7160e01b5f52601160045260245ffd5b811561266f570490565b634e487b7160e01b5f52601260045260245ffd5b9190820391821161265157565b90600182811c921680156126be575b60208310146126aa57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161269f565b67ffffffffffffffff81116126085760051b60200190565b9190820180921161265157565b80518210156125ae5760209160051b010190565b61270a836126c8565b92612718604051948561261c565b808452601f19612727826126c8565b013660208601376006545f1981019190821161265157801581800460011417156126515761275790829492612683565b905f5b84831061276957505050505090565b6001830190818411612651576127cf826127c761279561278a600196612592565b5054611e4c89612592565b6112ed60026127b96127b3846112ed8d8c611e7f81611e8e8d612592565b95612592565b5001546002611e7f8b612592565b908786612d5c565b6127d982896126ed565b52019160018101809111612651579161275a565b4290600c5491600d549163ffffffff612821600b546001600160701b038116916001600160701b038260701c169160e01c90565b9092164263ffffffff16810361283657505050565b6001600160701b03612869612870959794986128636128639561285a859642612683565b9586911661263e565b906126e0565b971661263e565b91565b90604051612880816125ec565b60406002829480548452600181015460208501520154910152565b5f604080516128a9816125ec565b82815282602082015201526006545f19810190811161265157611a9b6128ce91612592565b90565b908160209103126102b9575180151581036102b95790565b67ffffffffffffffff811161260857601f01601f191660200190565b6020818303126102b95780519067ffffffffffffffff82116102b9570181601f820112156102b957805190612939826128e9565b92612947604051948561261c565b828452602083830101116102b957815f9260208093018386015e8301015290565b6006546801000000000000000081101561260857600181016006556006548110156125ae5760065f526003027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190604081600292518455602081015160018501550151910155565b908160209103126102b9575160ff811681036102b95790565b60ff16604d811161265157600a0a90565b600260055414612a0c576002600555565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b919091803b156102b9575f92838093604051906001600160a01b0360208301947fa9059cbb000000000000000000000000000000000000000000000000000000008652166024830152604482015260448152612a9160648261261c565b51925af13d15612b22573d612aa5816128e9565b90612ab3604051928361261c565b81523d5f602083013e5b81612af3575b5015612acb57565b7f817275ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b8051801592508215612b08575b50505f612ac3565b612b1b92506020809183010191016128d1565b5f80612b00565b6060612abd565b60135460ff1615612bd457670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561265157601154612b6191612665565b90670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561265157670de0b6b3a764000091612bca612ba0612bd09360125490612665565b84612bc381612bbb81612bb3868961263e565b04968061263e565b04928061263e565b04906126e0565b9061263e565b0490565b906128ce9161263e565b91926001600160701b0383111580612d4b575b15612d23576001600160701b0360409381927f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad196600b5460e01c918242039242141580612d18575b80612d0d575b612cef575b505050610708612c5c612c5561289b565b5142612683565b11612cc4575b1691827bffffffffffffffffffffffffffff00000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000004260e01b169260701b16171780600b55835192835260701c166020820152a1565b612cea600c54600d54875191612cd9836125ec565b428352602083015287820152612968565b612c62565b828580931602600c5401600c551602600d5401600d555f8080612c44565b508481161515612c3f565b508482161515612c39565b7f95a5c7f9000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160701b03821115612bf1565b9291909160ff601354165f14612ea557612d768183612b29565b91670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561265157612da56011548092612665565b92670de0b6b3a7640000830292808404670de0b6b3a7640000149015171561265157612dd46012548094612665565b946001600160a01b03806008541691161493845f14612ea057945b8415612e5d57670de0b6b3a7640000870296808804670de0b6b3a7640000149015171561265157612e4281612e4893612e3d612bd099612e3888670de0b6b3a76400009d612665565b6126e0565b6132f4565b90612683565b9215612e5557509061263e565b90509061263e565b670de0b6b3a7640000870296808804670de0b6b3a7640000149015171561265157612e4281612e4893612e3d612bd099612e3889670de0b6b3a76400009d612665565b612def565b9091926128ce936001600160a01b0380600854169116145f14612edc57612ed0612ed6925b8261263e565b926126e0565b90612665565b612ed0612ed69293612eca565b91906001600160a01b03600a541690600e549382151594855f146130a257600f549181612f19575b50505050505b565b60135460ff1615613016576001600160701b0380612f3b939495169116612b29565b90808211612f53575b505050505b5f80808080612f11565b612f7291612f6c612f6661170f936131a2565b916131a2565b9061341e565b670de0b6b3a76400000390670de0b6b3a7640000821161265157612f96828261263e565b91670de0b6b3a7640000830292808404670de0b6b3a7640000149015171561265157612fc19161263e565b69021e19e0c9bab2400000039069021e19e0c9bab2400000821161265157670de0b6b3a7640000916112ed612ff89260025461263e565b0480613006575b8080612f44565b61300f916132db565b5f80612fff565b61170f613033916001600160701b03806130399597169116612b29565b926131a2565b80831161304a575b50505050612f49565b61307c8161307761271061306e6130676112ed9661308599612683565b968761263e565b049485926126e0565b612683565b9160025461263e565b80613092575b8080613041565b61309b916132db565b5f8061308b565b925050506130ac57565b6130c7600b546001600160701b03808260701c169116612b29565b600e55565b6001600160a01b031690811561318f576001600160a01b031691821561316357815f525f60205260405f205481811061314a57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b634b637e8f60e11b5f525f60045260245ffd5b60018111156128ce578060017001000000000000000000000000000000008310156132c5575b600482680100000000000000006132779410156132b8575b6401000000008110156132ab575b6201000081101561329e575b610100811015613292575b6010811015613286575b101561327e575b60030260011c6132268184612665565b0160011c6132348184612665565b0160011c6132428184612665565b0160011c6132508184612665565b0160011c61325e8184612665565b0160011c61326c8184612665565b0160011c8092612665565b8111900390565b60011b613216565b811c9160021b9161320f565b60081c91811b91613205565b60101c9160081b916131fa565b60201c9160101b916131ee565b60401c9160201b916131e0565b5050608081901c680100000000000000006131c8565b906001600160a01b0382161561316357612f17916134e7565b905f5b60ff81106133055750505090565b83613350670de0b6b3a76400006133328161332b8582613325828061263e565b0461263e565b048761263e565b04670de0b6b3a7640000612bc384826133258a82613325828061263e565b83808210156133da579061336391612683565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612651578161286361339892612ed660019589613554565b945b85818111156133c357906133ad91612683565b11156133bd576001905b016132f7565b50505090565b6133cc91612683565b11156133bd576001906133b7565b6133e391612683565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156126515781612e4261341892612ed660019589613554565b9461339a565b906ec097ce7bc90715b34b9f10000000008202905f196ec097ce7bc90715b34b9f10000000008409928280851094039380850394146134db57838211156134c3576ec097ce7bc90715b34b9f1000000000829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b50634e487b715f52156003026011186020526024601cfd5b50906128ce9250612665565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206001600160a01b035f93613520866002546126e0565b60025516938415841461353f5780600254036002555b604051908152a3565b84845283825260408420818154019055613536565b8060030260038104820361265157612bc3670de0b6b3a7640000613588819382613581886128ce9961263e565b049061263e565b049282613325828061263e56fea264697066735822122085f7e6129e4054acb7a9f7db9d22ada0f4dc074e356061eba1f6a8a7eee64eaf64736f6c634300081c0033

    [ 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.