ERC-721
Overview
Max Total Supply
0 SAB-V2-LOCKUP-LIN
Holders
2
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Balance
2 SAB-V2-LOCKUP-LINLoading...
Loading
Loading...
Loading
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
SablierV2LockupLinear
Compiler Version
v0.8.26+commit.8a97fa7a
ZkSolc Version
v1.5.1
Optimization Enabled:
Yes with Mode z
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity >=0.8.22;import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";import { UD60x18, ud } from "@prb/math/src/UD60x18.sol";import { SablierV2Lockup } from "./abstracts/SablierV2Lockup.sol";import { SablierV2Lockup } from "./abstracts/SablierV2Lockup.sol";import { ISablierV2LockupLinear } from "./interfaces/ISablierV2LockupLinear.sol";import { ISablierV2NFTDescriptor } from "./interfaces/ISablierV2NFTDescriptor.sol";import { Helpers } from "./libraries/Helpers.sol";import { Lockup, LockupLinear } from "./types/DataTypes.sol";/*███████╗ █████╗ ██████╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██████╗██╔════╝██╔══██╗██╔══██╗██║ ██║██╔════╝██╔══██╗ ██║ ██║╚════██╗███████╗███████║██████╔╝██║ ██║█████╗ ██████╔╝ ██║ ██║ █████╔╝╚════██║██╔══██║██╔══██╗██║ ██║██╔══╝ ██╔══██╗ ╚██╗ ██╔╝██╔═══╝███████║██║ ██║██████╔╝███████╗██║███████╗██║ ██║ ╚████╔╝ ███████╗╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝██╗ ██████╗ ██████╗██╗ ██╗██╗ ██╗██████╗ ██╗ ██╗███╗ ██╗███████╗ █████╗ ██████╗██║ ██╔═══██╗██╔════╝██║ ██╔╝██║ ██║██╔══██╗ ██║ ██║████╗ ██║██╔════╝██╔══██╗██╔══██╗
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity >=0.8.22;import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";import { UD60x18 } from "@prb/math/src/UD60x18.sol";import { ISablierLockupRecipient } from "../interfaces/ISablierLockupRecipient.sol";import { ISablierV2Lockup } from "../interfaces/ISablierV2Lockup.sol";import { ISablierV2NFTDescriptor } from "../interfaces/ISablierV2NFTDescriptor.sol";import { Errors } from "../libraries/Errors.sol";import { Lockup } from "../types/DataTypes.sol";import { Adminable } from "./Adminable.sol";import { NoDelegateCall } from "./NoDelegateCall.sol";/// @title SablierV2Lockup/// @notice See the documentation in {ISablierV2Lockup}.abstract contract SablierV2Lockup isNoDelegateCall, // 0 inherited componentsAdminable, // 1 inherited componentsISablierV2Lockup, // 7 inherited componentsERC721 // 6 inherited components{
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";/// @title ISablierV2NFTDescriptor/// @notice This contract generates the URI describing the Sablier V2 stream NFTs./// @dev Inspired by Uniswap V3 Positions NFTs.interface ISablierV2NFTDescriptor {/// @notice Produces the URI describing a particular stream NFT./// @dev This is a data URI with the JSON contents directly inlined./// @param sablier The address of the Sablier contract the stream was created in./// @param streamId The ID of the stream for which to produce a description./// @return uri The URI of the ERC721-compliant metadata.function tokenURI(IERC721Metadata sablier, uint256 streamId) external view returns (string memory uri);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity >=0.8.22;import { UD60x18, ud } from "@prb/math/src/UD60x18.sol";import { Lockup, LockupDynamic, LockupLinear, LockupTranched } from "../types/DataTypes.sol";import { Errors } from "./Errors.sol";/// @title Helpers/// @notice Library with helper functions needed across the Sablier V2 contracts.library Helpers {/*//////////////////////////////////////////////////////////////////////////INTERNAL CONSTANT FUNCTIONS//////////////////////////////////////////////////////////////////////////*//// @dev Calculate the timestamps and return the segments.function calculateSegmentTimestamps(LockupDynamic.SegmentWithDuration[] memory segments)internalviewreturns (LockupDynamic.Segment[] memory segmentsWithTimestamps){uint256 segmentCount = segments.length;segmentsWithTimestamps = new LockupDynamic.Segment[](segmentCount);// Make the block timestamp the stream's start time.uint40 startTime = uint40(block.timestamp);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import { Lockup, LockupLinear } from "../types/DataTypes.sol";import { ISablierV2Lockup } from "./ISablierV2Lockup.sol";/// @title ISablierV2LockupLinear/// @notice Creates and manages Lockup streams with a linear distribution function.interface ISablierV2LockupLinear is ISablierV2Lockup {/*//////////////////////////////////////////////////////////////////////////EVENTS//////////////////////////////////////////////////////////////////////////*//// @notice Emitted when a stream is created./// @param streamId The ID of the newly created stream./// @param funder The address which funded the stream./// @param sender The address distributing the assets, which will have the ability to cancel the stream./// @param recipient The address receiving the assets./// @param amounts Struct containing (i) the deposit amount, and (ii) the broker fee amount, both denoted/// in units of the asset's decimals./// @param asset The contract address of the ERC-20 asset to be distributed./// @param cancelable Boolean indicating whether the stream will be cancelable or not./// @param transferable Boolean indicating whether the stream NFT is transferable or not./// @param timestamps Struct containing (i) the stream's start time, (ii) cliff time, and (iii) end time, all as
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import { UD2x18 } from "@prb/math/src/UD2x18.sol";import { UD60x18 } from "@prb/math/src/UD60x18.sol";// DataTypes.sol//// This file defines all structs used in V2 Core, most of which are organized under three namespaces://// - Lockup// - LockupDynamic// - LockupLinear// - LockupTranched//// You will notice that some structs contain "slot" annotations - they are used to indicate the// storage layout of the struct. It is more gas efficient to group small data types together so// that they fit in a single 32-byte slot./// @notice Struct encapsulating the broker parameters passed to the create functions. Both can be set to zero./// @param account The address receiving the broker's fee./// @param fee The broker's percentage fee from the total amount, denoted as a fixed-point number where 1e18 is 100%.struct Broker {address account;UD60x18 fee;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/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.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;/*██████╗ ██████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗██╗ ██╗██╔══██╗██╔══██╗██╔══██╗████╗ ████║██╔══██╗╚══██╔══╝██║ ██║██████╔╝██████╔╝██████╔╝██╔████╔██║███████║ ██║ ███████║██╔═══╝ ██╔══██╗██╔══██╗██║╚██╔╝██║██╔══██║ ██║ ██╔══██║██║ ██║ ██║██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ██║ ██║╚═╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝██╗ ██╗██████╗ ██████╗ ██████╗ ██╗ ██╗ ██╗ █████╗██║ ██║██╔══██╗██╔════╝ ██╔═████╗╚██╗██╔╝███║██╔══██╗██║ ██║██║ ██║███████╗ ██║██╔██║ ╚███╔╝ ╚██║╚█████╔╝██║ ██║██║ ██║██╔═══██╗████╔╝██║ ██╔██╗ ██║██╔══██╗╚██████╔╝██████╔╝╚██████╔╝╚██████╔╝██╔╝ ██╗ ██║╚█████╔╝╚═════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚════╝*/import "./ud60x18/Casting.sol";import "./ud60x18/Constants.sol";import "./ud60x18/Conversions.sol";import "./ud60x18/Errors.sol";import "./ud60x18/Helpers.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";/// @title ISablierLockupRecipient/// @notice Interface for recipient contracts capable of reacting to cancellations and withdrawals. For this to be able/// to hook into Sablier, it must fully implement this interface and it must have been allowlisted by the Lockup/// contract's admin./// @dev See {IERC165-supportsInterface}./// The implementation MUST implement the {IERC165-supportsInterface} method, which MUST return `true` when called with/// `0xf8ee98d3`, i.e. `type(ISablierLockupRecipient).interfaceId`.interface ISablierLockupRecipient is IERC165 {/// @notice Responds to cancellations.////// @dev Notes:/// - The function MUST return the selector `ISablierLockupRecipient.onSablierLockupCancel.selector`./// - If this function reverts, the execution in the Lockup contract will revert as well.////// @param streamId The ID of the canceled stream./// @param sender The stream's sender, who canceled the stream./// @param senderAmount The amount of assets refunded to the stream's sender, denoted in units of the asset's/// decimals./// @param recipientAmount The amount of assets left for the stream's recipient to withdraw, denoted in units of/// the asset's decimals.///
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { IERC4906 } from "@openzeppelin/contracts/interfaces/IERC4906.sol";import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";import { UD60x18 } from "@prb/math/src/UD60x18.sol";import { Lockup } from "../types/DataTypes.sol";import { IAdminable } from "./IAdminable.sol";import { ISablierV2NFTDescriptor } from "./ISablierV2NFTDescriptor.sol";/// @title ISablierV2Lockup/// @notice Common logic between all Sablier V2 Lockup contracts.interface ISablierV2Lockup isIAdminable, // 0 inherited componentsIERC4906, // 2 inherited componentsIERC721Metadata // 2 inherited components{/*//////////////////////////////////////////////////////////////////////////EVENTS//////////////////////////////////////////////////////////////////////////*//// @notice Emitted when the admin allows a new recipient contract to hook to Sablier./// @param admin The address of the current contract admin./// @param recipient The address of the recipient contract put on the allowlist.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";import { UD60x18 } from "@prb/math/src/UD60x18.sol";/// @title Errors/// @notice Library containing all custom errors the protocol may revert with.library Errors {/*//////////////////////////////////////////////////////////////////////////GENERICS//////////////////////////////////////////////////////////////////////////*//// @notice Thrown when `msg.sender` is not the admin.error CallerNotAdmin(address admin, address caller);/// @notice Thrown when trying to delegate call to a function that disallows delegate calls.error DelegateCall();/*//////////////////////////////////////////////////////////////////////////SABLIER-V2-LOCKUP//////////////////////////////////////////////////////////////////////////*//// @notice Thrown when trying to allow to hook a contract that doesn't implement the interface correctly.error SablierV2Lockup_AllowToHookUnsupportedInterface(address recipient);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.20;import {IERC721} from "./IERC721.sol";import {IERC721Receiver} from "./IERC721Receiver.sol";import {IERC721Metadata} from "./extensions/IERC721Metadata.sol";import {Context} from "../../utils/Context.sol";import {Strings} from "../../utils/Strings.sol";import {IERC165, ERC165} from "../../utils/introspection/ERC165.sol";import {IERC721Errors} from "../../interfaces/draft-IERC6093.sol";/*** @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including* the Metadata extension, but not including the Enumerable extension, which is available separately as* {ERC721Enumerable}.*/abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {using Strings for uint256;// Token namestring private _name;// Token symbolstring private _symbol;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)pragma solidity ^0.8.20;import {IERC20} from "../IERC20.sol";import {IERC20Permit} from "../extensions/IERC20Permit.sol";import {Address} from "../../../utils/Address.sol";/*** @title SafeERC20* @dev Wrappers around ERC20 operations that throw on failure (when the token* contract returns false). Tokens that return no value (and instead revert or* throw on failure) are also supported, non-reverting calls are assumed to be* successful.* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.*/library SafeERC20 {using Address for address;/*** @dev An operation with an ERC20 token failed.*/error SafeERC20FailedOperation(address token);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { Errors } from "../libraries/Errors.sol";/// @title NoDelegateCall/// @notice This contract implements logic to prevent delegate calls.abstract contract NoDelegateCall {/// @dev The address of the original contract that was deployed.address private immutable ORIGINAL;/// @dev Sets the original contract address.constructor() {ORIGINAL = address(this);}/// @notice Prevents delegate calls.modifier noDelegateCall() {_preventDelegateCall();_;}/// @dev This function checks whether the current call is a delegate call, and reverts if it is.////// - A private function is used instead of inlining this logic in a modifier because Solidity copies modifiers into/// every function that uses them. The `ORIGINAL` address would get copied in every place the modifier is used,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;import { IAdminable } from "../interfaces/IAdminable.sol";import { Errors } from "../libraries/Errors.sol";/// @title Adminable/// @notice See the documentation in {IAdminable}.abstract contract Adminable is IAdminable {/*//////////////////////////////////////////////////////////////////////////STATE VARIABLES//////////////////////////////////////////////////////////////////////////*//// @inheritdoc IAdminableaddress public override admin;/*//////////////////////////////////////////////////////////////////////////MODIFIERS//////////////////////////////////////////////////////////////////////////*//// @notice Reverts if called by any account other than the admin.modifier onlyAdmin() {if (admin != msg.sender) {revert Errors.CallerNotAdmin({ admin: admin, caller: msg.sender });}_;
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.8.22;/// @title IAdminable/// @notice Contract module that provides a basic access control mechanism, with an admin that can be/// granted exclusive access to specific functions. The inheriting contract must set the initial admin/// in the constructor.interface IAdminable {/*//////////////////////////////////////////////////////////////////////////EVENTS//////////////////////////////////////////////////////////////////////////*//// @notice Emitted when the admin is transferred./// @param oldAdmin The address of the old admin./// @param newAdmin The address of the new admin.event TransferAdmin(address indexed oldAdmin, address indexed newAdmin);/*//////////////////////////////////////////////////////////////////////////CONSTANT FUNCTIONS//////////////////////////////////////////////////////////////////////////*//// @notice The address of the admin account or contract.function admin() external view returns (address);/*//////////////////////////////////////////////////////////////////////////NON-CONSTANT FUNCTIONS
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.20;import {IERC721} from "../IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Metadata is IERC721 {/*** @dev Returns the token collection name.*/function name() external view returns (string memory);/*** @dev Returns the token collection symbol.*/function symbol() external view returns (string memory);/*** @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.*/function tokenURI(uint256 tokenId) external view returns (string memory);
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity >=0.8.19;/*██████╗ ██████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗██╗ ██╗██╔══██╗██╔══██╗██╔══██╗████╗ ████║██╔══██╗╚══██╔══╝██║ ██║██████╔╝██████╔╝██████╔╝██╔████╔██║███████║ ██║ ███████║██╔═══╝ ██╔══██╗██╔══██╗██║╚██╔╝██║██╔══██║ ██║ ██╔══██║██║ ██║ ██║██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ██║ ██║╚═╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝██╗ ██╗██████╗ ██████╗ ██╗ ██╗ ██╗ █████╗██║ ██║██╔══██╗╚════██╗╚██╗██╔╝███║██╔══██╗██║ ██║██║ ██║ █████╔╝ ╚███╔╝ ╚██║╚█████╔╝██║ ██║██║ ██║██╔═══╝ ██╔██╗ ██║██╔══██╗╚██████╔╝██████╔╝███████╗██╔╝ ██╗ ██║╚█████╔╝╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚════╝*/import "./ud2x18/Casting.sol";import "./ud2x18/Constants.sol";import "./ud2x18/Errors.sol";import "./ud2x18/ValueType.sol";
1234567891011121314151617181920212223242526// 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;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)pragma solidity ^0.8.20;import {Math} from "./math/Math.sol";import {SignedMath} from "./math/SignedMath.sol";/*** @dev String operations.*/library Strings {bytes16 private constant HEX_DIGITS = "0123456789abcdef";uint8 private constant ADDRESS_LENGTH = 20;/*** @dev The `value` string doesn't fit in the specified `length`.*/error StringsInsufficientHexLength(uint256 value, uint256 length);/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {unchecked {uint256 length = Math.log10(value) + 1;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)pragma solidity ^0.8.20;/*** @dev Standard ERC20 Errors* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 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.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check* for the additional interface id that will be supported. For example:** ```solidity* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);* }* ```*/abstract contract ERC165 is IERC165 {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {return interfaceId == type(IERC165).interfaceId;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)pragma solidity ^0.8.20;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev The ETH balance of the account is not enough to perform the operation.*/error AddressInsufficientBalance(address account);/*** @dev There's no code at `target` (it is not a contract).*/error AddressEmptyCode(address target);/*** @dev A call to an address target failed. The target may have reverted.*/error FailedInnerCall();/*** @dev Replacement for Solidity's `transfer`: sends `amount` wei to
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { UD60x18 } from "./ValueType.sol";/// @notice Thrown when ceiling a number overflows UD60x18.error PRBMath_UD60x18_Ceil_Overflow(UD60x18 x);/// @notice Thrown when converting a basic integer to the fixed-point format overflows UD60x18.error PRBMath_UD60x18_Convert_Overflow(uint256 x);/// @notice Thrown when taking the natural exponent of a base greater than 133_084258667509499441.error PRBMath_UD60x18_Exp_InputTooBig(UD60x18 x);/// @notice Thrown when taking the binary exponent of a base greater than 192e18.error PRBMath_UD60x18_Exp2_InputTooBig(UD60x18 x);/// @notice Thrown when taking the geometric mean of two numbers and multiplying them overflows UD60x18.error PRBMath_UD60x18_Gm_Overflow(UD60x18 x, UD60x18 y);/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD1x18.error PRBMath_UD60x18_IntoSD1x18_Overflow(UD60x18 x);/// @notice Thrown when trying to cast a UD60x18 number that doesn't fit in SD59x18.error PRBMath_UD60x18_IntoSD59x18_Overflow(UD60x18 x);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { UD60x18 } from "./ValueType.sol";// NOTICE: the "u" prefix stands for "unwrapped"./// @dev Euler's number as a UD60x18 number.UD60x18 constant E = UD60x18.wrap(2_718281828459045235);/// @dev The maximum input permitted in {exp}.uint256 constant uEXP_MAX_INPUT = 133_084258667509499440;UD60x18 constant EXP_MAX_INPUT = UD60x18.wrap(uEXP_MAX_INPUT);/// @dev The maximum input permitted in {exp2}.uint256 constant uEXP2_MAX_INPUT = 192e18 - 1;UD60x18 constant EXP2_MAX_INPUT = UD60x18.wrap(uEXP2_MAX_INPUT);/// @dev Half the UNIT number.uint256 constant uHALF_UNIT = 0.5e18;UD60x18 constant HALF_UNIT = UD60x18.wrap(uHALF_UNIT);/// @dev $log_2(10)$ as a UD60x18 number.uint256 constant uLOG2_10 = 3_321928094887362347;UD60x18 constant LOG2_10 = UD60x18.wrap(uLOG2_10);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { uMAX_UD60x18, uUNIT } from "./Constants.sol";import { PRBMath_UD60x18_Convert_Overflow } from "./Errors.sol";import { UD60x18 } from "./ValueType.sol";/// @notice Converts a UD60x18 number to a simple integer by dividing it by `UNIT`./// @dev The result is rounded toward zero./// @param x The UD60x18 number to convert./// @return result The same number in basic integer form.function convert(UD60x18 x) pure returns (uint256 result) {result = UD60x18.unwrap(x) / uUNIT;}/// @notice Converts a simple integer to UD60x18 by multiplying it by `UNIT`.////// @dev Requirements:/// - x must be less than or equal to `MAX_UD60x18 / UNIT`.////// @param x The basic integer to convert./// @param result The same number converted to UD60x18.function convert(uint256 x) pure returns (UD60x18 result) {if (x > uMAX_UD60x18 / uUNIT) {revert PRBMath_UD60x18_Convert_Overflow(x);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "./Errors.sol" as CastingErrors;import { MAX_UINT128, MAX_UINT40 } from "../Common.sol";import { uMAX_SD1x18 } from "../sd1x18/Constants.sol";import { SD1x18 } from "../sd1x18/ValueType.sol";import { uMAX_SD59x18 } from "../sd59x18/Constants.sol";import { SD59x18 } from "../sd59x18/ValueType.sol";import { uMAX_UD2x18 } from "../ud2x18/Constants.sol";import { UD2x18 } from "../ud2x18/ValueType.sol";import { UD60x18 } from "./ValueType.sol";/// @notice Casts a UD60x18 number into SD1x18./// @dev Requirements:/// - x must be less than or equal to `uMAX_SD1x18`.function intoSD1x18(UD60x18 x) pure returns (SD1x18 result) {uint256 xUint = UD60x18.unwrap(x);if (xUint > uint256(int256(uMAX_SD1x18))) {revert CastingErrors.PRBMath_UD60x18_IntoSD1x18_Overflow(x);}result = SD1x18.wrap(int64(uint64(xUint)));}/// @notice Casts a UD60x18 number into UD2x18./// @dev Requirements:
1234567891011121314151617181920// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC4906.sol)pragma solidity ^0.8.20;import {IERC165} from "./IERC165.sol";import {IERC721} from "./IERC721.sol";/// @title EIP-721 Metadata Update Extensioninterface IERC4906 is IERC165, IERC721 {/// @dev This event emits when the metadata of a token is changed./// So that the third-party platforms such as NFT market could/// timely update the images and related attributes of the NFT.event MetadataUpdate(uint256 _tokenId);/// @dev This event emits when the metadata of a range of tokens is changed./// So that the third-party platforms such as NFT market could/// timely update the images and related attributes of the NFTs.event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "../Common.sol" as Common;import "./Errors.sol" as Errors;import { wrap } from "./Casting.sol";import {uEXP_MAX_INPUT,uEXP2_MAX_INPUT,uHALF_UNIT,uLOG2_10,uLOG2_E,uMAX_UD60x18,uMAX_WHOLE_UD60x18,UNIT,uUNIT,uUNIT_SQUARED,ZERO} from "./Constants.sol";import { UD60x18 } from "./ValueType.sol";/*//////////////////////////////////////////////////////////////////////////MATHEMATICAL FUNCTIONS//////////////////////////////////////////////////////////////////////////*//// @notice Calculates the arithmetic average of x and y using the following formula:
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { wrap } from "./Casting.sol";import { UD60x18 } from "./ValueType.sol";/// @notice Implements the checked addition operation (+) in the UD60x18 type.function add(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {result = wrap(x.unwrap() + y.unwrap());}/// @notice Implements the AND (&) bitwise operation in the UD60x18 type.function and(UD60x18 x, uint256 bits) pure returns (UD60x18 result) {result = wrap(x.unwrap() & bits);}/// @notice Implements the AND (&) bitwise operation in the UD60x18 type.function and2(UD60x18 x, UD60x18 y) pure returns (UD60x18 result) {result = wrap(x.unwrap() & y.unwrap());}/// @notice Implements the equal operation (==) in the UD60x18 type.function eq(UD60x18 x, UD60x18 y) pure returns (bool result) {result = x.unwrap() == y.unwrap();}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].** Adds the {permit} method, which can be used to change an account's ERC20 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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "./Casting.sol" as Casting;import "./Helpers.sol" as Helpers;import "./Math.sol" as Math;/// @notice The unsigned 60.18-decimal fixed-point number representation, which can have up to 60 digits and up to 18/// decimals. The values of this are bound by the minimum and the maximum values permitted by the Solidity type uint256./// @dev The value type is defined here so it can be imported in all other files.type UD60x18 is uint256;/*//////////////////////////////////////////////////////////////////////////CASTING//////////////////////////////////////////////////////////////////////////*/using {Casting.intoSD1x18,Casting.intoUD2x18,Casting.intoSD59x18,Casting.intoUint128,Casting.intoUint256,Casting.intoUint40,Casting.unwrap} for UD60x18 global;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.20;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be* reverted.** The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.20;import {IERC165} from "../../utils/introspection/IERC165.sol";/*** @dev Required interface of an ERC721 compliant contract.*/interface IERC721 is IERC165 {/*** @dev Emitted when `tokenId` token is transferred from `from` to `to`.*/event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.*/event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.*/event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "../Common.sol" as Common;import "./Errors.sol" as Errors;import { uMAX_SD1x18 } from "../sd1x18/Constants.sol";import { SD1x18 } from "../sd1x18/ValueType.sol";import { SD59x18 } from "../sd59x18/ValueType.sol";import { UD60x18 } from "../ud60x18/ValueType.sol";import { UD2x18 } from "./ValueType.sol";/// @notice Casts a UD2x18 number into SD1x18./// - x must be less than or equal to `uMAX_SD1x18`.function intoSD1x18(UD2x18 x) pure returns (SD1x18 result) {uint64 xUint = UD2x18.unwrap(x);if (xUint > uint64(uMAX_SD1x18)) {revert Errors.PRBMath_UD2x18_IntoSD1x18_Overflow(x);}result = SD1x18.wrap(int64(xUint));}/// @notice Casts a UD2x18 number into SD59x18./// @dev There is no overflow check because the domain of UD2x18 is a subset of SD59x18.function intoSD59x18(UD2x18 x) pure returns (SD59x18 result) {result = SD59x18.wrap(int256(uint256(UD2x18.unwrap(x))));}
123456789101112131415161718// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { UD2x18 } from "./ValueType.sol";/// @dev Euler's number as a UD2x18 number.UD2x18 constant E = UD2x18.wrap(2_718281828459045235);/// @dev The maximum value a UD2x18 number can have.uint64 constant uMAX_UD2x18 = 18_446744073709551615;UD2x18 constant MAX_UD2x18 = UD2x18.wrap(uMAX_UD2x18);/// @dev PI as a UD2x18 number.UD2x18 constant PI = UD2x18.wrap(3_141592653589793238);/// @dev The unit number, which gives the decimal precision of UD2x18.UD2x18 constant UNIT = UD2x18.wrap(1e18);uint64 constant uUNIT = 1e18;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;// Common.sol//// Common mathematical functions used in both SD59x18 and UD60x18. Note that these global functions do not// always operate with SD59x18 and UD60x18 numbers./*//////////////////////////////////////////////////////////////////////////CUSTOM ERRORS//////////////////////////////////////////////////////////////////////////*//// @notice Thrown when the resultant value in {mulDiv} overflows uint256.error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator);/// @notice Thrown when the resultant value in {mulDiv18} overflows uint256.error PRBMath_MulDiv18_Overflow(uint256 x, uint256 y);/// @notice Thrown when one of the inputs passed to {mulDivSigned} is `type(int256).min`.error PRBMath_MulDivSigned_InputTooSmall();/// @notice Thrown when the resultant value in {mulDivSigned} overflows int256.error PRBMath_MulDivSigned_Overflow(int256 x, int256 y);/*//////////////////////////////////////////////////////////////////////////CONSTANTS
123456789101112131415161718192021222324// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "./Casting.sol" as Casting;/// @notice The unsigned 2.18-decimal fixed-point number representation, which can have up to 2 digits and up to 18/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity/// type uint64. This is useful when end users want to use uint64 to save gas, e.g. with tight variable packing in contract/// storage.type UD2x18 is uint64;/*//////////////////////////////////////////////////////////////////////////CASTING//////////////////////////////////////////////////////////////////////////*/using {Casting.intoSD1x18,Casting.intoSD59x18,Casting.intoUD60x18,Casting.intoUint256,Casting.intoUint128,Casting.intoUint40,Casting.unwrap} for UD2x18 global;
12345678910// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { UD2x18 } from "./ValueType.sol";/// @notice Thrown when trying to cast a UD2x18 number that doesn't fit in SD1x18.error PRBMath_UD2x18_IntoSD1x18_Overflow(UD2x18 x);/// @notice Thrown when trying to cast a UD2x18 number that doesn't fit in uint40.error PRBMath_UD2x18_IntoUint40_Overflow(UD2x18 x);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { SD59x18 } from "./ValueType.sol";// NOTICE: the "u" prefix stands for "unwrapped"./// @dev Euler's number as an SD59x18 number.SD59x18 constant E = SD59x18.wrap(2_718281828459045235);/// @dev The maximum input permitted in {exp}.int256 constant uEXP_MAX_INPUT = 133_084258667509499440;SD59x18 constant EXP_MAX_INPUT = SD59x18.wrap(uEXP_MAX_INPUT);/// @dev Any value less than this returns 0 in {exp}.int256 constant uEXP_MIN_THRESHOLD = -41_446531673892822322;SD59x18 constant EXP_MIN_THRESHOLD = SD59x18.wrap(uEXP_MIN_THRESHOLD);/// @dev The maximum input permitted in {exp2}.int256 constant uEXP2_MAX_INPUT = 192e18 - 1;SD59x18 constant EXP2_MAX_INPUT = SD59x18.wrap(uEXP2_MAX_INPUT);/// @dev Any value less than this returns 0 in {exp2}.int256 constant uEXP2_MIN_THRESHOLD = -59_794705707972522261;SD59x18 constant EXP2_MIN_THRESHOLD = SD59x18.wrap(uEXP2_MIN_THRESHOLD);
12345678910111213141516171819202122// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { SD1x18 } from "./ValueType.sol";/// @dev Euler's number as an SD1x18 number.SD1x18 constant E = SD1x18.wrap(2_718281828459045235);/// @dev The maximum value an SD1x18 number can have.int64 constant uMAX_SD1x18 = 9_223372036854775807;SD1x18 constant MAX_SD1x18 = SD1x18.wrap(uMAX_SD1x18);/// @dev The maximum value an SD1x18 number can have.int64 constant uMIN_SD1x18 = -9_223372036854775808;SD1x18 constant MIN_SD1x18 = SD1x18.wrap(uMIN_SD1x18);/// @dev PI as an SD1x18 number.SD1x18 constant PI = SD1x18.wrap(3_141592653589793238);/// @dev The unit number, which gives the decimal precision of SD1x18.SD1x18 constant UNIT = SD1x18.wrap(1e18);int64 constant uUNIT = 1e18;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "./Casting.sol" as Casting;import "./Helpers.sol" as Helpers;import "./Math.sol" as Math;/// @notice The signed 59.18-decimal fixed-point number representation, which can have up to 59 digits and up to 18/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity/// type int256.type SD59x18 is int256;/*//////////////////////////////////////////////////////////////////////////CASTING//////////////////////////////////////////////////////////////////////////*/using {Casting.intoInt256,Casting.intoSD1x18,Casting.intoUD2x18,Casting.intoUD60x18,Casting.intoUint256,Casting.intoUint128,Casting.intoUint40,Casting.unwrap} for SD59x18 global;
123456789101112131415161718192021222324// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "./Casting.sol" as Casting;/// @notice The signed 1.18-decimal fixed-point number representation, which can have up to 1 digit and up to 18/// decimals. The values of this are bound by the minimum and the maximum values permitted by the underlying Solidity/// type int64. This is useful when end users want to use int64 to save gas, e.g. with tight variable packing in contract/// storage.type SD1x18 is int64;/*//////////////////////////////////////////////////////////////////////////CASTING//////////////////////////////////////////////////////////////////////////*/using {Casting.intoSD59x18,Casting.intoUD2x18,Casting.intoUD60x18,Casting.intoUint256,Casting.intoUint128,Casting.intoUint40,Casting.unwrap} for SD1x18 global;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)pragma solidity ^0.8.20;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {/*** @dev Muldiv operation overflow.*/error MathOverflowedMulDiv();enum Rounding {Floor, // Toward negative infinityCeil, // Toward positive infinityTrunc, // Toward zeroExpand // Away from zero}/*** @dev Returns the addition of two unsigned integers, with an overflow flag.*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)pragma solidity ^0.8.20;/*** @dev Standard signed math utilities missing in the Solidity language.*/library SignedMath {/*** @dev Returns the largest of two signed numbers.*/function max(int256 a, int256 b) internal pure returns (int256) {return a > b ? a : b;}/*** @dev Returns the smallest of two signed numbers.*/function min(int256 a, int256 b) internal pure returns (int256) {return a < b ? a : b;}/*** @dev Returns the average of two signed numbers without overflow.* The result is rounded towards zero.
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)pragma solidity ^0.8.20;import {IERC721} from "../token/ERC721/IERC721.sol";
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "../utils/introspection/IERC165.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { wrap } from "./Casting.sol";import { SD59x18 } from "./ValueType.sol";/// @notice Implements the checked addition operation (+) in the SD59x18 type.function add(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {return wrap(x.unwrap() + y.unwrap());}/// @notice Implements the AND (&) bitwise operation in the SD59x18 type.function and(SD59x18 x, int256 bits) pure returns (SD59x18 result) {return wrap(x.unwrap() & bits);}/// @notice Implements the AND (&) bitwise operation in the SD59x18 type.function and2(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {return wrap(x.unwrap() & y.unwrap());}/// @notice Implements the equal (=) operation in the SD59x18 type.function eq(SD59x18 x, SD59x18 y) pure returns (bool result) {result = x.unwrap() == y.unwrap();}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "../Common.sol" as Common;import "./Errors.sol" as CastingErrors;import { SD59x18 } from "../sd59x18/ValueType.sol";import { UD2x18 } from "../ud2x18/ValueType.sol";import { UD60x18 } from "../ud60x18/ValueType.sol";import { SD1x18 } from "./ValueType.sol";/// @notice Casts an SD1x18 number into SD59x18./// @dev There is no overflow check because the domain of SD1x18 is a subset of SD59x18.function intoSD59x18(SD1x18 x) pure returns (SD59x18 result) {result = SD59x18.wrap(int256(SD1x18.unwrap(x)));}/// @notice Casts an SD1x18 number into UD2x18./// - x must be positive.function intoUD2x18(SD1x18 x) pure returns (UD2x18 result) {int64 xInt = SD1x18.unwrap(x);if (xInt < 0) {revert CastingErrors.PRBMath_SD1x18_ToUD2x18_Underflow(x);}result = UD2x18.wrap(uint64(xInt));}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "./Errors.sol" as CastingErrors;import { MAX_UINT128, MAX_UINT40 } from "../Common.sol";import { uMAX_SD1x18, uMIN_SD1x18 } from "../sd1x18/Constants.sol";import { SD1x18 } from "../sd1x18/ValueType.sol";import { uMAX_UD2x18 } from "../ud2x18/Constants.sol";import { UD2x18 } from "../ud2x18/ValueType.sol";import { UD60x18 } from "../ud60x18/ValueType.sol";import { SD59x18 } from "./ValueType.sol";/// @notice Casts an SD59x18 number into int256./// @dev This is basically a functional alias for {unwrap}.function intoInt256(SD59x18 x) pure returns (int256 result) {result = SD59x18.unwrap(x);}/// @notice Casts an SD59x18 number into SD1x18./// @dev Requirements:/// - x must be greater than or equal to `uMIN_SD1x18`./// - x must be less than or equal to `uMAX_SD1x18`.function intoSD1x18(SD59x18 x) pure returns (SD1x18 result) {int256 xInt = SD59x18.unwrap(x);if (xInt < uMIN_SD1x18) {revert CastingErrors.PRBMath_SD59x18_IntoSD1x18_Underflow(x);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import "../Common.sol" as Common;import "./Errors.sol" as Errors;import {uEXP_MAX_INPUT,uEXP2_MAX_INPUT,uEXP_MIN_THRESHOLD,uEXP2_MIN_THRESHOLD,uHALF_UNIT,uLOG2_10,uLOG2_E,uMAX_SD59x18,uMAX_WHOLE_SD59x18,uMIN_SD59x18,uMIN_WHOLE_SD59x18,UNIT,uUNIT,uUNIT_SQUARED,ZERO} from "./Constants.sol";import { wrap } from "./Helpers.sol";import { SD59x18 } from "./ValueType.sol";/// @notice Calculates the absolute value of x.
12345678910111213141516171819202122// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { SD1x18 } from "./ValueType.sol";/// @notice Thrown when trying to cast a SD1x18 number that doesn't fit in UD2x18.error PRBMath_SD1x18_ToUD2x18_Underflow(SD1x18 x);/// @notice Thrown when trying to cast a SD1x18 number that doesn't fit in UD60x18.error PRBMath_SD1x18_ToUD60x18_Underflow(SD1x18 x);/// @notice Thrown when trying to cast a SD1x18 number that doesn't fit in uint128.error PRBMath_SD1x18_ToUint128_Underflow(SD1x18 x);/// @notice Thrown when trying to cast a SD1x18 number that doesn't fit in uint256.error PRBMath_SD1x18_ToUint256_Underflow(SD1x18 x);/// @notice Thrown when trying to cast a SD1x18 number that doesn't fit in uint40.error PRBMath_SD1x18_ToUint40_Overflow(SD1x18 x);/// @notice Thrown when trying to cast a SD1x18 number that doesn't fit in uint40.error PRBMath_SD1x18_ToUint40_Underflow(SD1x18 x);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.19;import { SD59x18 } from "./ValueType.sol";/// @notice Thrown when taking the absolute value of `MIN_SD59x18`.error PRBMath_SD59x18_Abs_MinSD59x18();/// @notice Thrown when ceiling a number overflows SD59x18.error PRBMath_SD59x18_Ceil_Overflow(SD59x18 x);/// @notice Thrown when converting a basic integer to the fixed-point format overflows SD59x18.error PRBMath_SD59x18_Convert_Overflow(int256 x);/// @notice Thrown when converting a basic integer to the fixed-point format underflows SD59x18.error PRBMath_SD59x18_Convert_Underflow(int256 x);/// @notice Thrown when dividing two numbers and one of them is `MIN_SD59x18`.error PRBMath_SD59x18_Div_InputTooSmall();/// @notice Thrown when dividing two numbers and one of the intermediary unsigned results overflows SD59x18.error PRBMath_SD59x18_Div_Overflow(SD59x18 x, SD59x18 y);/// @notice Thrown when taking the natural exponent of a base greater than 133_084258667509499441.error PRBMath_SD59x18_Exp_InputTooBig(SD59x18 x);
1234567891011121314151617181920{"optimizer": {"enabled": true,"mode": "z","fallback_to_optimizing_for_size": true},"viaIR": true,"evmVersion": "paris","outputSelection": {"*": {"*": ["abi"]}},"detectMissingLibraries": false,"forceEVMLA": false,"enableEraVMExtensions": false,"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"},{"internalType":"contract ISablierV2NFTDescriptor","name":"initialNFTDescriptor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"caller","type":"address"}],"name":"CallerNotAdmin","type":"error"},{"inputs":[],"name":"DelegateCall","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"PRBMath_MulDiv18_Overflow","type":"error"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"PRBMath_MulDiv_Overflow","type":"error"},{"inputs":[{"internalType":"uint40","name":"cliffTime","type":"uint40"},{"internalType":"uint40","name":"endTime","type":"uint40"}],"name":"SablierV2LockupLinear_CliffTimeNotLessThanEndTime","type":"error"},{"inputs":[{"internalType":"uint40","name":"startTime","type":"uint40"},{"internalType":"uint40","name":"cliffTime","type":"uint40"}],"name":"SablierV2LockupLinear_StartTimeNotLessThanCliffTime","type":"error"},{"inputs":[{"internalType":"uint40","name":"startTime","type":"uint40"},{"internalType":"uint40","name":"endTime","type":"uint40"}],"name":"SablierV2LockupLinear_StartTimeNotLessThanEndTime","type":"error"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"SablierV2Lockup_AllowToHookUnsupportedInterface","type":"error"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"SablierV2Lockup_AllowToHookZeroCodeSize","type":"error"},{"inputs":[{"internalType":"UD60x18","name":"brokerFee","type":"uint256"},{"internalType":"UD60x18","name":"maxBrokerFee","type":"uint256"}],"name":"SablierV2Lockup_BrokerFeeTooHigh","type":"error"},{"inputs":[],"name":"SablierV2Lockup_DepositAmountZero","type":"error"},{"inputs":[{"internalType":"uint40","name":"blockTimestamp","type":"uint40"},{"internalType":"uint40","name":"endTime","type":"uint40"}],"name":"SablierV2Lockup_EndTimeNotInTheFuture","type":"error"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"SablierV2Lockup_InvalidHookSelector","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"SablierV2Lockup_NotTransferable","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_Null","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"withdrawableAmount","type":"uint128"}],"name":"SablierV2Lockup_Overdraw","type":"error"},{"inputs":[],"name":"SablierV2Lockup_StartTimeZero","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_StreamCanceled","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_StreamDepleted","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_StreamNotCancelable","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_StreamNotDepleted","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_StreamSettled","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"address","name":"caller","type":"address"}],"name":"SablierV2Lockup_Unauthorized","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_WithdrawAmountZero","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamIdsCount","type":"uint256"},{"internalType":"uint256","name":"amountsCount","type":"uint256"}],"name":"SablierV2Lockup_WithdrawArrayCountsNotEqual","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"SablierV2Lockup_WithdrawToZeroAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"SablierV2Lockup_WithdrawalAddressNotRecipient","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"AllowToHook","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"streamId","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"asset","type":"address"},{"indexed":false,"internalType":"uint128","name":"senderAmount","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"recipientAmount","type":"uint128"}],"name":"CancelLockupStream","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"streamId","type":"uint256"},{"indexed":false,"internalType":"address","name":"funder","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"uint128","name":"deposit","type":"uint128"},{"internalType":"uint128","name":"brokerFee","type":"uint128"}],"indexed":false,"internalType":"struct Lockup.CreateAmounts","name":"amounts","type":"tuple"},{"indexed":true,"internalType":"contract IERC20","name":"asset","type":"address"},{"indexed":false,"internalType":"bool","name":"cancelable","type":"bool"},{"indexed":false,"internalType":"bool","name":"transferable","type":"bool"},{"components":[{"internalType":"uint40","name":"start","type":"uint40"},{"internalType":"uint40","name":"cliff","type":"uint40"},{"internalType":"uint40","name":"end","type":"uint40"}],"indexed":false,"internalType":"struct LockupLinear.Timestamps","name":"timestamps","type":"tuple"},{"indexed":false,"internalType":"address","name":"broker","type":"address"}],"name":"CreateLockupLinearStream","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"RenounceLockupStream","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"contract ISablierV2NFTDescriptor","name":"oldNFTDescriptor","type":"address"},{"indexed":false,"internalType":"contract ISablierV2NFTDescriptor","name":"newNFTDescriptor","type":"address"}],"name":"SetNFTDescriptor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"TransferAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"streamId","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"asset","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"}],"name":"WithdrawFromLockupStream","type":"event"},{"inputs":[],"name":"MAX_BROKER_FEE","outputs":[{"internalType":"UD60x18","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"allowToHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"streamIds","type":"uint256[]"}],"name":"cancelMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"totalAmount","type":"uint128"},{"internalType":"contract IERC20","name":"asset","type":"address"},{"internalType":"bool","name":"cancelable","type":"bool"},{"internalType":"bool","name":"transferable","type":"bool"},{"components":[{"internalType":"uint40","name":"cliff","type":"uint40"},{"internalType":"uint40","name":"total","type":"uint40"}],"internalType":"struct LockupLinear.Durations","name":"durations","type":"tuple"},{"components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"UD60x18","name":"fee","type":"uint256"}],"internalType":"struct Broker","name":"broker","type":"tuple"}],"internalType":"struct LockupLinear.CreateWithDurations","name":"params","type":"tuple"}],"name":"createWithDurations","outputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"totalAmount","type":"uint128"},{"internalType":"contract IERC20","name":"asset","type":"address"},{"internalType":"bool","name":"cancelable","type":"bool"},{"internalType":"bool","name":"transferable","type":"bool"},{"components":[{"internalType":"uint40","name":"start","type":"uint40"},{"internalType":"uint40","name":"cliff","type":"uint40"},{"internalType":"uint40","name":"end","type":"uint40"}],"internalType":"struct LockupLinear.Timestamps","name":"timestamps","type":"tuple"},{"components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"UD60x18","name":"fee","type":"uint256"}],"internalType":"struct Broker","name":"broker","type":"tuple"}],"internalType":"struct LockupLinear.CreateWithTimestamps","name":"params","type":"tuple"}],"name":"createWithTimestamps","outputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getAsset","outputs":[{"internalType":"contract IERC20","name":"asset","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getCliffTime","outputs":[{"internalType":"uint40","name":"cliffTime","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getDepositedAmount","outputs":[{"internalType":"uint128","name":"depositedAmount","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getEndTime","outputs":[{"internalType":"uint40","name":"endTime","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getRecipient","outputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getRefundedAmount","outputs":[{"internalType":"uint128","name":"refundedAmount","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getSender","outputs":[{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getStartTime","outputs":[{"internalType":"uint40","name":"startTime","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getStream","outputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint40","name":"startTime","type":"uint40"},{"internalType":"bool","name":"isCancelable","type":"bool"},{"internalType":"bool","name":"wasCanceled","type":"bool"},{"internalType":"contract IERC20","name":"asset","type":"address"},{"internalType":"uint40","name":"endTime","type":"uint40"},{"internalType":"bool","name":"isDepleted","type":"bool"},{"internalType":"bool","name":"isStream","type":"bool"},{"internalType":"bool","name":"isTransferable","type":"bool"},{"components":[{"internalType":"uint128","name":"deposited","type":"uint128"},{"internalType":"uint128","name":"withdrawn","type":"uint128"},{"internalType":"uint128","name":"refunded","type":"uint128"}],"internalType":"struct Lockup.Amounts","name":"amounts","type":"tuple"},{"internalType":"uint40","name":"cliffTime","type":"uint40"}],"internalType":"struct LockupLinear.StreamLL","name":"stream","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getTimestamps","outputs":[{"components":[{"internalType":"uint40","name":"start","type":"uint40"},{"internalType":"uint40","name":"cliff","type":"uint40"},{"internalType":"uint40","name":"end","type":"uint40"}],"internalType":"struct LockupLinear.Timestamps","name":"timestamps","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"getWithdrawnAmount","outputs":[{"internalType":"uint128","name":"withdrawnAmount","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"isAllowedToHook","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"isCancelable","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"isCold","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"isDepleted","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"isStream","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"isTransferable","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"isWarm","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextStreamId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftDescriptor","outputs":[{"internalType":"contract ISablierV2NFTDescriptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"refundableAmountOf","outputs":[{"internalType":"uint128","name":"refundableAmount","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISablierV2NFTDescriptor","name":"newNFTDescriptor","type":"address"}],"name":"setNFTDescriptor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"statusOf","outputs":[{"internalType":"enum Lockup.Status","name":"status","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"streamedAmountOf","outputs":[{"internalType":"uint128","name":"streamedAmount","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"wasCanceled","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawMax","outputs":[{"internalType":"uint128","name":"withdrawnAmount","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"address","name":"newRecipient","type":"address"}],"name":"withdrawMaxAndTransfer","outputs":[{"internalType":"uint128","name":"withdrawnAmount","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"streamIds","type":"uint256[]"},{"internalType":"uint128[]","name":"amounts","type":"uint128[]"}],"name":"withdrawMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"name":"withdrawableAmountOf","outputs":[{"internalType":"uint128","name":"withdrawableAmount","type":"uint128"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010005db119b1cf97bd0d8dda381f5e1c61aee07727fa28a0703aa2f4bc2ddfc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000d427d37b5f6d33f7d42c4125979361e011ffbfd9000000000000000000000000ac2e42b520364940c90ce164412ca9ba212d014b
Deployed Bytecode
0x00040000000000020010000000000002000000000401034f000000000104001900000060031002700000051f01300197000300000014035500020000000403550000051f0030019d000000010020019000000000030004160000000109000039000000000a000410000000940000c13d0000008002000039000000400020043f000000040010008c000000bc0000413d000000000204043b000000e005200270000005300050009c000000040240037000000024064003700000004407400370000000e70000613d000005310050009c000001010000613d000005320050009c000001050000613d000005330050009c0000011a0000613d000005340050009c000001210000613d000005350050009c000001440000613d000005360050009c000001610000613d000005370050009c0000016f0000613d000005380050009c000001740000613d000005390050009c000001790000613d0000053a0050009c000001850000613d0000053b0050009c0000019e0000613d0000053c0050009c000002650000613d0000053d0050009c000002710000613d0000053e0050009c000002830000613d0000053f0050009c000002910000613d000005400050009c000002950000613d000005410050009c000002ad0000613d000005420050009c000002bb0000613d000005430050009c000003a80000613d000005440050009c000004050000613d000005450050009c000000e00000613d000005460050009c000000e00000613d000005470050009c000004310000613d000005480050009c0000043c0000613d000005490050009c000004540000613d0000054a0050009c000004620000613d0000054b0050009c0000048a0000613d0000054c0050009c000004a20000613d0000054d0050009c0000057e0000613d0000054e0050009c0000065b0000613d0000054f0050009c0000066e0000613d000005500050009c000006790000613d000005510050009c000006880000613d000005520050009c0000069c0000613d000005530050009c000006a60000613d000005540050009c000007210000613d000005550050009c0000072e0000613d000005560050009c0000073a0000613d000005570050009c0000077f0000613d000005580050009c000007880000613d000005590050009c000007920000613d0000055a0050009c0000079e0000613d0000055b0050009c000007bf0000613d0000055c0050009c000007fa0000613d0000055d0050009c000008060000613d0000055e0050009c000008120000613d0000055f0050009c000008230000613d000005600050009c0000083d0000613d000005610050009c000008550000613d000005620050009c000008600000613d000005630050009c0000086c0000613d000005640050009c000000bc0000c13d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b0000057200100198000000bc0000c13d000005a00010009c000000910000613d000005a80010009c000000910000613d000005a90010009c000000910000613d000005aa0010009c000000910000613d0000000009000019000000800090043f000005ab01000041000014770001042e000000a002000039000000400020043f000000000003004b000000bc0000c13d0000001f031000390000052003300197000000a003300039000000400030043f0000001f0310018f00000005051002720000000505500210000000a60000613d000000a006500039000000000704034f000000007807043c0000000002820436000000000062004b000000a20000c13d000000000003004b000000b40000613d000000000254034f0000000303300210000000a004500039000000000504043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f0000000000240435000000400010008c000000bc0000413d000000a00600043d000005210060009c000000bc0000213d000000c00700043d000005210070009c000000bd0000a13d000013da0000013d000000400d00043d0000052200d0009c0000092b0000213d0000004001d00039000000400010043f0000001c0100003900000000011d043600000523020000410000000000210435000000400500043d000005220050009c0000092b0000213d0000004002500039000000400020043f00000011020000390000000008250436000005240200004100000000002804350000008000a0043f000000000c0d04330000052500c0009c0000092b0000213d000000000209041a000000010320019000000001022002700000007f0220618f0000001f0020008c00000000040000190000000104002039000000000043004b000008750000613d0000052e01000041000000000010043500000022010000390000092e0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b14760e630000040f0000081e0000013d000000640010008c000000bc0000413d000000000003004b000000bc0000c13d000100ed0000003d0000145d0000013d000005210010009c000000bc0000213d000000000107043b000c00000001001d000005650010009c000000bc0000213d14760f850000040f0000000e01000029000100f70000003d000013230000013d0000056600100198000008680000613d000005670010019800000a990000c13d0000000d0000006b00000a970000613d0000000c0000006b00000b3c0000c13d0000057601000041000008690000013d000000000003004b000000bc0000c13d000005a701000041000008700000013d000000000003004b000000bc0000c13d00000001030000390001010a0000003d000013dc0000013d000000000065004b000006810000c13d000000800010043f000000000005004b000008f60000613d000000000030043500000527020000410000000003000019000000a004300039000000000013004b000008fc0000813d000000000502041a000000000054043500000020033000390000000102200039000001120000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b14760d530000040f0000081e0000013d000000440010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d000005210010009c000000bc0000213d000000000106043b000d00000001001d14760e630000040f00000000050100190000000001000411000000000001004b0000094c0000613d000000000015004b0000094c0000613d00000000005004350000000601000039000101360000003d0000146d0000013d000c00000005001d147612e70000040f0000000002000411000005210220019700000000002004350001013d0000003d000013770000013d0000000c050000290000000002000411000000000101041a000000ff001001900000094c0000c13d000005a50100004100000a9e0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d0001014a0000003d000013340000013d0000056600200198000008680000613d0000000e040000290000056700200198000009a80000c13d000000000201041a0000058b0020019800000000020000190000008003000039000009aa0000613d0000000201100039000000000101041a000d00000001001d000000000104001914760e720000040f0000000d020000290000056502200197000005650110019700000000021200490000059c0020009c000004860000813d000000400300043d000009aa0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d000101690000003d000013230000013d0000056600100198000008680000613d0000000e0100002914760ef60000040f000000020010008c000006690000013d000000000003004b000000bc0000c13d0000000701000039000000000101041a000008700000013d000000000003004b000000bc0000c13d14760d180000040f14760d5d0000040f000002810000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000005210010009c000000bc0000213d00000000001004350000000901000039000101840000003d0000146d0000013d000008370000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d000005210010009c000000bc0000213d000000000100041a00000521011001970000000003000411000000000031004b000009620000c13d000f000e0000002d0000800201000039000000240300003900000000040004150000000f0440008a00000005044002100000059f02000041147612fb0000040f000000000001004b000009ac0000c13d000005a401000041000008690000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000101a40000003d000014710000013d0000000000100435000101a70000003d0000133f0000013d0000056600200198000008680000613d000005670020019800000a990000c13d000000000201041a0000058c0020009c0000000e01000029000009a50000813d00000521032001970000000002000411000000000032004b00000a750000c13d000101b50000003d000014560000013d00000040020000390000000001000019147612e70000040f000000020110003914760df10000040f0000000d020000290000056502200197000a00000001001d0000000031010434000b00000003001d0000056501100197000c00000002001d000000000012004b00000aa80000813d000101c50000003d000014690000013d000101c70000003d0000134d0000013d0000058b00200198000009da0000613d0000000b0300002900000000030304330000056504300197000900000004001d0000000c03400069000b00000003001d000005650030009c0000000a04000039000004860000213d0000000a0300002900000000030304330000000d0330006a000d05650030019b00000579022001970000058c022001c7000000000021041b0000000e010000290000000000100435000000200040043f00000040020000390000000001000019147612e70000040f000000000201041a0000056d02200197000000000021041b00000009020000290000000c0020006b000001ea0000c13d000101e70000003d000013530000013d0000056b022001970000056c022001c7000000000021041b000101ec0000003d000014690000013d000101ee0000003d000013c10000013d0000000301100039000000000201041a0000058f022001970000000d022001af000000000021041b000101f50000003d000014690000013d000101f70000003d000014360000013d0000000301000039000101fa0000003d000013850000013d000a00000001001d000101fd0000003d000014690000013d000101ff0000003d000013770000013d0000000c020000290000052102200197000c00000002001d0000000101100039000000000101041a0000052101100197000900000001001d0000000d03000029147611d70000040f000000400100043d00000040021000390000000b030000290001020d0000003d000014480000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000000a02000029000005210620019700000590011001c70000800d02000039000000040300003900000591040000410000000c05000029000a00000006001d0000000907000029147613190000040f0000000100200190000000bc0000613d000102230000003d0000141f0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d0000000a01000029000102350000003d000013950000013d000002810000613d000000400300043d00000064013000390000000b02000029000000000021043500000044013000390000000d02000029000000000021043500000024013000390000000c02000029000000000021043500000592010000410000000000130435000d00000003001d000102450000003d000014130000013d00000000010004140000000a02000029000000040020008c000002510000613d000000840400003900000020060000390000000a020000290000000d03000029000000000503001914760cc10000040f000000000001004b000007dd0000613d000102530000003d000013ab0000013d000005250020009c0000092b0000213d00000001003001900000092b0000c13d000000400020043f000000200010008c000000bc0000413d0000000d0100002900000000010104330000057200100198000000bc0000c13d0000057301100197000005920010009c000002810000613d000005740100004100000000001004350000000a010000290000092e0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d0001026d0000003d000013230000013d0000056600100198000008680000613d00000567001001980000083a0000013d000000000003004b000000bc0000c13d14760d180000040f000e00000001001d000d00000002001d000c00000003001d000000400100043d000b00000001001d000000200200003914760d400000040f0000000b0400002900000000000404350000000e010000290000000d020000290000000c0300002914760e090000040f0000000001000019000014770001042e000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000102890000003d000014710000013d0001028b0000003d000013230000013d0000056600100198000008680000613d0000056700100198000009670000c13d0000059e01000041000008690000013d000000000003004b000000bc0000c13d0000000801000039000007900000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d0001029d0000003d000013230000013d0000056600100198000008680000613d0000000e0100002914760ef60000040f000000020010008c0000000001000019000002ab0000613d000102a60000003d000014690000013d000102a80000003d000013470000013d0000058b001001980000000001000019000000010100c039000000010210018f0000066b0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d000102b50000003d000013230000013d0000056600100198000008680000613d0000000e0100002914760fb60000040f00000565021001970000066b0000013d000000440010008c000000bc0000413d000000000003004b000000bc0000c13d000000000202043b000005250020009c000000bc0000213d0000002303200039000000000013004b000000bc0000813d0000000403200039000000000334034f000000000303043b000800000003001d000005250030009c000000bc0000213d000700240020003d000000080200002900000005022002100000000702200029000000000012004b000000bc0000213d000000000206043b000005250020009c000000bc0000213d0000002303200039000000000013004b000000bc0000813d0000000403200039000000000334034f000000000303043b000e00000003001d000005250030009c000000bc0000213d000600240020003d0000000e0200002900000005022002100000000602200029000000000012004b000000bc0000213d14760f850000040f0000000e02000029000000080020006b00000be20000c13d0000000002000019000b00000002001d000000080020006c000002810000813d0000000b010000290000000502100210000d00000002001d0000000701200029000c00020000036b0000000201100367000000000101043b000e00000001001d00000000001004350000000301000039000102f70000003d000013770000013d0000000d0300002900000006023000290000000c0220035f000000000202043b000d00000002001d0000059c0020009c000008f00000813d000000000101041a000c00000001001d14760f850000040f000103030000003d000013ee0000013d000000000101041a0000056600100198000008680000613d000005670010019800000a990000c13d0000000c01000029000c05210010019c000000400200003900000a970000613d0000000d01000029000d05650010019c000000ff0000613d0000000301000039000000200010043f0000000001000019147612e70000040f000000000101041a0000052101100197000a00000001001d0000000c0010006b0000031b0000613d0001031a0000003d000014440000013d00000c920000613d0000000e01000029147611bd0000040f0000000d0010006b00000c8c0000213d000103210000003d000013e50000013d0000000201100039000000000201041a00000080032002700000000d03300029000005650030009c000004860000213d00000565022001970000008003300210000000000223019f0001032c0000003d000014230000013d000000020110003914760df10000040f0000000a04000039000000002301043400000565033001970000004001100039000000000101043300000565011001970000000001130049000005650010009c000004860000213d00000000020204330000056502200197000000000012004b000003460000413d0001033d0000003d000014170000013d000000000201041a0000056b022001970000056c022001c7000000000021041b000103430000003d000013e50000013d000000000201041a0000056d02200197000000000021041b000103480000003d000014170000013d000000000101041a0000052101100197000900000001001d0000000c020000290000000d03000029147611d70000040f000000400100043d0000000d0200002900000000002104350000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000004030000390000056f040000410000000e050000290000000c060000290000000907000029147613190000040f0000000100200190000000bc0000613d000103650000003d0000141f0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d00000000010004110000000a02000029000000000021004b000003a50000613d000000000020043500000009010000390001037c0000003d000013770000013d0000000a04000029000000000101041a000000ff00100190000003a50000613d000000400300043d00000064013000390000000d02000029000000000021043500000044013000390000000c020000290000000000210435000000240130003900000000020004110000000000210435000005710100004100000000001304350001038e0000003d000014130000013d0000000001000414000000040040008c000003950000613d0000000002040019000103940000003d000014030000013d000007dd0000613d000103970000003d000013b60000013d000005250020009c0000092b0000213d00000001004001900000092b0000c13d000000400020043f000000200010008c000000bc0000413d00000000010304330000057200100198000000bc0000c13d0000057301100197000005710010009c0000000a0200002900000bf60000c13d0000000b020000290000000102200039000002e80000013d000001640010008c000000bc0000413d000000000003004b000000bc0000c13d14760f850000040f000000400100043d000005870010009c0000092b0000213d0000010002100039000000400020043f00000002020003670000000403200370000000000303043b000005210030009c000000bc0000213d00000000033104360000002404200370000000000404043b000005210040009c000000bc0000213d00000000004304350000004403200370000000000303043b000005650030009c000000bc0000213d000000400410003900000000003404350000006403200370000000000303043b000005210030009c000000bc0000213d000000600410003900000000003404350000008403200370000000000303043b000000000003004b0000000004000019000000010400c039000000000043004b000000bc0000c13d00000080041000390000000000340435000000a403200370000000000303043b000000000003004b0000000004000019000000010400c039000000000043004b000000bc0000c13d000000a004100039000000000034043500000000030000310000057b0030009c000000bc0000213d000001240030008c000000bc0000413d000000400400043d000005850040009c0000092b0000213d0000006005400039000000400050043f000000c405200370000000000505043b000005820050009c000000bc0000213d0000000005540436000000e406200370000000000606043b000005820060009c000000bc0000213d00000000006504350000010405200370000000000505043b000005820050009c000000bc0000213d00000040064000390000000000560435000000c0051000390000000000450435000001640030008c000000bc0000413d000000400300043d000005220030009c0000092b0000213d0000004004300039000000400040043f0000012404200370000000000404043b000005210040009c000000bc0000213d000000000443043600000144022003700000071b0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000202043b000000e001000039000000400010043f000000800000043f000000a00000043f000000c00000043f000e00000002001d0000000000200435000104130000003d0000133f0000013d0000056600200198000008680000613d000000000101041a000e00000001001d0000000b010000390001041a0000003d000013470000013d000d00000001001d0000000a010000390001041e0000003d000013770000013d0000000e02000029000000a0022002700000058202200197000000000101041a0000014003000039000000400030043f000000e00020043f0000000d020000290000058202200197000001000020043f000000c8011002700000058201100197000001200010043f000000e001000039000000000203001914760d290000040f00000060020000390000014001000039000008730000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000005210010009c000000bc0000213d000000000001004b000009710000c13d0000059a01000041000007bc0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000602043b000005210060009c000000bc0000213d000000000200041a00000521012001970000000005000411000000000051004b000009760000c13d0000052a01200197000000000161019f000000000010041b00000000010004140000051f0010009c0000051f01008041000000c0011002100000052b011001c70000800d0200003900000003030000390000052c0400004100000acf0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d0001045c0000003d000013230000013d0000056600100198000008680000613d0000000b01000039000104610000003d000013470000013d0000079c0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000005210010009c000000bc0000213d000000000200041a00000521022001970000000005000411000000000052004b0000097a0000c13d00000521011001970000000802000039000000000302041a0000052a04300197000000000414019f000000000042041b0000052102300197000000800020043f000000a00010043f00000000010004140000051f0010009c0000051f01008041000000c00110021000000596011001c70000800d0200003900000002030000390000059704000041147613190000040f0000000100200190000000bc0000613d0000000701000039000000000101041a000000000001004b00000a7a0000c13d0000052e01000041000000000010043500000011010000390000092e0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000104900000003d000014710000013d000104920000003d000013230000013d0000056600100198000008680000613d0000000e0100002914760ef60000040f000000070110018f000000040010008c00000a990000613d000000030010008c000009ce0000613d000000020010008c0000000e03000029000009d00000c13d0000058e010000410000000000100435000000040030043f0000092f0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000202043b000005250020009c000000bc0000213d0000002303200039000000000013004b000000bc0000813d0000000403200039000000000334034f000000000303043b000700000003001d000005250030009c000000bc0000213d000600240020003d000000070200002900000005022002100000000602200029000000000012004b000000bc0000213d14760f850000040f0000000002000019000b00000002001d000000070020006c000002810000813d0000000b01000029000000050110021000000006011000290000000201100367000000000101043b000e00000001001d14760f850000040f000104c60000003d000014690000013d000104c80000003d000013770000013d0000000102100039000000000202041a0000056600200198000008680000613d000005670020019800000a990000c13d000000000301041a0000058c0030009c00000000020004110000000e01000029000009a50000813d0000052103300197000000000032004b00000bd90000c13d000104d80000003d000014560000013d00000000010000190000004002000039147612e70000040f000000020110003914760df10000040f0000000d020000290000056502200197000900000001001d0000000031010434000a00000003001d0000056501100197000c00000002001d000000000012004b00000aa80000813d000104e80000003d0000137c0000013d0000058b00200198000009da0000613d0000000a0300002900000000030304330000056503300197000800000003001d0000000c03300069000a00000003001d000005650030009c0000000a04000039000004860000213d000000090300002900000000030304330000000d0330006a000d05650030019b00000579022001970000058c022001c7000104fb0000003d000014230000013d000000000201041a0000056d02200197000000000021041b0000000c02000029000000080020006c000005070000c13d000105030000003d000013ee0000013d000000000201041a0000056b022001970000056c022001c7000000000021041b000105090000003d000014690000013d0001050b0000003d000013770000013d0000000301100039000000000201041a0000058f022001970000000d022001af000000000021041b000105120000003d000014690000013d000105140000003d000013850000013d000900000001001d0000000301000039000105180000003d000014360000013d0001051a0000003d000014690000013d0001051c0000003d000013770000013d00000009020000290000052102200197000900000002001d0000000101100039000000000101041a0000052101100197000800000001001d0000000d03000029147611d70000040f000000400100043d00000040021000390000000a030000290001052a0000003d000014480000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000000c02000029000005210620019700000590011001c70000800d02000039000000040300003900000591040000410000000905000029000c00000006001d0000000807000029147613190000040f0000000100200190000000bc0000613d000105400000003d0000141f0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d0000000c0100002900000000001004350000000901000039000105540000003d000013850000013d000000ff001001900000057b0000613d000000400300043d00000064013000390000000a02000029000000000021043500000044013000390000000d02000029000000000021043500000024013000390000000902000029000000000021043500000592010000410000000000130435000105640000003d000014130000013d00000000010004140000000c02000029000000040020008c0000056b0000613d0001056a0000003d000014030000013d000007dd0000613d0001056d0000003d000013b60000013d000005250020009c0000092b0000213d00000001004001900000092b0000c13d000000400020043f000000200010008c000000bc0000413d00000000010304330000057200100198000000bc0000c13d0000057301100197000005920010009c0000000c0200002900000bf60000c13d0000000b020000290000000102200039000004ba0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000202043b000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f0000026001000039000000400010043f000002000000043f000002200000043f000002400000043f0000020001000039000001c00010043f000001e00000043f000e00000002001d0000000000200435000105990000003d0000133f0000013d0000056600200198000008680000613d000003a003000039000000400030043f000000000301041a0000052104300197000002600040043f000000a0043002700000058204400197000002800040043f000000c8043002700000058204400197000002a00040043f0000058b003001980000000004000019000000010400c039000002c00040043f000005790030009c00000000030000190000000103002039000002e00030043f0000052103200197000003000030043f00000567002001980000000003000019000000010300c039000003200030043f0000000103000039000003400030043f00000584002001980000000002000019000000010200c039000003600020043f000000020110003914760df10000040f000003800010043f0000000e0100002914760ef60000040f000000020010008c000005c20000c13d000002c00000043f000003000100043d000d00000001001d000003800100043d000900000001001d0000000e0100002900000000001004350000000b01000039000105cb0000003d000013470000013d000400000001001d000002c00100043d000e00000001001d000002a00100043d000800000001001d000003200100043d000700000001001d000003400100043d000500000001001d000003600100043d000300000001001d0000000301000039000105d90000003d000013850000013d000b00000001001d000002600100043d000c00000001001d000002800100043d000a00000001001d000002e00100043d000600000001001d000000400100043d000200000001001d14760d350000040f00000004010000290000058201100197000000020d0000290000016002d0003900000000001204350000014003d0003900000009010000290000000000130435000000030000006b0000000001000019000000010100c0390000012004d000390000000000140435000000050000006b0000000001000019000000010100c0390000010005d000390000000000150435000000070000006b0000000001000019000000010100c039000000e006d00039000000000016043500000008010000290000058201100197000000c007d0003900000000001704350000000d010000290000052101100197000000a008d000390000000000180435000000060000006b0000000001000019000000010100c0390000008009d0003900000000001904350000000e0000006b0000000001000019000000010100c039000000600ad0003900000000001a04350000000a010000290000058201100197000000400bd0003900000000001b04350000000b010000290000052101100197000000200cd00039000000000e0d001900000000001c04350000000c01000029000005210d1001970000000000de0435000000400100043d000000000dd10436000000000c0c0433000005210cc001970000000000cd0435000000000b0b0433000005820bb00197000000400c1000390000000000bc0435000000000a0a043300000000000a004b000000000a000019000000010a00c039000000600b1000390000000000ab04350000000009090433000000000009004b0000000009000019000000010900c039000000800a10003900000000009a043500000000080804330000052108800197000000a009100039000000000089043500000000070704330000058207700197000000c00810003900000000007804350000000006060433000000000006004b0000000006000019000000010600c039000000e00710003900000000006704350000000005050433000000000005004b0000000005000019000000010500c039000001000610003900000000005604350000000004040433000000000004004b0000000004000019000000010400c039000001200510003900000000004504350000000003030433000000005403043400000565044001970000014006100039000000000046043500000000040504330000056504400197000001600510003900000000004504350000004003300039000000000303043300000565033001970000018004100039000000000034043500000000020204330000058202200197000001a0031000390000000000230435000001c002000039000008730000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d000106630000003d000013230000013d0000056600100198000008680000613d0000000e0100002914760ef60000040f000000020110008a000000030010008c00000000020000190000000102004039000000400100043d0000000000210435000008720000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000106740000003d000013340000013d0000056600200198000008680000613d000000000101041a000000c8011002700000079c0000013d000000000003004b000000bc0000c13d00000002030000390001067e0000003d000013dc0000013d000000000662013f0000000100600190000008f30000613d0000052e0100004100000000001004350000002201000039000000040010043f00000024020000390000000001000019147612d50000040f000000440010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b0000000002010019000005210010009c000000bc0000213d000000000306043b000000000003004b0000000001000019000000010100c039000e00000003001d000000000013004b000000bc0000c13d0000000003020019000000000003004b000009dc0000c13d0000058a01000041000007bc0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000106a20000003d000013340000013d0000056600200198000008680000613d0000000201100039000008030000013d000001440010008c000000bc0000413d000000000003004b000000bc0000c13d14760f850000040f000000400500043d000005850050009c0000092b0000213d0000006001500039000000400010043f0000004001500039000d00000001001d00000000000104350000002001500039000c00000001001d000000000001043500000000000504350000800b0100003900000004030000390000000004000415000000100440008a00000005044002100000058602000041000e00000005001d147612fb0000040f00000582021001970000000e03000029000000000903001900000000002304350000000202000367000000c403200370000000000303043b000005820030009c000000bc0000213d000000000003004b000006ce0000613d000000000313001900000582033001970000000c040000290000000000340435000000e403200370000000000303043b000005820030009c000008f00000213d000000000113001900000582011001970000000d0300002900000000001304350000000401200370000000000301043b000005210030009c000008f00000213d0000002401200370000000000401043b000005210040009c000008f00000213d0000004401200370000000000501043b000005650050009c000008f00000213d0000006401200370000000000701043b000005210070009c000008f00000213d0000008401200370000000000601043b000000000006004b0000000001000019000000010100c039000000000016004b000008f00000c13d000000a401200370000000000801043b000000000008004b0000000001000019000000010100c039000000000018004b000008f00000c13d000000400100043d000005870010009c000000000a0900190000092b0000213d00000521033001970000052104400197000005650550019700000521077001970000010009100039000000400090043f000000c0091000390000000000a90435000000a009100039000000000089043500000080081000390000000000680435000000600610003900000000007604350000004006100039000000000056043500000020051000390000000000450435000000000031043500000000030000310000057b0030009c000008f00000213d000001440030008c000008f00000413d000000400300043d000005220030009c0000092b0000213d0000004004300039000000400040043f0000010404200370000000000404043b000005210040009c000008f00000213d00000000044304360000012402200370000000000202043b0000000000240435000000e002100039000000000032043514760fe70000040f0000081e0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d000107290000003d000013230000013d0000056600100198000008680000613d0000000e0100002914760ef60000040f0000081e0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d000107360000003d000013230000013d0000056600100198000008680000613d00000584001001980000083a0000013d000000840010008c000000bc0000413d000000000003004b000000bc0000c13d000000000502043b000005210050009c000000bc0000213d000000000206043b000005210020009c000000bc0000213d0000006403400370000000000603043b000005250060009c000000bc0000213d0000002303600039000000000013004b000000bc0000813d0000000408600039000000000384034f000000000303043b000005250030009c0000092b0000213d0000001f09300039000000200a00008a0000000009a9016f0000003f099000390000000009a9016f000005830090009c0000092b0000213d0000008009900039000000400090043f000000800030043f00000000063600190000002406600039000000000016004b000000bc0000213d0000002001800039000000000114034f0000001f0430018f000000050630027200000005066002100000076b0000613d000000a008000039000000a009600039000000000a01034f00000000ab0a043c0000000008b80436000000000098004b000007670000c13d000000000004004b000007790000613d000000000161034f0000000304400210000000a006600039000000000806043300000000084801cf000000000848022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000181019f0000000000160435000000a0013000390000000000010435000000000307043b00000080040000390000000001050019000002800000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000107860000003d000013230000013d00000566001001980000083a0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d0001078e0000003d000013340000013d0000056600200198000008680000613d000000000101041a0000086f0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000107980000003d000013340000013d0000056600200198000008680000613d000000000101041a000000a0011002700000058201100197000008700000013d000000440010008c000000bc0000413d000000000003004b000000bc0000c13d000107a40000003d0000145d0000013d000005210010009c000000bc0000213d14760f850000040f0000000e01000029000107aa0000003d000013230000013d0000056600100198000008680000613d0000000301000039000107af0000003d000013470000013d00000521011001970000000002000411000000000012004b000009fa0000c13d0000000e01000029147611bd0000040f000c00000001001d000000000001004b00000a8c0000c13d0000000d01000029000000000001004b00000aaa0000c13d00000581010000410000000000100435000000040000043f0000092f0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d14760e630000040f0000000801000039000000000201041a000000400300043d0000057a01000041000000000013043500000004013000390000000004000410000000000041043500000024013000390000000e04000029000000000041043500000000010004140000052102200197000000040020008c000008a30000613d000000440400003900000000050300190000000006000019000e00000003001d14760ce40000040f0000000e03000029000000000001004b000008a30000c13d0000000303000367000000400100043d00000001020000310000001f0420018f00000005052002720000000505500210000007eb0000613d0000000006510019000000000703034f0000000008010019000000007907043c0000000008980436000000000068004b000007e70000c13d000000000004004b000007f90000613d000000000353034f00000000055100190000000304400210000000000605043300000000064601cf000000000646022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000363019f0000000000350435147612d50000040f000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000108000000003d000013340000013d0000056600200198000008680000613d0000000301100039000000000101041a0000056501100197000008700000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d0001080c0000003d000013340000013d0000056600200198000008680000613d0000000201100039000000000101041a0000008001100270000008700000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d0001081a0000003d000013230000013d0000056600100198000008680000613d0000000e01000029147611bd0000040f000000400300043d000000000013043500000020020000390000000001030019000008730000013d000000440010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000005210010009c000000bc0000213d000000000206043b000e00000002001d000005210020009c000000bc0000213d00000000001004350000000601000039000108320000003d000013c10000013d0000000e020000290000000000200435000000200010043f00000000010000190000004002000039147612e70000040f000000000101041a000000ff001001900000000001000019000000010100c039000008700000013d000000440010008c000000bc0000413d000000000003004b000000bc0000c13d000108430000003d0000145d0000013d000005210010009c000000bc0000213d0000000e01000029147611bd0000040f000c00000001001d14760f850000040f0000000e010000290001084c0000003d000013230000013d0000056600100198000008680000613d000005670010019800000a990000c13d0000000d0000006b0000000e0200002900000a9b0000c13d000005770100004100000a9e0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000000000102043b000e00000001001d0001085d0000003d000013230000013d0000056600100198000008680000613d0000086f0000013d000000240010008c000000bc0000413d000000000003004b000000bc0000c13d000108660000003d000013340000013d0000056600200198000009080000c13d000005780100004100000000001004350000000e010000290000092e0000013d000000000003004b000000bc0000c13d000000000100041a0000052101100197000000800010043f000000800100003900000020020000390000000003000019147612dd0000040f000000200020008c000008850000413d00000000009004350000001f03c000390000000503300270000005260330009a0000002000c0008c00000527030040410000001f022000390000000502200270000005260220009a000000000023004b000008850000813d000000000003041b0000000103300039000008800000013d0000001f00c0008c000000010a00008a0000090d0000a13d000c00000007001d000d00000006001d000000000090043500000020020000390000000001000019000e00000005001d000b00000008001d000a0000000c001d00090000000d001d147612e70000040f000000200900003900000009070000290000000a06000029000000200b00008a0000000b080000290000000e050000290000000002b6016f0000000003000019000000000023004b0000000004790019000009180000813d0000000004040433000000000041041b0000002003300039000000200990003900000001011000390000089a0000013d000000030100036700000001020000310000001f0920018f00000005042002720000000504400210000008b00000613d0000000005430019000000000601034f0000000007030019000000006806043c0000000007870436000000000057004b000008ac0000c13d000000000009004b000008be0000613d000000000141034f00000000044300190000000306900210000000000504043300000000056501cf000000000565022f000000000101043b0000010006600089000000000161022f00000000016101cf000000000151019f00000000001404350000001f01200039000000200900008a000000000491016f0000000001340019000000000041004b00000000040000190000000104004039000005250010009c0000092b0000213d00000001004001900000092b0000c13d000000400010043f0000057b0020009c000008f00000213d000000200020008c000008f00000413d0000000004030433000005250040009c000008f00000213d000000000532001900000000023400190000001f04200039000000000054004b00000000060000190000057c060080410000057c044001970000057c07500197000000000874013f000000000074004b00000000040000190000057c040040410000057c0080009c000000000406c019000000000004004b000008f00000c13d0000000042020434000005250020009c0000092b0000213d0000001f06200039000000000696016f0000003f06600039000000000396016f0000000003130019000005250030009c0000092b0000213d000000400030043f00000000032104360000000006420019000000000056004b00000bf80000a13d00000000010000190000000002000019147612d50000040f000000800010043f000000000005004b0000097f0000c13d000001000100008a000000000112016f000000a00010043f000000000004004b000000c004000039000000a004006039000000800240008a000000800100003914760d400000040f0000002001000039000000400200043d000e00000002001d0000000002120436000000800100003914760d050000040f0000000e030000290000000002310049000008210000013d000000000101041a000005790010009c00000000010000190000000101002039000008700000013d00000000000c004b0000000002000019000009110000613d00000000020104330000000301c0021000000000011a022f0000000001a1013f000000000112016f0000000102c00210000000000121019f000009270000013d000000000062004b000000010a00008a000009220000813d0000000302600210000000f80220018f00000000022a022f0000000002a2013f0000000003040433000000000223016f000000000021041b000000010160021000000001011001bf00000001090000390000000d060000290000000c07000029000000000019041b0000000009050433000005250090009c000009310000a13d0000052e0100004100000000001004350000004101000039000000040010043f0000052f0100004100001478000104300000000204000039000000000204041a000000010020019000000001012002700000007f0110618f0000001f0010008c00000000030000190000000103002039000000000232013f0000000100200190000000dc0000c13d000000200010008c0000098a0000413d00000000004004350000001f029000390000000502200270000005280220009a000000200090008c00000529020040410000001f011000390000000501100270000005280110009a000000000012004b0000098a0000813d000000000002041b0000000102200039000009470000013d00000000010004140000051f0010009c0000051f01008041000000c0011002100000052b011001c70000800d020000390000000403000039000005a6040000410000000e060000290000000d07000029147613190000040f0000000100200190000000bc0000613d0000000d01000029000000000010043500000005010000390001095e0000003d0000134d0000013d0000052a022001970000000e022001af000000000021041b000002810000013d00000595020000410000000000200435000000040010043f000000240030043f00000aa60000013d000109690000003d000014440000013d000009fe0000c13d0000057d0100004100000000001004350000000e01000029000000040010043f0000000001000411000000240010043f00000aa60000013d00000000001004350000000401000039000109750000003d000013c10000013d000001720000013d00000595020000410000000000200435000000040010043f0000097d0000013d00000595010000410000000000100435000000040020043f000000240050043f00000aa60000013d000000000030043500000529020000410000000003000019000000a004300039000000000013004b000008fc0000813d000000000502041a000000000054043500000001022000390000002003300039000009820000013d0000052106600197000005210370019700000020020000390000001f0090008c00000a3a0000a13d000b00000003001d000c00000006001d00000000004004350000000001000019000e00000005001d000d00000009001d147612e70000040f0000000d070000290000000e06000029000000200200008a000000000227016f00000020030000390000000004000019000000000024004b000000000563001900000a450000813d0000000005050433000000000051041b0000002004400039000000200330003900000001011000390000099c0000013d0000058d0200004100000000002004350000092e0000013d000000000200001900000080030000390000000000230435000008200000013d000005a001000041000000800010043f000005a101000041000000840010043f00000000010004140000000e02000029000000040020008c000009bb0000613d000000240400003900000080030000390000002006000039000000000503001914760ce40000040f000000000001004b000007dd0000613d0000000101000031000000200010008c00000020010080390000001f01100039000000600110018f00000080011001bf000d00000001001d000000400010043f000000bc0000413d000000800100043d000000000001004b0000000002000019000000010200c039000000000021004b000000bc0000c13d000000000001004b00000b4b0000c13d000005a301000041000008690000013d0000058d01000041000008690000013d00000000003004350000000a01000039000109d40000003d0000134d0000013d00000521032001970000000004000411000000000034004b00000aa10000c13d0000058b0020019800000ab00000c13d0000059301000041000008690000013d000000000100041100000000001004350000000601000039000109e10000003d0000146d0000013d000d00000003001d147612e70000040f0000000d020000290000000000200435000109e70000003d000013770000013d000001000200008a000000000301041a000000000223016f0000000e04000029000000ff0340018f000000000232019f000000000021041b000000800040043f00000000010004140000051f0010009c0000051f01008041000000c00110021000000588011001c70000800d020000390000000303000039000005890400004100000000050004110000000d0600002900000acf0000013d0000057d0100004100000000001004350000000e0100002900000a770000013d0000000e0200002900000000002004350000000301000039000000200010043f000000400100043d00000000002104350000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d0000000e010000290000000000100435000000030100003900010a180000003d000013470000013d000d05210010019c00000a220000613d000000050100003900010a1d0000003d0000134d0000013d0000052a02200197000000000021041b0000000d0100002900010a220000003d0000138b0000013d0000000e010000290000000000100435000000030100003900010a270000003d0000134d0000013d0000052a02200197000000000021041b00000000010004140000051f0010009c0000051f01008041000000c0011002100000052b011001c70000800d0200003900000004030000390000059d040000410000000d0500002900000000060000190000000e07000029147613190000040f0000000100200190000000bc0000613d0000000d0000006b000002810000c13d00000aae0000013d000000000009004b000000000100001900000a3e0000613d0000000001080433000000030290021000000000022a022f0000000002a2013f000000000121016f0000000102900210000000000121019f00000a540000013d000000000072004b00000a4f0000813d0000000302700210000000f80220018f000000010300008a000000000223022f000000000232013f0000000003050433000000000223016f000000000021041b000000010170021000000001011001bf00000002040000390000000c060000290000000b03000029000000000014041b000000000100041a0000052a01100197000000000161019f000000000010041b0000000801000039000000000201041a0000052a02200197000000000232019f000000000021041b00000000010004140000051f0010009c0000051f01008041000000c0011002100000052b011001c70000800d0200003900000003030000390000052c040000410000000005000019147613190000040f00000001002001900000000102000039000000bc0000613d0000000701000039000000000021041b000000800100043d000001400000044300000160001004430000002001000039000001000010044300000120002004430000052d01000041000014770001042e0000057d030000410000000000300435000000040010043f000000240020043f00000aa60000013d000000010110008a000000400200043d00000020032000390000000000130435000000010300003900000000003204350000051f0020009c0000051f02008041000000400120021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f00000598011001c70000800d02000039000005990400004100000acf0000013d14760f850000040f0000000e0100002900010a900000003d000013230000013d0000056600100198000008680000613d000005670010019800000a990000c13d0000000001000411000000000001004b00000be80000c13d0000057701000041000008690000013d0000056801000041000008690000013d0000000c0000006b00000ad30000c13d00000576010000410000000000100435000000040020043f0000092f0000013d0000057d0100004100000000001004350000000e01000029000000040010043f000000240040043f0000057e0100004100001478000104300000058e01000041000008690000013d0000000e0200002914760f250000040f000005210110019800000b360000c13d0000058001000041000008690000013d0000056d02200197000000000021041b000000400100043d000d00000001001d00000000010004140000051f0010009c0000051f01008041000000c0011002100000052b011001c70000800d02000039000000020300003900000594040000410000000e05000029147613190000040f0000000100200190000000bc0000613d0000000e010000290000000d0200002900000000001204350000051f0020009c0000051f02008041000000400120021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d000002810000013d000000030100003900010ad60000003d000013470000013d0000052101100197000b00000001001d0000000d0010006b00000add0000613d00010adc0000003d000014440000013d00000b460000613d0000000e01000029147611bd0000040f0000000c0010006b00000c050000213d00010ae30000003d0000135d0000013d000005650030009c000004860000213d000005650220019700010ae80000003d0000136a0000013d00000565033001970000004001100039000000000101043300000565011001970000000001130049000005650010009c000004860000213d00000000020204330000056502200197000000000012004b00000afc0000413d00010af50000003d000013530000013d0000056b022001970000056c022001c7000000000021041b00010afa0000003d0000137c0000013d0000056d02200197000000000021041b0000000e0100002900010aff0000003d000013230000013d0000052101100197000a00000001001d0000000d0200002900010b040000003d000013fd0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000004030000390000056f040000410000000e050000290000000d060000290000000a07000029147613190000040f0000000100200190000000bc0000613d00010b180000003d0000141f0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d00000000010004110000000b0010006c00000b390000613d0000000b010000290000000000100435000000090100003900010b2f0000003d000013c10000013d000000400200043d000a00000002001d000000000101041a000000ff0010019000000c970000c13d0000000a0100002900000b3a0000013d0000000002000411000000000021004b00000bdc0000c13d000000400100043d0000000c020000290000066c0000013d000000030100003900010b3f0000003d000013470000013d0000052101100197000b00000001001d0000000d0010006b00000b630000613d00010b450000003d000014440000013d00000b630000c13d000005690100004100010b490000003d000013f70000013d0000000d0100002900000c0b0000013d0000000e010000290000000000100435000000090100003900010b500000003d0000134d0000013d000001000300008a000000000232016f00000001022001bf000000000021041b0000000d010000290000000e020000290000000000210435000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d020000390000000203000039000005a204000041000000000500041100000acf0000013d0000000e01000029147611bd0000040f0000000c0010006b00000c050000213d00010b690000003d0000135d0000013d000005650030009c000004860000213d000005650220019700010b6e0000003d0000136a0000013d00000565033001970000004001100039000000000101043300000565011001970000000001130049000005650010009c000004860000213d00000000020204330000056502200197000000000012004b00000b820000413d00010b7b0000003d000013530000013d0000056b022001970000056c022001c7000000000021041b00010b800000003d0000137c0000013d0000056d02200197000000000021041b0000000e0100002900010b850000003d000013230000013d0000052101100197000a00000001001d0000000d0200002900010b8a0000003d000013fd0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000004030000390000056f040000410000000e050000290000000d060000290000000a07000029147613190000040f0000000100200190000000bc0000613d00010b9e0000003d0000141f0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d00000000010004110000000b0010006c000002810000613d0000000b0100002900010bb30000003d000013950000013d000002810000613d000000400300043d00010bb70000003d000013d00000013d00000571010000410000000000130435000d00000003001d00010bbc0000003d000014130000013d00000000010004140000000b02000029000000040020008c00000bc80000613d000000840400003900000020060000390000000b020000290000000d03000029000000000503001914760cc10000040f000000000001004b000007dd0000613d00010bca0000003d000013ab0000013d000005250020009c0000092b0000213d00000001003001900000092b0000c13d000000400020043f000000200010008c000000bc0000413d0000000d0100002900000000010104330000057200100198000000bc0000c13d0000057301100197000005710010009c000002810000613d00000cbd0000013d0000057d0200004100000000002004350000096d0000013d0000057f0200004100000000002004350000000002000411000000040020043f0000000e0200002900000c0a0000013d0000059b0100004100000000001004350000000801000029000000040010043f0000000e010000290000096f0000013d000000030100003900010beb0000003d000013470000013d000b05210010019b00000000010004110000000b0010006c00000c010000613d00010bf10000003d000014440000013d00000c010000c13d000005690100004100010bf50000003d000013f70000013d00000c0b0000013d000005740100004100000a9e0000013d0000000005000019000000000025004b00000c0e0000813d0000000006350019000000000745001900000000070704330000000000760435000000200550003900000bf90000013d0000000e01000029147611bd0000040f0000000c0010006b00000c150000a13d000005750200004100000000002004350000000e02000029000000040020043f0000000c02000029000000240020043f000000440010043f0000056a010000410000147800010430000000000232001900000000000204350000002002000039000000400300043d000e00000003001d0000000002230436000009040000013d00010c170000003d0000135d0000013d000005650030009c000004860000213d000005650220019700010c1c0000003d0000136a0000013d00000565033001970000004001100039000000000101043300000565011001970000000001130049000005650010009c000004860000213d00000000020204330000056502200197000000000012004b00000c300000413d00010c290000003d000013530000013d0000056b022001970000056c022001c7000000000021041b00010c2e0000003d0000137c0000013d0000056d02200197000000000021041b0000000e0100002900010c330000003d000013230000013d0000052101100197000a00000001001d000000000200041100010c380000003d000013fd0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000004030000390000056f040000410000000e0500002900000000060004110000000a07000029147613190000040f0000000100200190000000bc0000613d00010c4c0000003d0000141f0000013d0000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f0000000100200190000000bc0000613d00000000010004110000000b0010006c000007b80000613d0000000b0100002900010c610000003d000013950000013d000007b80000613d000000400300043d00000064013000390000000c0200002900000000002104350000004401300039000000000200041100000000002104350000002401300039000000000021043500000571010000410000000000130435000a00000003001d00010c700000003d000014130000013d00000000010004140000000b02000029000000040020008c00000c770000613d00010c760000003d0000140b0000013d000007dd0000613d00010c790000003d0000142f0000013d0000000a02300029000000000032004b00000000030000190000000103004039000005250020009c0000092b0000213d00000001003001900000092b0000c13d000000400020043f000000200010008c000000bc0000413d0000000a0100002900000000010104330000057200100198000000bc0000c13d0000057301100197000005710010009c000007b80000613d00000cbd0000013d000005750200004100000000002004350000000e02000029000000040020043f0000000d0200002900000c0a0000013d000005690100004100010c950000003d000013f70000013d0000000c0100002900000c0b0000013d0000000a0300002900010c9a0000003d000013d00000013d0000057101000041000000000013043500010c9e0000003d000014130000013d00000000010004140000000b02000029000000040020008c00000ca50000613d00010ca40000003d0000140b0000013d000007dd0000613d0000000102000031000000200020008c000000200100003900000000010240190000001f01100039000000600310018f0000000a01300029000000000031004b00000000030000190000000103004039000005250010009c0000092b0000213d00000001003001900000092b0000c13d000000400010043f000000200020008c000000bc0000413d0000000a0200002900000000020204330000057200200198000000bc0000c13d0000057302200197000005710020009c00000b3a0000613d000005740100004100000000001004350000000b010000290000092e0000013d0003000000000002000300000006001d000200000005001d0000051f0030009c0000051f0300804100000040033002100000051f0040009c0000051f040080410000006004400210000000000334019f0000051f0010009c0000051f01008041000000c001100210000000000113019f147613190000040f000000020a000029000000000301001900000060033002700000051f0330019700010cd60000003d0000144f0000013d00000cde0000613d00000000065a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b00000cda0000c13d000000010220018f000000000004004b00000ce30000613d00010ce30000003d0000139e0000013d0000142b0000013d0003000000000002000300000006001d000200000005001d00000060044002100000051f0010009c0000051f01008041000000c00110021000000000011400190000051f0030009c0000051f030080410000004003300210000000000131019f1476131e0000040f000000020a000029000000000301001900000060033002700000051f0330019700010cf70000003d0000144f0000013d00000cff0000613d00000000065a0019000000000701034f00000000080a0019000000007907043c0000000008980436000000000068004b00000cfb0000c13d000000010220018f000000000004004b00000d040000613d00010d040000003d0000139e0000013d0000142b0000013d0000002004100039000000000301043300000000013204360000000002000019000000000032004b00000d110000813d0000000005120019000000000624001900000000060604330000000000650435000000200220003900000d090000013d000000000213001900000000000204350000001f02300039000000200300008a000000000232016f0000000001210019000000000001042d0000057b0010009c00000d280000213d000000630010008c00000d280000a13d00000002030003670000000401300370000000000101043b000005210010009c00000d280000213d0000002402300370000000000202043b000005210020009c00000d280000213d0000004403300370000000000303043b000000000001042d000013da0000013d00000000430104340000058203300197000000000332043600000000040404330000058204400197000000000043043500000040022000390000004001100039000000000101043300000582011001970000000000120435000000000001042d000005ac0010009c00000d3a0000813d0000018001100039000000400010043f000000000001042d0000052e0100004100000000001004350000004101000039000000040010043f0000052f0100004100001478000104300000001f02200039000000200300008a000000000232016f0000000001120019000000000021004b00000000020000190000000102004039000005250010009c00000d4d0000213d000000010020019000000d4d0000c13d000000400010043f000000000001042d0000052e0100004100000000001004350000004101000039000000040010043f0000052f0100004100001478000104300002000000000002000200000001001d14760e630000040f00000002010000290000000000100435000000050100003900010d5b0000003d000013470000013d0000052101100197000000000001042d0005000000000002000200000001001d000305210020019c00000dd10000613d000500000003001d0000000000300435000000030100003900010d660000003d000013470000013d000005210010019800000d6c0000613d00010d6a0000003d0000132c0000013d000005840010019800000dde0000613d000000400100043d000000050200002900000000002104350000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f000000010020019000000dd00000613d00000005010000290000000000100435000000030100003900010d830000003d000013470000013d00000521031001970000000001000411000000000001004b0000000502000039000400000003001d00000da00000613d000000000013004b00000da00000613d000000000030043500010d8e0000003d000014620000013d0000052102200197000000000020043500010d920000003d000013770000013d00000005020000390000000403000029000000000101041a000000ff0010019000000da00000c13d00010d990000003d0000143d0000013d0000000403000029000000000101041a00000521011001970000000002000411000000000021004b000000050200003900000de50000c13d000000000003004b00000daa0000613d00010da40000003d0000143d0000013d000000000201041a0000052a02200197000000000021041b000000040100002900010daa0000003d0000138b0000013d00000003010000290000000000100435000000040100003900010daf0000003d0000134d0000013d0000000102200039000000000021041b000000050100002900000000001004350000000301000039000000200010043f00000000010000190000004002000039147612e70000040f000000000201041a0000052a022001970000000306000029000000000262019f000000000021041b00000000010004140000051f0010009c0000051f01008041000000c0011002100000052b011001c70000800d0200003900000004030000390000059d0400004100000004050000290000000507000029147613190000040f000000010020019000000dd00000613d000000020100002900000521011001970000000403000029000000000013004b00000dd60000c13d000000000001042d000013da0000013d00000581010000410000000000100435000000040000043f0000052f0100004100001478000104300000057f020000410000000000200435000000040010043f0000000501000029000000240010043f000000440030043f0000056a010000410000147800010430000005ad0100004100000000001004350000000501000029000000040010043f00000024020000390000000001000019147612d50000040f000000000003004b00000de90000c13d000005800100004100000ddf0000013d000005ae0100004100000000001004350000000001000411000000040010043f0000000501000029000000240010043f000000440200003900000de30000013d0000000002010019000000400100043d000005af0010009c00000e030000813d0000006003100039000000400030043f0000002003100039000000000402041a00000080054002700000000000530435000005650340019700000000003104350000000102200039000000000202041a000005650220019700000040031000390000000000230435000000000001042d0000052e0100004100000000001004350000004101000039000000040010043f0000052f0100004100001478000104300006000000000002000400000004001d000500000002001d000200000001001d000300000003001d14760d5d0000040f000600050000002d000080020100003900000024030000390000000004000415000000060440008a00000005044002100000059f02000041147612fb0000040f000000000001004b00000e510000613d000000400300043d0000006401300039000000800200003900000000002104350000004401300039000000030200002900000000002104350000000201000029000005210110019700000024023000390000000000120435000005b0010000410000000000130435000000040130003900000000020004110000000000210435000300000003001d0000008402300039000000040100002914760d050000040f0000000002010019000000000100041400000005030000290000052105300197000000040050008c00000e3d0000613d0000000303000029000000000432004900000020060000390000000002050019000500000005001d000000000503001914760cc10000040f0000000505000029000000000001004b00000e580000613d00010e3f0000003d0000142f0000013d00000003040000290000000002430019000000000032004b00000000030000190000000103004039000005250020009c00000e530000213d000000010030019000000e530000c13d000000400020043f0000001f0010008c00000e520000a13d0000000001040433000005720010019800000e520000c13d0000057301100197000005b00010009c00000e5d0000c13d000000000001042d000013da0000013d0000052e0100004100000000001004350000004101000039000000040010043f00000e600000013d147611860000040f00000005050000290000000012010434000000000002004b00000e620000c13d00000581010000410000000000100435000000040050043f0000052f010000410000147800010430147612d50000040f0002000000000002000200000001001d0000000000100435000000030100003900010e690000003d000013470000013d000005210110019800000e6c0000613d000000000001042d000005800100004100000000001004350000000201000029000000040010043f0000052f0100004100001478000104300006000000000002000300000001001d00000000001004350000000b0100003900010e780000003d000013470000013d000500000001001d0000000a0100003900010e7c0000003d000013850000013d000400000001001d0000800b0100003900000004030000390000000004000415000000060440008a00000005044002100000058602000041147612fb0000040f000000000200001900000005030000290000058203300197000000000013004b00000eec0000213d0000000405000029000000a0035002700000058203300197000000000431004b00000eec0000a13d000000c8025002700000058202200197000000000021004b00000ea60000813d000400000003001d000000010300008a0000000001040019000200000002001d000005b102000041000500000004001d1476127a0000040f00000005040000290000000203000029000000040330006a000005b1054000d1000000000151004b00000000020000190000000102004039000000000121004b00000ea90000c13d00040000003500e100000003040000290000000a0500003900000eda0000013d00010ea80000003d000013c60000013d00000eeb0000013d000400000005001d000200000001001d000000000031004b00000eee0000813d0000000001040019000005b102000041000500000003001d1476127a0000040f000000050300002900000000023000490000000002230170000000000323c0d9000000000300601900000003043000c9000000020440015f00000000053400a9000000020550008900000000044500a900000000053400a9000000020550008900000000044500a900000000053400a9000000020550008900000000044500a900000000053400a9000000020550008900000000044500a900000000053400a9000000020550008900000000044500a900000000033400a90000000203300089000000000002004b0000000105006039000000000520c049000000000525c0d9000000010550c03900000000034300a9000000040410006b0000000201000029000000010110408a00000000011500a9000000000002004b000000000224c0d9000000000200601900000003040000290000000a05000039000000000112019f00040000001300ad0000000000400435000000200050043f00000040020000390000000001000019147612e70000040f0000000201100039000000000101041a0000056502100197000500000002001d00000004010000291476120a0000040f000000050010006c00000eeb0000a13d00010ee90000003d000013c60000013d000000800210027000000eec0000013d00000565021001970000000001020019000000000001042d000005b2010000410000000000100435000000040040043f000005b101000041000000240010043f000000440030043f0000056a0100004100001478000104300004000000000002000300000001001d000000000010043500010efb0000003d0000133f0000013d000005670020019800000eff0000613d0000000401000039000000000001042d000000000101041a000005790010009c00000f230000213d000200000001001d0000800b0100003900000004030000390000000004000415000000040440008a00000005044002100000058602000041147612fb0000040f0000000202000029000000a0022002700000058202200197000000000021004b000000000100001900000efe0000413d000000030100002914760e720000040f000000030200002900000000002004350000000a02000039000000200020043f000300000001001d00000040020000390000000001000019147612e70000040f000000030200002900000565022001970000000201100039000000000101041a0000056501100197000000000012004b00000002010000390000000101004039000000000001042d0000000301000039000000000001042d0004000000000002000300000001001d000400000002001d0000000000200435000000030100003900010f2c0000003d000013c10000013d00000003020000290000052103200197000000000101041a0000052100100198000300000003001d00000f380000613d000000000003004b00000f380000613d00010f360000003d0000132c0000013d000005840010019800000f7f0000613d000000400100043d000000040200002900000000002104350000051f0010009c0000051f01008041000000400110021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000056e011001c70000800d0200003900000001030000390000057004000041147613190000040f000000010020019000000f7e0000613d00000004010000290000000000100435000000030100003900010f4f0000003d000013470000013d000205210010019c000000040200003900000f5b0000613d000000050100003900010f550000003d0000134d0000013d0000052a02200197000000000021041b000000020100002900010f5a0000003d0000138b0000013d0000000402000039000000030000006b00000f660000613d00000003010000290000000000100435000000200020043f00000040020000390000000001000019147612e70000040f000000000201041a0000000102200039000000000021041b00000004010000290000000000100435000000030100003900010f6b0000003d0000134d0000013d0000052a022001970000000306000029000000000262019f000000000021041b00000000010004140000051f0010009c0000051f01008041000000c0011002100000052b011001c70000800d0200003900000004030000390000059d0400004100000002050000290000000407000029147613190000040f000000010020019000000f7e0000613d0000000201000029000000000001042d000013da0000013d000005ad0100004100000000001004350000000401000029000000040010043f0000052f01000041000014780001043000020000000000020000000001000412000200000001001d000100000000001d000080050100003900000044030000390000000004000415000000020440008a0000000504400210000005b302000041147612fb0000040f00000521011001970000000002000410000000000012004b00000f950000c13d000000000001042d000005b4010000410000000000100435000005b50100004100001478000104300002000000000002000200000001001d0000000000100435000000030100003900010f9f0000003d000013470000013d00000521011001970000000002000411000000000012004b00000fa50000c13d0000000101000039000000000001042d000000000010043500010fa80000003d000014620000013d0000052102200197000000000020043500010fac0000003d000013850000013d000000ff0110019000000faf0000613d000000000001042d000000020100002914760d530000040f0000000002000411000000000021004b00000000010000190000000101006039000000000001042d0003000000000002000300000001001d00000000001004350000000a0100003900010fbc0000003d0000146d0000013d147612e70000040f000000020110003914760df10000040f000000030200002900000000002004350000000a02000039000000200020043f000200000001001d00000000010000190000004002000039147612e70000040f0000000102100039000000000202041a000005670020019800000fd00000613d0000000201000029000000200110003900000000010104330000056501100197000000000001042d00000002030000290000000302000029000000000101041a0000058c0010009c00000fd80000813d000000000102001914760e720000040f000000000001042d0000000001030433000005650110019700000040023000390000000002020433000005650220019700000000012100490000059c0010009c00000fe10000813d000000000001042d0000052e0100004100000000001004350000001101000039000000040010043f0000052f0100004100001478000104300019000000000002000000400200043d001500000002001d000005b60020009c000011550000813d000000400210003900000000020204330000056506200198000000e00510003900000000020504330000002002200039000000000202043300000015030000290000004004300039000000400040043f0000000003030436001300000003001d0000000000030435001100000001001d000f00000005001d0000100c0000613d000005b70020009c000011720000813d0000000001060019001400000006001d1476120a0000040f000005650110019700000013020000290000000000120435000000140610006b000011780000a13d0000059c0060009c0000117c0000813d000000150100002900000000006104350000001101000029000010170000013d000000400200043d001500000002001d000005220020009c000011550000213d00000015020000290000004003200039000000400030043f0000000002020436001300000002001d00000000000204350000000006000019000000000006004b0000115a0000613d000000c0051000390000000003050433000000002103043400000582011001980000115c0000613d000000000202043300000582022001980000102d0000613d000000000021004b000011800000813d000000400330003900000000040304330000058204400197000000000042004b0000102e0000413d000005ba010000410000000000100435000000040020043f000000240040043f000011840000013d0000004003300039001000000006001d001200000005001d0000000002030433001405820020019b000000140010006c000011600000813d0000800b0100003900000004030000390000000004000415000000190440008a00000005044002100000058602000041147612fb0000040f00000582011001970000001403000029000000000031004b000011650000813d000000400100043d000005850010009c00000011060000290000001207000029000011550000213d0000000702000039000000000902041a0000006002100039000000400020043f00000010020000290000000002210436000000400310003900000000000304350000000000020435001800600060003d0000000005070433000000400250003900000000020204330000006003600039001000000003001d0000000003030433001700800060003d0000008004600039000300000004001d0000000004040433001600a00060003d000000400a00043d000005bd00a0009c000011550000213d000000a0076000390000000086060434000e00000008001d0000000005050433000200000007001d00000000070704330000014008a00039000000400080043f0000012008a00039000d00000008001d0000000000180435000000000007004b0000000001000019000000010100c0390000010007a00039000c00000007001d0000000000170435000000e007a00039000b00000007001d000000010100003900000000001704350000052101300197000000a003a00039000a00000003001d0000000000130435000000000004004b0000000001000019000000010100c0390000006003a00039000800000003001d000000000013043500000582012001970000004002a00039000700000002001d000000000012043500000582015001970000002002a00039000500000002001d0000000000120435000005210160019700000000001a0435000000c001a00039000900000001001d00000000000104350000008001a00039000600000001001d000000000001043500000000009004350000000a010000390001108f0000003d0000146d0000013d001400000009001d00040000000a001d147612e70000040f00000004020000290000000002020433000005210220019700000005030000290000000003030433000000a003300210000005be03300197000000000223019f00000007030000290000000003030433000000c803300210000005bf03300197000000000232019f00000008030000290000000003030433000000000003004b000005c0030000410000000003006019000000000232019f00000006030000290000000003030433000000000003004b0000058c030000410000000003006019000000000232019f000000000021041b0000000a02000029000000000202043300000521022001970000000103100039000000000403041a000005c104400197000000000224019f00000009040000290000000004040433000000000004004b0000056c040000410000000004006019000000000224019f0000000b040000290000000004040433000000000004004b000005c2040000410000000004006019000000000242019f0000000c040000290000000004040433000000000004004b000005c3040000410000000004006019000000000242019f000000000023041b0000000d0200002900000000020204330000000043020434000005650330019700000000040404330000008004400210000000000334019f0000000204100039000000000034041b0000000301100039000000400220003900000000020204330000056502200197000000000301041a0000058f03300197000000000223019f000000000021041b00000012010000290000000001010433000000200110003900000000010104330000058201100198000010e60000613d000d00000001001d000000140100002900000000001004350000000b01000039000110e30000003d0000134d0000013d000005c4022001970000000d022001af000000000021041b000000140300002900000001013000390000000702000039000000000012041b0000000e010000290000000001010433000005210110019800000000020300190000116a0000613d14760f250000040f00000521001001980000116c0000c13d00000015010000290000000002010433000000100100002900000000010104330000052101100197000005650420019700000000020004110000000003000410147611ef0000040f0000001301000029000000000101043300000565041001980000000f020000290000110a0000613d0000001001000029000000000101043300000521011001970000000f020000290000000002020433000000000202043300000521032001970000000002000411147611ef0000040f0000000f02000029000000000102043300000010020000290000000002020433001000000002001d0000000e020000290000000002020433000f00000002001d00000011020000290000000002020433001100000002001d0000000001010433000e00000001001d000000120100002900000000010104330000000302000029000000000202043300000002030000290000000003030433000000400600043d001200000006001d000000200460003900000000050004110000000000540435000000140400002900000000004604350000001504000029000000000404043300000565044001970000004005600039000000000045043500000013040000290000000004040433000000000003004b0000000003000019000000010300c039000000a0056000390000000000350435000000000002004b0000000002000019000000010200c03900000080036000390000000000230435000005650240019700000060036000390000000000230435000000c00260003914760d290000040f0000000e0100002900000521011001970000001203000029000001200230003900000000001204350000051f0030009c0000051f03008041000000400130021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f000000110200002900000521052001970000000f02000029000005210620019700000010020000290000052107200197000005c6011001c70000800d020000390000000403000039000005c704000041147613190000040f0000000100200190000011710000613d0000001401000029000000000001042d0000052e0100004100000000001004350000004101000039000000040010043f0000116f0000013d000005c9010000410000115d0000013d000005c8010000410000000000100435000005b5010000410000147800010430000005bb020000410000000000200435000000040010043f0000001401000029000011760000013d000005bc020000410000000000200435000000040010043f000000240030043f000011840000013d00000581010000410000116d0000013d000005c5010000410000000000100435000000040000043f0000052f010000410000147800010430000013da0000013d000005b8010000410000000000100435000000040020043f000005a701000041000000240010043f000011840000013d0000052e0100004100000000001004350000000101000039000011580000013d0000052e0100004100000000001004350000001101000039000011580000013d000005b9030000410000000000300435000000040010043f000000240020043f0000057e0100004100001478000104300000000102000032000011b50000613d000005ca0020009c000011b70000813d0000001f01200039000000200300008a000000000131016f0000003f01100039000000000331016f000000400100043d0000000003310019000000000013004b00000000040000190000000104004039000005250030009c000011b70000213d0000000100400190000011b70000c13d000000400030043f0000001f0320018f0000000004210436000000030500036700000005022002720000000502200210000011a60000613d0000000006240019000000000705034f0000000008040019000000007907043c0000000008980436000000000068004b000011a20000c13d000000000003004b000011b60000613d000000000525034f00000000022400190000000303300210000000000402043300000000043401cf000000000434022f000000000505043b0000010003300089000000000535022f00000000033501cf000000000343019f0000000000320435000000000001042d0000006001000039000000000001042d0000052e0100004100000000001004350000004101000039000000040010043f0000052f0100004100001478000104300001000000000002000100000001001d14760fb60000040f000000010200002900000000002004350000000a02000039000000200020043f000100000001001d00000040020000390000000001000019147612e70000040f000000010200002900000565022001970000000201100039000000000101041a000000800110027000000000011200490000059c0010009c000011d10000813d000000000001042d0000052e0100004100000000001004350000001101000039000000040010043f0000052f0100004100001478000104300000000004020019000000400200043d0000002005200039000005cb0600004100000000006504350000004405200039000000000035043500000521034001970000002404200039000000000034043500000044030000390000000000320435000005cc0020009c000011e90000813d0000008003200039000000400030043f1476122c0000040f000000000001042d0000052e0100004100000000001004350000004101000039000000040010043f0000052f0100004100001478000104300000000005020019000000400200043d0000002006200039000005cd0700004100000000007604350000006406200039000000000046043500000521033001970000004404200039000000000034043500000521035001970000002404200039000000000034043500000064030000390000000000320435000005ce0020009c000012040000813d000000a003200039000000400030043f1476122c0000040f000000000001042d0000052e0100004100000000001004350000004101000039000000040010043f0000052f0100004100001478000104300002000000000002000100000002001d000200000001001d000000010300008a1476127a0000040f0000000205000029000000010400002900000000025400a9000000000121004b00000000030000190000000103004039000000000131004b000012190000c13d000005b10120012a000000000001042d000005b10010009c000012260000813d000005b13050012a000005b14040012a00000000033400a9000005b13030012a000000000232004b000000010110408a0000001202200270000000ee01100210000000000121019f000005cf011000d1000000000001042d000005d0010000410000000000100435000000040050043f000000240040043f0000057e01000041000014780001043000050000000000020000000005010019000000003402043400000000010004140000052102500197000300000002001d000000040020008c00000000020000190000123c0000613d00000003020000290000000005000019000000000600001914760cc10000040f000000000001004b00000000020000190000000102006039000400000002001d147611860000040f000000000401001900000000050004150000000032040434000000040100002900000001001001900000126a0000c13d000000000002004b000012560000c13d000500030000002d0000800201000039000400000003001d0000002403000039000200000004001d0000000004000415000000050440008a00000005044002100000059f02000041000100000005001d147612fb0000040f000000010500002900000002040000290000000403000029000000000001004b000012740000613d0000000001000415000000000115004900000000010000020000000001040433000000000001004b000012680000613d0000057b0010009c000012690000213d0000001f0010008c000012690000a13d0000000001030433000000000001004b0000000002000019000000010200c039000000000021004b000012690000c13d000000000001004b000012710000613d000000000001042d000013da0000013d0000000001030019000000000002004b000012730000c13d000005d3010000410000000000100435000005b5010000410000147800010430000005d101000041000012750000013d147612d50000040f000005d20100004100000000001004350000000301000029000000040010043f0000052f010000410000147800010430000000000003004b000012830000613d00000000203200d900000000103100d9000005650030009c000012850000213d00000000011200a900000000103100d9000000000001042d0000000001000019000000000001042d000005d40030009c000000c0040000390000008004004039000000000543022f00000040040000390000008004004039000005d50050009c000000200440808a0000002005508270000005d60050009c000000100440808a0000001005508270000001000050008c000000080440808a0000000805508270000000100050008c000000040440808a0000000405508270000000040050008c00000000060500190000000206608270000000020700008a0000000008600049000000020060008c0000000008078019000000040050008c000000020440808a00000000251200a90000000001480019000000ff0410018f00000000024201cf000000010400008a000000000441013f000000ff0440018f0000000106500270000000000446022f000000000642019f00000000021301cf000000800320027000000000983600d900000000051501cf00000080075002700000056504200197000005d70080009c000012b70000213d000000000a4800a9000000800b900210000000000b7b019f0000000000ba004b000012bb0000a13d0000000009390019000000010880008a000005650090009c000012b00000413d000005650880019700000000082800a90000008006600210000000000676019f000000000686004900000000873600d90000056505500197000005d70070009c000012c90000213d00000000094700a9000000800a800210000000000a5a019f0000000000a9004b000012cd0000a13d0000000008380019000000010770008a000005650080009c000012c20000413d000005650370019700000000022300a90000008003600210000000000353019f0000000002230049000000000112022f000000000001042d000000000001042f0000051f0010009c0000051f0100804100000040011002100000051f0020009c0000051f020080410000006002200210000000000112019f00001478000104300000051f0010009c0000051f0100804100000040011002100000051f0020009c0000051f020080410000006002200210000000000112019f000000e002300210000000000121019f000014770001042e0000051f0010009c0000051f0100804100000040011002100000051f0020009c0000051f020080410000006002200210000000000112019f00000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f0000052b011001c700008010020000391476131e0000040f0000000100200190000012fa0000613d000000000101043b000000000001042d000013da0000013d00000000050100190000000000200439000000050030008c000013090000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000013010000413d0000051f0030009c0000051f03008041000000600130021000000000020004140000051f0020009c0000051f02008041000000c002200210000000000112019f000005d8011001c700000000020500191476131e0000040f0000000100200190000013180000613d000000000101043b000000000001042d000000000001042f0000131c002104210000000102000039000000000001042d0000000002000019000000000001042d00001321002104230000000102000039000000000001042d0000000002000019000000000001042d00000000001004350000000a01000039000000200010043f00000040020000390000000001000019147612e70000040f0000000101100039000000000101041a000000010000013b0000000a01000039000000200010043f00000040020000390000000001000019147612e70000040f0000000101100039000000000101041a000000010000013b000000000102043b000e00000001001d00000000001004350000000a01000039000000200010043f00000040020000390000000001000019147612e70000040f0000000102100039000000000202041a000000010000013b0000000a01000039000000200010043f00000040020000390000000001000019147612e70000040f0000000102100039000000000202041a000000010000013b000000200010043f00000040020000390000000001000019147612e70000040f000000000101041a000000010000013b000000200010043f00000040020000390000000001000019147612e70000040f000000000201041a000000010000013b0000000e0100002900000000001004350000000a01000039000000200010043f00000040020000390000000001000019147612e70000040f0000000101100039000000000201041a000000010000013b0000000e0100002900000000001004350000000a01000039000000200010043f00000040020000390000000001000019147612e70000040f0000000a040000390000000201100039000000000201041a00000080032002700000000c03300029000000010000013b0000008003300210000000000223019f000000000021041b0000000e010000290000000000100435000000200040043f00000040020000390000000001000019147612e70000040f000000020110003914760df10000040f0000000023010434000000010000013b000000200010043f00000000010000190000004002000039147612e70000040f000000010000013b0000000e0100002900000000001004350000000a01000039000000200010043f00000000010000190000004002000039147612e70000040f000000000201041a000000010000013b000000200010043f00000000010000190000004002000039147612e70000040f000000000101041a000000010000013b00000000001004350000000401000039000000200010043f00000000010000190000004002000039147612e70000040f000000000201041a000000010220008a000000000021041b000000010000013b00000000001004350000000901000039000000200010043f00000040020000390000000001000019147612e70000040f000000000101041a000000ff00100190000000010000013b000000000651034f00000000055a00190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000000010000013b0000000101000031000000200010008c000000200200003900000000020140190000001f02200039000000600320018f0000000d02300029000000000032004b00000000030000190000000103004039000000010000013b0000000101000031000000200010008c000000200200003900000000020140190000001f02200039000000600420018f0000000002340019000000000042004b00000000040000190000000104004039000000010000013b000000200010043f00000040020000390000000001000019147612e70000040f000000010000013b000000030100002900000000001004350000000a01000039000000200010043f00000040020000390000000001000019147612e70000040f0000000201100039000000000101041a000000010000013b00000064013000390000000c02000029000000000021043500000044013000390000000d020000290000000000210435000000240130003900000000020004110000000000210435000000010000013b00000000010000190000147800010430000000000203041a000000010520019000000001012002700000007f0410018f00000000010460190000001f0010008c00000000060000190000000106002039000000010000013b0000000e0100002900000000001004350000000a01000039000000200010043f00000000010000190000004002000039147612e70000040f0000000a04000039000000010000013b0000000e0100002900000000001004350000000a01000039000000200010043f00000000010000190000004002000039147612e70000040f0000000101100039000000010000013b00000000001004350000000e01000029000000040010043f0000000001000411000000240010043f000000010000013b0000000c03000029147611d70000040f000000400100043d0000000c020000290000000000210435000000010000013b0000008404000039000e00000003001d0000000e05000029000000200600003914760cc10000040f0000000e03000029000000000001004b000000010000013b000000840400003900000020060000390000000b020000290000000a03000029000000000503001914760cc10000040f000000000001004b000000010000013b00000004013000390000000e020000290000000000210435000000010000013b0000000e010000290000000000100435000000200040043f00000000010000190000004002000039147612e70000040f0000000101100039000000010000013b000000400100043d0000000e020000290000000000210435000000010000013b000000000021041b0000000e010000290000000000100435000000200040043f00000000010000190000004002000039147612e70000040f000000010000013b000100000003001f00030000000103550000000001020019000000000001042d0000000101000031000000200010008c000000200200003900000000020140190000001f02200039000000600320018f000000010000013b000000200010043f00000000010000190000004002000039147612e70000040f000000000101041a000c00000001001d000000010000013b00000005010000290000000000100435000000200020043f00000040020000390000000001000019147612e70000040f000000010000013b0000000e0100002914760f990000040f000000000001004b000000010000013b000000000032043500000020021000390000000d0300002900000000003204350000000e020000290000000000210435000000010000013b000000030030006c000000030500002900000000050340190000001f0450018f00000005055002720000000505500210000000010000013b14760e720000040f0000000e0200002900000000002004350000000a02000039000000200020043f000d00000001001d000000010000013b000000000102043b000e00000001001d000000000106043b000d00000001001d000000010000013b0000000601000039000000200010043f00000040020000390000000001000019147612e70000040f0000000002000411000000010000013b0000000e0100002900000000001004350000000a01000039000000010000013b000000200010043f00000040020000390000000001000019000000010000013b000000000102043b000e00000001001d14760f850000040f0000000e01000029000000010000013b0000147600000432000014770001042e000014780001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf5361626c696572205632204c6f636b7570204c696e656172204e4654000000005341422d56322d4c4f434b55502d4c494e000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff4ef1d2ad89edf8c4d91132028e8195cdf30bb4b5053d4f8cd260341d4805f30ab10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a532405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5aceffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000bdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf8000000002000000000000000000000000000000800000010000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000fdd46d6000000000000000000000000000000000000000000000000000000000027b67440000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000081812fc00000000000000000000000000000000000000000000000000000000095ea7b3000000000000000000000000000000000000000000000000000000001400ecec000000000000000000000000000000000000000000000000000000001c1cdd4c000000000000000000000000000000000000000000000000000000001e99d5690000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000303acc8500000000000000000000000000000000000000000000000000000000406887cb0000000000000000000000000000000000000000000000000000000040e58ee500000000000000000000000000000000000000000000000000000000425d30dd0000000000000000000000000000000000000000000000000000000042842e0e0000000000000000000000000000000000000000000000000000000042966c680000000000000000000000000000000000000000000000000000000044267570000000000000000000000000000000000000000000000000000000004857501f000000000000000000000000000000000000000000000000000000004869e12d000000000000000000000000000000000000000000000000000000004cc55e110000000000000000000000000000000000000000000000000000000053b157270000000000000000000000000000000000000000000000000000000057404b12000000000000000000000000000000000000000000000000000000006352211e000000000000000000000000000000000000000000000000000000006d0cee750000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000075829def00000000000000000000000000000000000000000000000000000000780a82c8000000000000000000000000000000000000000000000000000000007cad6cd1000000000000000000000000000000000000000000000000000000007de6b1db000000000000000000000000000000000000000000000000000000008659c27000000000000000000000000000000000000000000000000000000000894e9a0d000000000000000000000000000000000000000000000000000000008f69b993000000000000000000000000000000000000000000000000000000009067b6770000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a22cb46500000000000000000000000000000000000000000000000000000000a80fc07100000000000000000000000000000000000000000000000000000000ab167ccc00000000000000000000000000000000000000000000000000000000ad35efd400000000000000000000000000000000000000000000000000000000b256456900000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000b8a3be6600000000000000000000000000000000000000000000000000000000b971302a00000000000000000000000000000000000000000000000000000000bc2be1be00000000000000000000000000000000000000000000000000000000c156a11d00000000000000000000000000000000000000000000000000000000c87b56dd00000000000000000000000000000000000000000000000000000000d4dbd20b00000000000000000000000000000000000000000000000000000000d511609f00000000000000000000000000000000000000000000000000000000d975dfed00000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000ea5ead1900000000000000000000000000000000000000000000000000000000eac8f5b800000000000000000000000000000000000000000000000000000000f590c17600000000000000000000000000000000000000000000000000000000f851a4400000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000ff0000000000000000000000000000000000000000000000000000000000000000ff00000000000000000000000000000000000000004a5541ef00000000000000000000000000000000000000000000000000000000b34359d3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000010000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff020000000000000000000000000000000000002000000000000000000000000040b88e5c41c5a97ffb7b6ef88a0a2d505aa0c634cf8a0275cb236ea7dd87ed4df8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce792b9102b0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000861f979c00000000000000000000000000000000000000000000000000000000a1fb2bbc00000000000000000000000000000000000000000000000000000000d2aabcd9000000000000000000000000000000000000000000000000000000007fbf716800000000000000000000000000000000000000000000000000000000171cfce00000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9dc6375000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000216caf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004400000000000000000000000064283d7b000000000000000000000000000000000000000000000000000000007e2732890000000000000000000000000000000000000000000000000000000064a0ae9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffff000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132000000000000000000000000000000000000000000000000fffffffffffffeff020000000000000000000000000000000000002000000080000000000000000017307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c315b08ba180000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000fe19f19f000000000000000000000000000000000000000000000000000000004595a35e00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000002000000000000000000000000000000000000600000000000000000000000005edb27d6c1a327513b90a792050debf074b7194444885e3144d4decc5caaaa506a5788f800000000000000000000000000000000000000000000000000000000e71b71cc000000000000000000000000000000000000000000000000000000000eb069207093cd3e51cd1370d2d369770057fbe29947e577e5fb428c6c6fc78fc6cce6a4000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000040000000800000000000000000a2548bd4b805e907c1558a47b5858324fe8bb4a2e1ddfca647eecbf65610eebc02000000000000000000000000000000000000400000000000000000000000006bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c89c62b6400000000000000000000000000000000000000000000000000000000aec93440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef817cd639000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8301ffc9a700000000000000000000000000000000000000000000000000000000f8ee98d300000000000000000000000000000000000000000000000000000000b4378d4e289cb3f40f4f75a99c9cafa76e3df1c4dc31309babc23dc91bd728017fb843ea000000000000000000000000000000000000000000000000000000005a2b2d8300000000000000000000000000000000000000000000000000000000a9fbf51f000000000000000000000000000000000000000000000000000000008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925000000000000000000000000000000000000000000000000016345785d8a0000490649060000000000000000000000000000000000000000000000000000000080ac58cd000000000000000000000000000000000000000000000000000000005b5e139f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000fffffffffffffe800da9b01300000000000000000000000000000000000000000000000000000000177e802f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa0150b7a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000063a0577800000000000000000000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32ea1c0d6e5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc0000000000000000000000000000000000000000000000000016345785d8a00014fea5c1a00000000000000000000000000000000000000000000000000000000b39831ea000000000000000000000000000000000000000000000000000000009fee2691000000000000000000000000000000000000000000000000000000005057f08400000000000000000000000000000000000000000000000000000000210aec0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffebf00000000000000ffffffffff00000000000000000000000000000000000000000000ffffffffff000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000073c6ac6e00000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000014000000000000000000000000044cb432df42caa86b7ec73644ab8aec922bc44c71c98fc330addc75b88adbc7cd572dbcb000000000000000000000000000000000000000000000000000000006095d3bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff8023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff60accb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106695173648d000000000000000000000000000000000000000000000000000000005274afe7000000000000000000000000000000000000000000000000000000009996b315000000000000000000000000000000000000000000000000000000001425ea420000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000fffffffffffffffffffffffffffffffe02000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ec6bc9e731dc2e332d6ce98248156b9f459c18102c92bc545310c40088132624
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d427d37b5f6d33f7d42c4125979361e011ffbfd9000000000000000000000000ac2e42b520364940c90ce164412ca9ba212d014b
-----Decoded View---------------
Arg [0] : initialAdmin (address): 0xD427d37B5F6d33f7D42C4125979361E011FFbfD9
Arg [1] : initialNFTDescriptor (address): 0xAc2E42b520364940c90Ce164412Ca9BA212d014B
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d427d37b5f6d33f7d42c4125979361e011ffbfd9
Arg [1] : 000000000000000000000000ac2e42b520364940c90ce164412ca9ba212d014b
[ 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.